跳到正文

容易混淆的问题 ​

这一讲的坑大多不是「不会用」,而是把两个层次混成了一个:按键与动作、编辑器与语言服务、会话与进程、本地与远端。

按键与动作 ​

Normal 模式的 x 删字符,Insert 模式的 x 输入字母 x,Visual 模式的 x 删选区。看到「按 x 没反应」先看左下角的模式,多半是停在 Visual 里。

写法作用范围典型场景
dw光标到下一个词首删半个标识符
dd整行删一行
D光标到行尾删行尾注释
ciw当前词改变量名
ci(括号内部换函数实参
da'单引号字符串含引号删字符串字面量

dw 删到下一个词首,dd 删整行,行尾空格的处理不同;改一整行用 cc 或 S,别用 dw 拼。

ciw 改光标所在的词,ci( 改最近一对括号里的内容。光标在参数中间时用前者,要换整个参数列表用后者,ci( 并不要求光标停在括号上。

工具分工 ​

装了语言服务器还补全错,九成是它没看见你的环境。Python 指向了系统解释器,依赖不在搜索路径里,导入全红;C/C++ 缺 compile_commands.json,跳转随机失效。

工具管什么出问题的信号
格式化排版缩进、引号风格不一致
linter可疑写法未使用变量、空的 except
类型检查类型不匹配参数类型对不上

三者可以都跑,但顺序有讲究:先格式化再 lint,反了会得到「改完又不合规」。CI 里跑的应该是同一条命令,别在编辑器里用一套规则、在流水线里用另一套。

补全、行内对话、agent 的权限依次放大。补全只能加字,行内对话能改选中块,agent 能写文件跑命令;判断该用哪个,看这次改动要不要留回滚点。

会话与配置 ​

<C-b> d 是分离,进程继续跑;关掉终端窗口是客户端消失,session 同样还在;只有在 session 里 exit 或 tmux kill-session 才真的结束它。

改了 .zshrc 没生效,通常是没 source,或者改错了文件:登录 shell 读 .zprofile,交互式非登录才读 .zshrc。echo $0 输出带前导 - 就说明当前是登录 shell。

  • 前缀可能被改过:tmux show -g prefix 查
  • 嵌套 tmux 里要连按两次前缀
  • 按键表可以用 tmux list-keys 全文搜
bash
tmux show -g prefix
tmux list-keys | grep -i prefix

本地与远端 ​

远端开发时文件在远端,终端在远端,语言服务器在远端,只有画面在本地。所以本地 pip install 不会让远端补全变好,「我本地能跑」也不构成证据。

判断方法很直接:在集成终端里 pwd、hostname、which python,三个输出立刻告诉你站在哪台机器上。

  • 本地改的文件没同步:确认打开的是远端窗口,不是本地副本
  • 远端扩展列表是空的:扩展装在远端,不是本地
  • 端口访问不到:检查转发规则,而不是防火墙