[翻译]
" finding empty lines 查找空行
/^\n\{3} : find 3 empty lines
查找 3 行空行
[注解]
:help /\n
这个正则表达式匹配三个连续的空行,也就是在行首位置有3个连续的换行符。
其中“\n”匹配换行符。
[翻译]
" using rexexp memory in a search
" 在查找中使用正则表达式存储
/\(fred\).*\(joe\).*\2.*\1
[注解]
:help /\1
:help /\2
在这个正则式中,“\1”代表与第一个“\( \)”间的子式的相同的字符串,“\2”为第2个,“\3”为第3个,以此类推,一直到“\9”。
所以对这个例子来说,它等同于“fred.*joe.*joe.*fred”。
但是,正则表达式“\([abc]\{3}\).*\1”却并不等同于“[abc]\{3}.*[abc]\{3}”。
因为“\1”代表第一个“\( \)”所匹配的内容,如果第一个“\( \)”匹配了“abc”,那么“\1”就代表“abc”;如果第一个“\( \)”匹配了“abb”,那么“\1”就代表“abb”。
显然正则式“[abc]\{3}.*[abc]\{3}”并不是这个含义。
[翻译]
" Repeating the Regexp (rather than what the Regexp finds)
" 重复正则表达式(不管这个正则表达式查找什么)
/^\([^,]*,\)\{8}
[注解]
这个正则式是把“\( \)”间的元素重复8次,即相当于查找“^([^,]*,([^,]*,([^,]*,([^,]*,([^,]*,([^,]*,([^,]*,([^,]*,”。
其中“([^,]*,”表示任意个非“,”的字符,后面紧跟着一个“,”。
[翻译]
"visual searching
" 可视模式下的查找
:vmap // y/
查找被高亮显示的文本
:vmap
高亮文本包含特殊字符
[注解]
:help v
这两个键映射用于在可视模式下查找被高亮显示的文本,如果高亮文本中包含特殊字符,需要使用第两种格式的键映射。
(使用二者任一)映射后,当你使用v或V选中一段文本后,再按“//”就可以查找这段文本。
以第二个映射为例进行讲解:
:help vmap
vmap 定义一个virsual的键映射
:help map-
:help y
y 拷贝选中的内容到无名寄存器
/ 开始搜索
:help c_CTRL-R_=
:help escape()
escape() 把参数1中所包含的特殊字符(由参数2指定)前加转义符\
:help registers
:help expr-register
@" 代表无名寄存器中的内容
'\\/.*$^~[]' 对这些特殊字符进行转义
:help key-notation
[参考文档]
1. http://www.rayninfo.co.uk/vimtips.html
2. http://groups.google.com/group/Vim-cn/msg/f72fba0645955101?
3. VIM帮助文件
4. http://vimcdoc.sourceforge.net/
[尾记]
本文可以自由应用于非商业用途。转载请注明出处。
原文链接:http://blog.csdn.net/easwy