常用模式切换
Vim 启动后默认进入命令模式,想输入内容得先按 i 进入插入模式。这时候就跟普通编辑器一样可以打字了。想保存或执行其他操作,就得先按 Esc 回到命令模式。很多人刚用 Vim 总是狂按 i 又不知道怎么退出,其实只要记得 Esc 就能回来就行。
从命令模式按 : 进入末行模式,可以保存、搜索、替换等。比如输入 :wq 回车就是保存退出,:q! 是强制不保存退出。这些组合得记熟,不然卡在界面出不去挺尴尬的。
光标移动快捷键
在命令模式下,h、j、k、l 分别对应左、下、上、右移动光标。虽然看起来反直觉,但把手放 home 键位上就会发现这四个键刚好对应方向,不用挪手。
想快速跳转,可以用以下组合:
- gg 到文件开头
- G 到文件末尾
- nG 跳到第 n 行(比如 10G 就是第 10 行)
- 0 移动到行首
- $ 移动到行尾
- Ctrl + f 向下翻页
- Ctrl + b 向上翻页
文本编辑操作
删除是 d 开头。dd 删除整行,3dd 删除三行。d$ 删除从光标到行尾的内容。想撤销就按 u,误删了马上 u 就能回来。重做是 Ctrl + r,类似撤销的反向操作。
复制粘贴用 y 和 p。yy 复制当前行,y$ 从光标复制到行尾,p 在光标后粘贴,P 在前面粘贴。比如想复制一段代码,光标放到那行按 yy 再跳到目标位置按 p 就行。
替换内容:按 r 接一个字符,可以替换光标下的那个字母。比如光标在 a 上,按 r b 就变成 b。批量替换用末行命令,比如 :%s/old/new/g 把全文的 old 换成 new。
查找与替换
在命令模式下按 / 输入要查的词,回车开始搜索。比如 /printf 查找下一个 printf。按 n 跳下一个,N 跳上一个。? 也可以搜索,只是方向相反。
替换操作常在配置文件里用。比如改 IP 地址,:%s/192.168.1.1/10.0.0.1/g 直接全替换。如果想确认每一处,加 c 参数::%s/foo/bar/gc,每处都会问你是否替换。
:w 保存文件
:q 退出
:wq 保存并退出
:q! 强制退出不保存
:w filename 另存为 filename
:%s/old/new/g 全文替换 old 为 new窗口与分屏操作
写代码时经常要同时看两个文件。在命令模式下用 :sp 文件名 水平分屏,:vsp 垂直分屏。Ctrl + w 再按方向键可以在屏之间切换。
比如你在改 main.c,想参考一下 config.h,直接 :sp config.h 就能在上面开个新窗口。两边来回切,效率比来回打开文件高多了。
实用技巧组合
有些组合用熟了特别顺手。比如 ci",意思是修改引号内的内容。光标在引号内按这个,引号里的文字直接被清空进入插入模式。类似还有 di( 删除括号内内容,而不影响括号本身。
再比如 . 键,表示重复上一次编辑操作。如果你刚删了一行,按一下 . 就再删一行。刚插入了个分号,. 就再插一个,省得重复操作。
临时切到终端也不用退出 Vim。按 Ctrl + z 暂停 Vim 回到终端,事情办完再输入 fg 回来。或者用 :!command 直接执行命令,比如 :!ls 查看当前目录文件。