Best of VIM Tips(譯註) – 連載4 尋找(c)

來源:互聯網
上載者:User

[翻譯]

" 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 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.