=Start=
在Vim中删除空行
:g/^$/d :g/^\s\+/d #需要对'+'进行转义 :g/^\s*$/d #'*'可以直接用,不需要转义(在Vim默认的magic模式下,只有「. * ^ $」不需要转义,其它的都需要)
将连续的空行删除至单空行
:g/^$/,/./-j #Reduce multiple blank lines into a single blank line
删除行尾的多余空格
:%s/\s\+$//g
查找匹配字符串出现的次数
在当前文件中查找匹配字符串出现的次数: :%s/字符串/&/gn 最后的标志符n,代表只报告匹配的个数,而不进行实际的替换。 如何查找在当前行中该字符串出现的次数呢? :s/字符串/&/gn 如何在m和n行之间查找 字符串 出现的次数呢? :m,ns/字符串/&/gn
Vim中正则表达式的元字符
^ $ . #Matches any single character, but not an end-of-line * #Matches 0 or more of the preceding characters, ranges or metacharacters .* matches everything including empty line #在Vim默认的magic模式下,只有以上的「. * ^ $」4个元字符不需要转义,其它的都需要 \+ #Matches 1 or more of the preceding characters...(需要进行转义)
Vim中的magic设定
设定方法为:
:set magic ” 设置magic
:set nomagic ” 取消magic
:h magic ” 查看帮助
简单地说,magic就是设置哪些元字符要加反斜杠哪些不用加的。例如:
magic(\m):除了 $ . * ^ 之外其他元字符都要加反斜杠。
nomagic(\M):除了 $ ^ 之外其他元字符都要加反斜杠。
这个设置也可以在正则表达式中通过 \m \M 开关临时切换。 \m 后面的正则表达式会按照 magic 处理,\M 后面的正则表达式按照 nomagic 处理, 而忽略实际的magic设置。例如:
/\m.* # 查找任意字符串
/\M.* # 查找字符串 .* (点号后面跟个星号)
另外还有更强大的 \v 和 \V。 \v(即 very magic 之意):任何元字符都不用加反斜杠 \V(即 very nomagic 之意):任何元字符都必须加反斜杠。例如:
/\v(a.c){3}$ # 查找行尾的abcaccadc
/\m(a.c){3}$ # 查找行尾的(abc){3}
/\M(a.c){3}$ # 查找行尾的(a.c){3}
/\V(a.c){3}$ # 查找任意位置的(a.c){3}$
默认设置是 magic,vim也推荐大家都使用magic的设置,在有特殊需要时,直接通过 \v\m\M\V 临时修改设置即可。Vim的帮助文件非常有用,关于正则表达式可以参考以下的内容:
:h pattern
:h magic
:h perl-patterns
参考链接:
- http://vimregex.com/
- http://www.linuxdiyf.com/linux/1369.html
- http://vimdoc.sourceforge.net/htmldoc/motion.html#object-select
- http://liuzhijun.iteye.com/category/270228
- http://vimdoc.sourceforge.net/htmldoc/pattern.html#regexp #Vim中的正则表达式
- http://vimdoc.sourceforge.net/htmldoc/cmdline.html #Vim中的命令
更多的参考链接:
- http://linux.cn/article-4669-1.html
- http://xmodulo.com/useful-vim-commands.html
- http://vim.wikia.com/wiki/Vim_Tips_Wiki
- http://stackoverflow.com/questions/3032030/how-does-g-j-reduce-multiple-blank-lines-to-a-single-blank-work-in-vi
- http://vim.wikia.com/wiki/Remove_unwanted_empty_lines
- http://unix.stackexchange.com/questions/72739/how-to-remove-multiple-blank-lines-from-a-file
- http://stackoverflow.com/questions/10760326/merge-multiple-lines-two-blocks-in-vim
=EOF=
《“Vim中的正则表达式”》 有 1 条评论
谈谈 Vim 的几种文件备份
http://www.evilclay.com/2017/03/31/%E8%B0%88%E8%B0%88-Vim-%E7%9A%84%E5%87%A0%E7%A7%8D%E6%96%87%E4%BB%B6%E5%A4%87%E4%BB%BD/
http://blog.163.com/yysfire@126/blog/static/1831747201011443159904/
`
1. Vim 的交换文件 .filename.swp
2. Vim 的备份文件 filename~
3. undo 备份文件 .filename.un.~
`