• VIM 正則表達式搜索字符串

    -1
    .NET Vim C/C++ 正則表達式 vim 16569 次瀏覽

    在插入模式下,為了減少重復的擊鍵輸入,VIM 提供了若干快捷鍵,當你要輸入某個上下文曾經輸入過的字符串時,你只要輸入開頭若干字符,使用快捷鍵,VIM 將搜索上下文,找到匹配字符串,把剩下的字符補全,你就不必敲了。這樣,編程序時你起多長的變量名都沒關系了,:-) 而且還可以減少輸入錯誤。我認為,插入補全是 VIM 最為突出的一項功能。

    i<C-P>   向上搜索,補全一個詞。例如,上文中出現過 filename 這個詞,當你想再輸入 filename 時,只要按 f<C-P> 即可。假如 VIM 向上搜索,找到以 f 開頭的第一個匹配不是 filename,你可以繼續按 <C-P> 搜索下一個匹配進行補全。當然,如果你想一次 <C-P> 就成功,你可以多輸入幾個字符比如 filen 再按 <C-P> 補全
    i<C-N>   向下搜索,補全一個詞
    i<C-X><C-L>      補全一行。比如你寫過一行 for (int i = 0; i < 100; i++),你想再寫一模一樣的一行,只要輸入 for<C-X><C-L> 即可。如果補全出來的不是你想要的那一行,你可以按 <C-P> 或 <C-N> 選擇上一個或下一個匹配行
    i<C-X><C-F>      在文件系統中搜索,補全一個文件名

    如果按 <C-P> 或 <C-N> 補全一個詞,在當前文件中沒有找到匹配,VIM 將搜索 #include 語句中的文件,而文件的位置將在 path 中搜索。

    搜索字符串用的是正規表達式(Regular expression),其中許多字符都有特殊含義:
    \        取消后面所跟字符的特殊含義。比如 \[vim\] 匹配字符串“[vim]”
    []       匹配其中之一。比如 [vim] 匹配字母“v”、“i”或者“m”,[a-zA-Z] 匹配任意字母
    [^]      匹配非其中之一。比如 [^vim] 匹配除字母“v”、“i”和“m”之外的所有字符
    .        匹配任意字符
    *        匹配前一字符大于等于零遍。比如 vi*m 匹配“vm”、“vim”、“viim”……
    \+       匹配前一字符大于等于一遍。比如 vi\+m 匹配“vim”、“viim”、“viiim”……
    \?       匹配前一字符零遍或者一遍。比如 vi\?m 匹配“vm”或者“vim”
    ^        匹配行首。例如 /^hello 查找出現在行首的單詞 hello
    $        匹配行末。例如 /hello$ 查找出現在行末的單詞 hello
    \(\)     括住某段正規表達式
    \數字    重復匹配前面某段括住的表達式。例如 \(hello\).*\1 匹配一個開始和末尾都是“hello”,中間是任意字符串的字符串

    對于替換字符串,可以用“&”代表整個搜索字符串,或者用“\數字”代表搜索字符串中的某段括住的表達式。

    舉一個復雜的例子,把文中的所有字符串“abc……xyz”替換為“xyz……abc”可以有下列寫法:
    :%s/abc\(.*\)xyz/xyz\1abc/g
    :%s/\(abc\)\(.*\)\(xyz\)/\3\2\1/g
    其它關于正規表達式搜索替換的更詳細準確的說明請看 :help pattern

    例如:在文本中搜索所有包含amount大于0的以[ ] 括住的字符串的行,如 “amount[123]“,  ”amount[200]“ 等:

    首先按 :進入命令 模式,然后輸入下面的串再回車開始查找:/amount\[[1-9]\([0-9]*\)\+\]

    解釋如下:

    /  表示進行串搜索, 其它字符為 正則表達式的內容

    amount  表示匹配串包含amount

    \[  轉義字符,表示匹配左中括號 [

    [1-9]  表示匹配一位1到9之間任何數字

    \(  \)   轉義的左右括號,表示括住某段正則表達式,

    \+  轉義字符+,表示前面一個字符或一個正則串重復1次或多次,所以,\([0-9]*\) 表示 任意個0-9之間的數字

    \]   轉義字符 ]

    文章出處:http://blog.csdn.net/fengxinze/article/details/6870106

    相似問題

    相關經驗

    相關資訊

    相關文檔

  • sesese色