VIM 查詢文字

2021-07-10 18:06:49 字數 4214 閱讀 6442

查詢字元

命令f用於在本行內向前搜尋。例如fx是向前(forward)搜尋字母x。而命令f是向後(backward)搜尋。例如fx是向後搜尋字母x。與f和f這兩個相類似的是t和t命令。t命令類似於f向前搜尋命令,所不同的是t搜尋到時並不是將游標停在目標字元上,而是停在目標字元的前乙個字元上。在搜尋的過程中,我們可以使用esc來退出搜尋而開始新的工作。

對於以上四個查詢命令,我們可以重複執行這些操作。命令;是按照前一次的查詢方向繼續查詢,如果要向相反的方向查詢可以使用,命令。但是這些查詢只是在行本行內進行,並不會將游標移動到其它的行。

查詢字串

我們可以使用/string命令來向前(forward)查詢字串string,按下回車後,游標就能跳到正確的地方。在這個命令中,/後的字元是我們想要查詢的字元,而回車鍵則表明了命令的結束。

有時想要查詢的內容並不僅在一處,我們可以在整個文章中進行查詢:/可以繼續剛才的查詢操作。我們還可以使用n命令來繼續剛才的查詢命令。這兩個命令都能達到同樣的效果。

一般來說,在進行查詢時總是在向前查詢。我們也可以使用?命令向後(backward)查詢。n也是逆向查詢命令,他可以實現立即反向查詢。

如果我們想要停止這一查詢,可以使用ctrl+c命令,如果是在windows系統中,則要使用ctrl+break命令。

vi具有記錄查詢命令歷史的功能,這樣就不用重複輸入查詢命令了。例如你剛才做過的三次查詢分別是:/one,/two,/three。而現在輸入/,然後按方向鍵的上或是下就看到剛才查詢的內容顯示在vi的下面,這時只要按下回車就會找到想要的內容了。

指定游標放置位置

在預設情況下,查詢時vim會將游標放在第乙個匹配的結果的開始處。我們也可以指定查詢結束後,游標所處的位置。對於向前查詢的命令,我們可以在斜線後用數字來指明游標所處的位置,例如/set/2命 令會在查詢結束後將游標放在第乙個set字串之後第二行的開始處。命令中的數字可以是正數也可以是負數。如果僅是乙個簡單的數字,游標會被放在第乙個匹 配字串之後或之前的數字所指定的行的開始處。正是向後,負數是向前。如果斜線後是b和數字,那麼在查詢結束後,游標將會放在第乙個匹配字串的開始處, 然後向左或是右移動n個字元,這裡的n即為數字所指定的數。如果為正數則是向右移動,如果是負數,則是向左移動。例如/set/b2, 這個命令使游標在查詢結束後放在第乙個匹配字元的開始處,然後向右移動兩個字元,也就是說最後游標會位於第乙個匹配字串中的t的位置。將b改為s也是一 樣的效果。而引數e會使得游標放在第乙個匹配字串的結尾處。同樣我們也可以用數字來指定向右還是向左移動游標以及移動的字元數。例如/set/e命令會使游標放在第乙個匹配字元處的結尾處。如果命令改為/set/e2,會將游標放在第乙個匹配字串的結尾處,然後向右移動2個字元。這裡的數字如果是正數則向右移,如果為負數則向左移。

命令/set/e+2是在查詢set字串結束後,將游標放在第乙個匹配字串的結尾處,然後向右移動兩個字元。在這裡我們將這個數字稱為偏移量。如果要重複上一次的查詢,但是需要不同的偏移量,可以用//5命令。不使用偏移量時,可以指明乙個空的偏移量,如//命令。/命令,重複前一次的查詢,使用相同的偏移量。

查詢命令?也可以實現類似的功能。例如?set?b5命令,是將游標放在最後乙個匹配字串的開頭部分,然後向右移動5個字元。??-2命令,則繼續前一次的查詢命令,但是使用新的偏移量。??命令,是繼續前一次的查詢命令,但是不使用偏移量。

立時查詢字串

如果我們想快速查詢當前游標下的字串,可以使用命令*,這個命令可以向前查詢與當前游標下的字元精確匹配的字串。而命令#,則向後查詢與當前游標下的字元精確匹配的字串。如果當前游標下的字串為word,在執行*命令查詢時並不會與word相匹配。與這個立時查詢命令相類似的就是g*命令。他不會進行嚴格的匹配。如果用這個命令來查詢word,那麼就有可能和word相匹配。而g#命令與其相同,只不過他是向相反的方向進行查詢匹配。

設定查詢選項

我們可以選擇高亮顯示查詢的文字,命令為::set hlsearch,關閉高亮顯示的命令為::set nohlsearch。如果想關掉剛才高亮顯示的結果,可以使用:nohlsearch命令。

使用:set incsearch命令,將開啟匹配查詢選項。在進行查詢時就會顯示出不斷匹配的過程。例如你想查詢的內容是include,在開啟這個選項後,當你輸入/i,游標定位在i上,再繼續輸入n游標定位在in上,如此直到查打到所要求的內容。關閉這個選項的命令為::set noincsearch

在預設的情況下,vim是大小寫敏感的。如果乙個檔案中有這樣幾個字串:include,include,include。當我們使用命令/include來查詢字串時,只有include字元會被高亮顯示。但是如果我們用:set ignorecase命令開啟ignorecase選項後,所有的類似的字元都會被高亮顯示。如果這樣的查詢結果並不是我們想要的,可以使用:set noignorecase命令關閉這個選項。

如果設定了ignorecase選項後,我們想要查詢字串word,而匹配的則可能是word、word,word。如果我們要查詢字串word,匹配的結里也是一樣的。但是如果設定了:set ignorecase:set smartcase兩項後,執行結果就會變得不一樣了:如果我們輸入的是小寫字元,那麼就會匹配各種可能的組合,這時與設定了ignorecase的情況相同,但是如果我們在輸入中有乙個大寫字元,那麼這時就變成了精確查詢,與設定了noignorecase的情況相同。

我們在執行查詢命令時,也可以用修飾符來控制大小寫敏感。在命令中加入修飾符/c將告訴vim執行大小寫敏感的查詢,比如?/cword命令就只匹配單詞word。而在命令中加入修飾符/c則執行忽略大小寫的查詢。

在預設的情下,我們輸入要查詢的字串,vim是從當前游標處向前查詢,直到檔案的結尾,如果沒有找到,那麼就會從檔案的開頭開始查詢,直到游標所處的位置。我們可以通過:set nowrapscan命令,來禁止這種迴圈查詢的方式,這樣如果已經查詢到檔案的底部時,就會在底部顯示出一條錯誤資訊。如果我們想要回到正常的狀態,可以使用:set wrapscan命令。

命令小結

f向前搜尋並將游標停留在目標字元上

f向後搜尋並將游標停留在目標字元上

;重複剛才的查詢

,反向重複剛才的查詢

t向前搜尋並將游標停留在目標字元的前乙個字元上

t向後搜尋並將游標停留在目標字元的後乙個字元上

/向前查詢

?向後查詢

n繼續查詢

n反向查詢

*向前查詢與當前游標下字元精確匹配的字串

#向後查詢與當前游標下字元精確匹配的字串

:set hlsearch開啟高亮顯示查詢的文字

:set nohlsearch關閉高亮顯示查詢的文字

:nohlsearch關閉當前高亮顯示的結果

:set incsearch開啟顯示查詢匹配過程

:set noincsearch關閉顯示查詢匹配過程

:set ignorecase忽略大小寫

:set noignorecase精確匹配大小寫

:set nowrapscan禁止迴圈查詢方式

:set wrapscan啟用迴圈查詢方式

vim 查詢文字

查詢字元 命令f用於在本行內向前搜尋。例如fx是向前 forward 搜尋字母x。而命令f是向後 backward 搜尋。例如fx是向後搜尋字母x。與f和f這兩個相類似的是t和t命令。t命令類似於f向前搜尋命令,所不同的是t搜尋到時並不是將游標停在目標字元上,而是停在目標字元的前乙個字元上。在搜尋的...

vim 對映 查詢替換 整理文字

1.將系統剪貼簿中的內容用vim整理為一段 刪去換行 英文適用 map p s n yy 注意 沒有考慮連詞符問題。2.將系統剪貼簿中的內容按條目分段,其中條目編號用標記。map p s n s r g1g yg 解釋 map對映命令是完全從左到右依次解釋的。上面這條命令分幾個部分 p 將系統剪貼簿...

vim文字替換

一 基本模式 在命令模式下,可以實現快速替換文字,這在vim編輯過程中非常實用。基本的格式如下 range s pattern string c,e,g,i 開頭的冒號表示進入到命令模式,下面的介紹為了方便會省略這個符號 range 表示替換的範圍,以行為單位,比如 1,4 為從第一行到第四行,起始...