[翻譯]
" finding empty lines 尋找空行
/^/n/{3} : find 3 empty lines
尋找 3 行空行
[註解]
:help //n
這個Regex匹配三個連續的空行,也就是在行首位置有3個連續的分行符號。
其中“/n”匹配分行符號。
[翻譯]
" using rexexp memory in a search
" 在尋找中使用Regex儲存
//(fred/).*/(joe/).*/2.*/1
[註解]
:help //1
:help //2
在這個正則式中,“/1”代表與第一個“/( /)”間的子式的相同的字串,“/2”為第2個,“/3”為第3個,以此類推,一直到“/9”。
所以對這個例子來說,它等同於“fred.*joe.*joe.*fred”。
但是,Regex“/([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)
" 重複Regex(不管這個Regex尋找什麼)
/^/([^,]*,/)/{8}
[註解]
這個正則式是把“/( /)”間的元素重複8次,即相當於尋找“^([^,]*,([^,]*,([^,]*,([^,]*,([^,]*,([^,]*,([^,]*,([^,]*,”。
其中“([^,]*,”表示任意個非“,”的字元,後面緊跟著一個“,”。
[翻譯]
"visual searching
" 可視模式下的尋找
:vmap // y/<C-R>"<CR> : search for visually highlighted text
尋找被高亮顯示的文本
:vmap <silent> // y/<C-R>=escape(@", '///.*$^~[]')<CR><CR> : with spec chars
高亮文本包含特殊字元
[註解]
:help v
這兩個鍵映射用於在可視模式下尋找被高亮顯示的文本,如果高亮文本中包含特殊字元,需要使用第兩種格式的鍵映射。
(使用二者任一)映射後,當你使用v或V選中一段文本後,再按“//”就可以尋找這段文本。
以第二個映射為例進行講解:
:help vmap
vmap 定義一個virsual的鍵映射
:help map-<silent>
<silent> 執行此映射時不回顯
:help y
y 拷貝選中的內容到無名寄存器
/ 開始搜尋
:help c_CTRL-R_=
<C-R>= 搜尋的內容來源於一個運算式的結果
:help escape()
escape() 把參數1中所包含的特殊字元(由參數2指定)前加轉義符/
:help registers
:help expr-register
@" 代表無名寄存器中的內容
'///.*$^~[]' 對這些特殊字元進行轉義
:help key-notation
<CR> 斷行符號
[參考文檔]
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