正则表达式
VIM的正则表达式风格似乎是一种特有的风格,与POSIX正则和 PCRE 都不太一样,虽然只是小异,不过我还是常常被这种山寨式的正则搞的晕头转向,好记性不如烂笔头,还是把一些特性记下来吧:
- 非贪婪模式:贪婪模式用’*’,非贪婪模式就用’\{-}’
- 全字匹配:\< 匹配单词词首,\> 匹配单词词尾
- 多行匹配:“\_.”匹配任意单个字符和换行符,这样就可以匹配多行了
应用实例:删除PHP的多行注释——
- 将注释替换成一个空行
:%s/\/\*\_.\{-}\*\///g - 再将空行删除
:g/^\s*$/d - 对于 # 开头的注释行,另行处理
:g/^#/d
使用不同的编码重载文件
有时候vim打开文件,发现有乱码。想换一种编码重新再载入文件,怎么换呢?只要用下面的命令就可以了:
:edit! ++enc=<encoding>
比如:
:edit! ++enc=gb2312
粘贴代码时取消自动缩进
VIM在粘贴代码时会自动缩进,把代码搞得一团糟糕,甚至可能因为某行的一个注释造成后面的代码全部被注释掉,我知道有同学这个时候会用vi去打开文件再粘贴上去(鄙人以前就是这样),其实需要先设置一下
set paste
然后再进入插入模式粘贴,代码就不会被自动缩进。可是敲代码的时候需要自动缩进,又得改回来:
set nopaste
最方便的方法就是在.vimrc中加一句:
set pastetoggle=<F9>
以后在插入模式下,只要按F9键就可以切换自动缩进。