-
利用vim转换文件编码
set fileencoding=utf-8 -
set list就是 Tab 的地方会以^I显示,而行尾之EOL會显示成$。可以让你知道 Tab 在哪里,换行是不是真的。 -
块插入
首先
ctrl+v进入块选择模式,然后shift+i进行插入,插入完成后按两次<ESC>退出。 -
选中上次使用的区域
gv -
缩进
gg=G;使用外部程序(gq采用astyle)格式化gggqG -
将光标所在行切换到窗口中间
zz -
翻页
ctrl+f/b -
删除指定行
删除包含特定字符的行
g/pattern/d删除不包含指定字符的行v/pattern/dorg!/pattern/d -
切换显示TAB键以及空格等
set list! -
使用宏
按
qa开始录制宏,宏的名字为a;然后进行中间的操作;再按q宏录制结束。 按@a,执行一次宏,或按下6@a就执行了6次等。 -
生成帮助索引
helptags $VIMRUNTIME/doc -
查看某快捷键是否被定义过,只需要在命令行中输入定义该快捷键的命令,而不输入被定义的命令即可。还可只输入快捷键的前面一部分,就会显示所有类似快捷键的被定义命令。
-
正则表达式:vim的正则表达式不是很清楚使用的是哪个版本的实现,有些语法上有点不一样,
:help pattern即可查询到一些细节。比如非贪婪匹配用\{-}。 -
使用命令
:qa!可以强制退出所有文件,:xa可以保存所有文件并退出。 -
多行匹配,使用
\_.可匹配换行,可结合非贪婪使用,如\_.\{-} -
在每一行前面添加一个序号:
let i=1 | g /^/ s//\=i.". "/ | let i+=1 -
批量操作文件
VIM 中实现对文件的批量是通过同时打开多个文件实现的,即对 args 的操作。有以下的方式:
vim a.txt b.txt c.txt :args *.txt之后,可以通过
:ls或:args或:buffers来查看当前的 buffers 列表。 现在,要同时处理这些 buffers 中的各个文件,使用argdo就可以了。:argdo %s/teh/the/ge | updateargdo 后面跟命令就可以了,它的作用就是把后面的命令应用到 arg list 中的各个文件上。 e 这个 flag 是表示忽略错误,遇到意外时不停止处理过程。 update 这个命令是当文件发化变化时保存文件,就和 write 一样。
-
匹配任意中文字符
[^\x00-\xff], 匹配非中文字符[\x00-\xff] -
阅读源代码时可以用
<leader>gf打开光标所在处的文件,如被包含的头文件,意为’go to file’.使用前需要设置path变量set path+=/path/to/include -
使用
:verbose map <所要查找的快捷键>可以查看快捷键的具体命令及定义位置