vim 精確匹配查找單詞【轉】


刪除文件中所有的空行
:g/^\s*$/d

去掉所有的行尾空格:
:%s/\s\+$//

整個文件特定字符串的替換
:%s/old_word/new_word/g

刪除從當前行開始到最后一行的所有內容:
.,$d


去掉所有的“//”注釋:
:%s!\s*//.*!!
(首先可以注意到,這兒分隔符改用了“!”,原因是在模式或字符串部 分使用了“/”字符,不換用其他分隔符的話就得在每次使用“/”字符本身時寫成“\/”,上面的命令得寫成“:%s/\s*\/\/.*//”,可讀性較 低。命令本身倒是相當簡單,用過正則表達式的人估計都知道“.”匹配表示除換行符之外的任何字符吧。 )

去掉所有的“/* */”注釋:
:%s!\s*/\*\_.\{-}\*/\s*! !g
(這個略有點復雜了,用到了幾個不太常用 的 Vim 正則表達式特性。“\_.”匹配包含換行在內的所有字符;“\{-}”表示前一個字符可出現零次或多次,但在整個正則表達式可以匹配成功的前提下,匹配的 字符數越少越好;標志“g”表示一行里可以匹配和替換多次。替換的結果是個空格的目的是保證像“int/* space not necessary around comments */main()”這樣的表達式在替換之后仍然是合法)

{}()[]匹配: %

精確匹配查找單詞
如果你輸入 "/the",你也可能找到 "there"。要找到以 "the" 結尾的單詞,可以用:
/the\> "\>" 是一個特殊的記號,表示只匹配單詞末尾。類似地,"\<" 只匹配單詞的開頭。
這樣,要匹配一個完整的單詞 "the",只需:/\<the\>


特殊的“寄存器”:“=”。
在插入模式或命令模式中,鍵入“Ctrl-R=”,Vim 會提示你輸入一個表達式,普通的整數運算在此完全有效。


Vim 支持單詞的自動完成。
Ctrl+p
比如,你前面使用了一個很長的變量名,叫 aLongVariable,下面你在輸入時,就不用完整鍵入了。很可能,你只需要鍵入“aL”,然后按下“Ctrl-P”(向前搜索可匹配的單詞並完 成)就可以得到完整的變量名(沒有得到想要的結果的話,多按幾下“Ctrl-P”;或者前面多輸入幾個字符,如“aLongV”)。類似的命令還有 “Ctrl-N”(向后搜索可匹配的單詞並完成)、“Ctrl-X Ctrl-L”(搜索可匹配的行並完成)、“Ctrl-X Ctrl-F”(搜索可匹配的文件名並完成)等,具體可參看“:help ins-completion”。


Make 和 grep

Make [17] 和grep [18] 應當算是 Unix 世界里無人不曉的基本工具了吧。很自然的,Vim 對它們有着特殊的支持。該支持主要通過訪問一個特殊的快速修訂窗口(quickfix window)來實現。直接在 Vim 的命令模式里輸入相應的 make 或 grep 命令(如“:grep foo *.c”)即可將命令的執行結果放入該窗口,同時根據返回的結果跳轉到第一個錯誤(make 的情況;在使用 grep 時是匹配成功之處)。以下是常用的“快速修訂”命令:

:cn(顯示下一個錯誤)

:cp(顯示上一個錯誤)

:cl(列出所有的錯誤及其編號)

:cc(跳轉到指定編號的錯誤)

:copen(打開快速修訂窗口,在其中顯示所有錯誤,可在錯誤上雙擊鼠標或按回車鍵跳轉至該錯誤


執行外部命令
:!命令

 

guw(光標下的單詞變為小寫)

gUw(光標下的單詞變為大寫)

 

Vim 在搜索和替換時會對匹配成功的文本進行加亮,在已經完成搜索和替換任務后,這種加亮有時反而會妨礙顯示。
Vim 專門提供一個命令取消這種加亮(直到用戶再一次使用搜索或替換命令):“:nohlsearch”。
建議用戶創建一個鍵盤映射(key mapping)加入到 .vimrc 中,如:
nmap <F2> :nohlsearch<CR>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM