本文将《Vim实用技巧》中提到的部分命令记录下来(也有一些自己的补充),以备后用
- 技巧1
-
.
:重复上次的修改。在插入模式则是指从插入命令开始到Esc退出为止
-
- 技巧3、4
-
f{char}
:查找光标右边的指定字符 -
;
:重复上次的查找 -
,
:回退上次的查找 -
F{char}
:查找光标左边的指定字符
-
- 技巧5
-
cw
:删除光标开始到下一个单词前的位置,并进入插入模式 -
*
:查找光标所在单词下一次出现的位置,并使所有匹配项高亮 -
#
:查找光标所在单词上一次出现的位置,并使所有匹配项高亮
-
- 技巧9
-
aw
:文本对象,代表一个单词 -
ap
:文本对象,代表一段文字 -
daw
:删除光标所在单词
-
- 技巧10
-
num<C-a>
:找到光标右边第一个数字,并加上num(Windows下可能会存在快捷键冲突,导致其他结果) -
num<C-x>
:找到光标右边第一个数字,并减去num
-
- 技巧12
-
dl
:删除光标所在字符 -
g~{motion}
:反转大小写 -
gu{motion}
:转换成小写 -
gU{motion}
:转换成大写 -
={motion}
:自动缩进 -
c{motion}
:修改(删除并进入插入模式) -
gc{motion}
:注释(需安装commentary.vim插件) -
ae
:文件对象,代表全文(需安装textobj-entire插件)
-
- 技巧13(插入模式下使用)
-
<C-h>
:删除前一个字符(等同退格键) -
<C-w>
:删除前一个单词 -
<C-u>
:删除至行首
-
- 技巧14(模式切换)
-
<Esc>
:切换到普通模式 -
<C-[>
:切换到普通模式 -
<C-o>
:切换到插入-普通模式(在插入模式按下,切换到普通模式,执行一条命令后回到插入模式) -
zz
:让光标所在行居中(小写z) -
ZZ
:保存并退出vim(大写Z)
-
- 技巧15、16(在插入模式下使用)
-
<C-r>{register}
:插入指定寄存器(面向字符的寄存器)中的内容,例如<C-r>0
-
<C-r><C-p>{register}
:按原义插入寄存器内的文本,并修正不必要的缩进 -
<C-r>=表达式<CR>
:使用表达式寄存器计算表达式,并将结果插入文本中
-
- 技巧17、18(在插入模式下使用)
-
<C-v>{123}
:插入以十进制编码(3位数)的字符 -
<C-v>u{1234}
:插入以十六进制编码(4位数)的字符 -
<C-v>{nondigit}
:以原义插入非数字字符(u除外) -
<C-k>{char1}{char2}
:插入以二合字母{char1}{char2}
表示的字符
-
- 技巧19
-
R
:由普通模式进入替换模式(用其他字符替换tab字符时,tab字符的长度会被一个字符长度代替,导致该行字符长度变短,其他类似tab的字符同理) -
gR
:由普通模式进入虚拟替换模式(替换时遇到tab字符,保持该行原有长度,其他类似tab的字符同理) -
r{char}
:由普通模式进入替换模式,替换一个字符后回到普通模式 -
gr{char}
:由普通模式进入虚拟替换模式,替换一个字符后回到普通模式
-
- 技巧20
-
<C-g>
:在可视模式和选择模式之间切换。如果处于选择模式,输入的字符会替换所选内容并切换到插入模式
-
- 技巧21(普通模式或可视模式下)
-
v
:激活面向字符的可视模式 -
V
:激活面向行的可视模式 -
<C-v>
:激活面向列块的可视模式 -
gv
:重选上次的高亮选区 -
o
:切换高亮选区的活动端(只在可视模式下)
-
- 技巧28
- 命令行模式下的位置标记
-
1
:文件的第一行 -
$
:文件的最后一行 -
0
:虚拟行,位于第一行上方 -
.
:光标所在行 -
'<
:高亮选区的起始行 -
>'
:高亮选区的结束行 -
%
:整个文件 -
/str/
:匹配字符串str的行
-
-
:{start},{end}
:指定范围 -
:/<html>/+1,/<\/html>/-1p
:调整指定的范围大小(其中p(print)代表打印操作)
- 命令行模式下的位置标记
- 技巧29
-
:[range]copy{address}
:把range范围的内容复制到address指定的行的下方,copy
可简写成co
或t
(copy to的含义) -
:[range]move{address}
:把range范围的内容移动到address指定的行的下方,move
可简写成m
-
- 技巧30
-
:%normal 普通模式下的命令序列
:在指定范围内执行普通模式命令序列。例如::%normal A;
在所有行后面插入分号,:'<,>'normal .
对高亮选区的所有行,执行普通模式下的.
命令
-
- 技巧31
-
@:
:重复上次的Ex命令(Ex命令是指在命令行模式下执行的命令)
-
- 技巧32、33(命令行模式下)
-
<Tab>
:补全Ex命令,如果有多个候选项,可以连续按<Tab>
进行遍历或<S-Tab>
反向遍历,再或者<C-d>
查看候选补全列表 -
<C-r><C-w>
:把光标下的单词插入命令行
-
- 技巧34
-
q/
:打开查找命令历史的命令行窗口 -
q:
:打开Ex命令历史的命令行窗口 -
<C-f>
:从命令行模式切换到命令行窗口
-
- 技巧35(命令行模式下)
-
:!{cmd}
:在shell中运行cmd命令 -
:shell
:切换到一个交互的shell中,在shell中输入exit
命令可以返回vim -
:read !{cmd}
:在shell中执行cmd命令,并把其标准输出的内容插入到光标的下方 -
:[range]write !{cmd}
:在shell中执行cmd命令,将缓冲区中指定范围的内容作为其标准输入。(如果没有给出范围,则就是指所有行) -
:[range]!{filter}
:使用shell命令filter,过滤指定的范围的内容,即将指定范围的内容作为filter命令的输入,并用输出替换原来的内容。 -
!{motion}
:会将指定范围预置在命令行中,后面还紧跟一个!
(普通模式下执行)
-
- 技巧36(命令行模式下)
-
:source vim脚本
:执行vim脚本,该脚本是一系列的Ex命令构成,每条命令一行,不需要前缀:
,脚本文件的扩展名为.vim。 -
:args
:列出vim参数列表的内容 -
:argdo {Ex命令}
:对参数列表的每个文件执行该Ex命令
-