1、匹配单词,如要匹配word1,word2
\b(word1|word2)\b
2、在vim中,
\< beginning of a word |/zero-width|
\> end of a word |/zero-wid
3、非贪婪匹配
提到使用“\{-}”来代替“*”
4、替换与当前行号
:%s/^/\=line('.').' '
这是也是简单灵活的一种解法。好吧,也许大家第一个想到的解法不是使用line()函数。
" 为所有行加上行号
:let i=1
:g/^/ s//\=i . ' '/ |let i=i+1
注意:\=的操作不能与其它替换混在一起
5、弹出历史命令窗口
有时候在vim下边会出来另一个窗口,因为在我想退出编辑器时把“:q”敲成了“q:”。号称这个就是vim的命令历史窗口。要退出这个窗口也很简单,直接按回车或者输入“:q”都可以。
6 批量文件查找内容 vimgrep
比如在当前目录下查找带有“abc”字符的后缀为txt的文件, 不包括子目录
vimgrep /abc/ ./*.txt
如果包含子目录,命令如下:
vimgrep /abc/ ./**/*.txt
vimgrep 支持正则, 所以注意正则的关键符号, 必要的时候需要转义,转义符'\'。
7.批量文件替换
前提熟悉vim的替换命令
%s/abc/123/g
将当前文件所有匹配的abc字符替换成123,如果没有"g"选项,则替换当前位置。
熟悉替换命令行后,接下来说批量替换的步骤:
(1)打开所有需要操作的文件
args ./**/*.txt
(2)对所有打开的文件执行替换并更新到文件
argdo %s/abc/123/g | update
http://blog.sina.com.cn/s/blog_62d79a0b0100u5g8.html
8、:help :w
9、
在替换命令 s/// 中可以使用函数表达式来书写替换内容,格式为
:s/替换字符串/\=函数式
在函数式中可以使用 submatch(1)、submatch(2) 等来引用 \1、\2 等的内容,而submatch(0)可以引用匹配的整个内容。
使用例
:%s/\<id\>/\=line(".") " 将各行的 id 字符串替换为行号
:%s/^\<\w\+\>/\=(line(".")-10) .".". submatch(1) " 将每行开头的单词替换为 (行号-10).单词 的格式,
" 如第11行的 word 替换成 1. word