日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

VIM 正则表达式搜索字符串

發布時間:2023/12/9 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VIM 正则表达式搜索字符串 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

From:?http://blog.csdn.net/fengxinze/article/details/6870106

? ? ??在插入模式下,為了減少重復的擊鍵輸入,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之間的數字

?? ?\] ? 轉義字符 ]?



總結

以上是生活随笔為你收集整理的VIM 正则表达式搜索字符串的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。