-
利用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/d
org!/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 | update
argdo 后面跟命令就可以了,它的作用就是把后面的命令应用到 arg list 中的各个文件上。 e 这个 flag 是表示忽略错误,遇到意外时不停止处理过程。 update 这个命令是当文件发化变化时保存文件,就和 write 一样。
-
匹配任意中文字符
[^\x00-\xff]
, 匹配非中文字符[\x00-\xff]
-
阅读源代码时可以用
<leader>gf
打开光标所在处的文件,如被包含的头文件,意为’go to file’.使用前需要设置path变量set path+=/path/to/include
-
使用
:verbose map <所要查找的快捷键>
可以查看快捷键的具体命令及定义位置