vim 搜尋與替換

2022-09-15 11:00:22 字數 2030 閱讀 4200

命令

功能

備註

*向下搜尋游標所在處的詞

#向上搜尋游標所在處的詞

同上[++i

跳轉到游標所在處的變數的宣告

使用tag

[++d

跳轉到游標所在處的巨集的定義

使用tag

ycm定位命令

跳轉到游標所在處的變數的宣告或定義

youcompleteme外掛程式的功能,可以使用以下3個命令,

不過一般是用快捷鍵:

:ycmcompleter gotodeclaration

:ycmcompleter gotodefinition

:ycmcompleter gotodefinitionelsedeclaration

/向下搜尋模式

不僅是簡單的字串,還可以是複雜的正規表示式

?向上搜尋模式

同上/\c

?\c不區分大小寫地搜尋

小寫字母c

/\c/\c

區分大小寫地的搜尋

大寫字母c

:set ic

:set ignorecase

設定為不區分大小寫的搜尋模式

:set noic

:set noignorecase

設定為區分大小寫的搜尋模式

預設為區分大小寫

:vimgrep

在檔案中搜尋模式

比如在當前目錄所有.cpp檔案中搜尋abc:

:vimgrep abc *.cpp

如果想搜尋子目錄,是這樣

:vimgrep abc **/*.cpp

出來的結果在quickfix視窗,用命令:cw撥出

命令

功能

備註

s//[/]

把scope指定的範圍內匹配pattern的所有字串

替換為str,option為可選引數

帶option時,前面要加/

舉例:%s/abc/xyz/gc

將當前檔案中所有abc替換為xyz,並在替換前進行確認

:args

:argdo s//[/]

在檔案中把scope指定的範圍內匹配pattern

的所有字串替換為str,option為可選引數

各引數說明同上。舉例

:args *.txt *.cpp

:argdo %s/hate/love/gc | update

將當前目錄下所有txt和cpp檔案中的hate替換為love,

每次替換前確認;update命令會在檔案有改變時進行

儲存。注意:檔案中替換操作不可恢復,請仔細操作,做好備份

vim很多操作都帶範圍引數,替換命令也不例外。上述命令中的%代表範圍為所有行,另外還有m, n意思是從第m行到第n行。

先複製,到命令列後,+r+" ("是+』按出來的).

場景:想到替換命令:

:%s/\n/;\n/g

結果總是出錯。

後來找到解決方案:

:%s/\n/;\r/g

有人總結的結論:

when searching: \n is newline, \r is cr (carriage return = ctrl-m = ^m)

when replacing: \r is newline, \n is a null byte (0×00).

意思是:

字串查詢時,」\n」 是換行,」\r」 是回車,也就是經常會看到的 ^m(備註-1)。

字串替換時,」\r」 是換行,』\n」 是空字元(0×00)。

更多細節可以參考 

一些在windows上編輯的檔案拷貝到linux上時行尾可能會出現^m,有時希望替換掉,命令如下

:%s/+v +m//g

就是 control 鍵+v,然後再 control 鍵 + m,就變成了 ^m,然後替換為空就可以了。

vim搜尋和替換

進入可視模式 pattern 從游標開始處向檔案尾搜尋pattern pattern 從游標開始處向檔案首搜尋pattern n 在同一方向重複上一次搜尋命令 n 在反方向上重複上一次搜尋命令 s p1 p2 g 將當前行中所有p1均用p2替代 n1,n2s p1 p2 g 將第n1至n2行中所有p...

VIM中的搜尋和替換

vim是被譽為非常高效的文字編輯軟體。但是掌握並高效的使用是件有難度的事情。在vim中進行快速的查詢和替換是提高vim使用效率的重要方法。下面是我在閱讀vim使用者手冊時整理的一些資料 行內搜尋。f命令可以進行行內搜尋。輸入fx可以找到下乙個x字元。f命令可以在反方向進行行內搜尋,輸入fx可以找到上...

Vim高階技術 搜尋和替換

搜尋,分為二個部分 乙個是搜尋命令,另乙個是模式匹配 搜尋命令就是各個編輯器所支援的啟動搜尋的方式,比如windows的各種編輯器都是以對話方塊的形式。模式就是在對話方塊中輸入的要匹配的字串集。本身字串的匹配功能有限,所以就有了專門用於模式匹配的正規表示式,它描述了模式匹配的一些規則,使用這些規則可...