Vim高階技術 搜尋和替換

2021-06-09 06:54:34 字數 1599 閱讀 1637

搜尋,分為二個部分:乙個是搜尋命令,另乙個是模式匹配;搜尋命令就是各個編輯器所支援的啟動搜尋的方式,比如windows的各種編輯器都是以對話方塊的形式。模式就是在對話方塊中輸入的要匹配的字串集。本身字串的匹配功能有限,所以就有了專門用於模式匹配的正規表示式,它描述了模式匹配的一些規則,使用這些規則可以讓匹配更加的強大和精準,多數編輯器都支援正規表示式,vim也不例外,先講一下搜尋命令,然後再講對正規表示式的支援。

如前提及,模式匹配在搜尋當中有重要的作用。正規表示式(regular expression)是專門用於描述搜尋中的(pattern)模式的。使用正規表示式來構建pattern可以讓搜尋更加強大和精準。有關正規表示式的詳細內容可以參閱《mastering regular expression》這本書。正規表示式僅是一種規範,但是各種常用的工具和程式語言都對正規表示式有不同程度的支援。正規表示式有二類:一是正常的字元,僅匹配自身,如"that",只能匹配"that";另一類就是具有特殊意義的元字元。不像基本字元,元字元具有特殊的含義,如.(句點)可以匹配任意除換行符外的單個字元。正規表示式就是學習各種元字元的使用。

vim對正規表示式有很好的支援,它的常用元字元有:

通用匹配:

限量符:

操作符:

其他:替換也是編輯器中乙個必不可少的功能,vim對於替換也提供了強大的支援。

:[range]s/pattern/replacement/[options]

把[range]所指的範圍內的pattern替換為replacement

示例:前面的替換方式是以行的方式指定具體的範圍,也可以以另外一種方式指定範圍:

:g/pattern/s/old/new/gc

全域性查詢pattern,對於匹配pattern的行進行後面的替換,這裡的pattern和old都可以使用正規表示式,但是replacement是不能使用正規表示式的,對於replacement,它有自己專屬的規則。

&-- 替換為模式的匹配,也即如果pattern匹配that,那麼&就是that

咋一聽貌似這個沒啥用處,如:s/that/&/gc,這與未替換之前是一樣的。它也常用於重複輸入,如: 如:

\u或\l-- 把接下來下乙個字母轉成大寫或小寫

如::s/that/\uthat/g -- that --> that; :s/that\lthat/g -- that --> that。這多少顯得有些弱智,直接拼大寫或小寫更方便。

這二個多用於變數,如:

\u或\l和\e或\e-- 把replacement中的從\u或\l到\e或\e的所有字母都轉成大寫或小寫,如::s/restore/re\usto\ere/ -- restore --> restore,這也很弱智。

還是與變數才更強大:

vim中的搜尋和替換博大精深,要想掌握好唯有不斷的練習與實踐,這些講的僅是乙個開端。

《learning.the.vi.and.vim 7th edition》chap 4, chap 6 and chap 10

Vim高階技術 搜尋和替換

行內搜尋,也就是在當前行內進行搜尋和移動,通常都與編輯命令一起使用。搜尋,分為二個部分 乙個是搜尋命令,另乙個是模式匹配 搜尋命令就是各個編輯器所支援的啟動搜尋的方式,比如windows的各種編輯器都是以對話方塊的形式。模式就是在對話方塊中輸入的要匹配的字串集。本身字串的匹配功能有限,所以就有了專門...

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可以找到上...