一、单个命令

命令 备注
n 重复,用于搜索,跳转等
N 同上,方向相反
; 重复,用于行内跳转指令 f/t/F/T
, 同上,方向相反
s 替换,==前加%指全文件替换==
:Ex 返回目录树, vim 从目录中进入文件,回到目录时用此命令
R 从光标所在处开始替换,==按Esc键结束==
ctrl+n 单词补全(向下查找)
ctrl+p 单词补全(向上查找)
cw 删除光标开始的一个词,并进入插入模式(改词时使用)
ciw 删除光标处的一个词,并进入插入模式(光标不必在词开头)
yiw 复制光标处的一个词,光标不必在词开头
viw 选中光标处的一个词,光标不必在词开头
e 移动到当前单词的结尾(如果光标不在字符上,则移动到下一单词的结尾)
ge 移动到上一单词的结尾
w 移动到下一单词的开头
b 移动到当前单词的开头(如果光标不在字符上,则移动到上一单词的开头)
[[ 跳转到代码块的开头去(但要求代码块中”=={==”必须独占一行
gD 跳转到局部变量的定义处
‘’ 跳转到光标上次停靠的地方, 是两个’, 而不是一个”

二、组合命令

操作 命令 备注
复制源单词,然后替换目标单词 ye 源单词
vep 目标单词
利用视图模式替换单词

三、其它


全局查找,vim自带匹配工具——vimgrep。

vimgrep两种使用方式,可以正则比配,也可以直接匹配。

正则匹配模式放在**//之间,命令格式::vim [grep][!] /[pattern]/[g][j] {file}**

例子:

1
2
3
4
5
6
7
:vim /function demo/ *.c         在当前目录的.c文件中,搜索function demo
:vim /function demo/ **/*.c 在任意目录的.c文件中,搜索function demo
:vim /function demo/ **/*.{h,c} 在任意目录的.c和.h文件中,搜索function demo
:vim /\cfunction demo/ **/*.c 使用\c,不区分大小写
:vim /\Cfunction demo/ **/*.c 使用\C,区分大小写
:vim /function demo/j *.c 只更新quickfix,不跳转到第一个搜索结果
:vim /function demo/g *.c 一行中若有多个匹配,每个都要单独显示一行

在vim普通模式中:

1
:vim /main/j *.c | copen

以上命令在当前目录下的所有 .c文件中查找 main,其中 copen 是打开 quickfix 列表,也可以是

1
2
:vim /main/j *.c
:cw #或copen

quickfix列表通过 cw或copen打开,ccl(cclose)关闭,cn下一个,cp上一个。

列表通过 Ctrl-w H移动到左侧,Ctrl-w w切换,或者Ctrl-w [hjkl]