Nvim 的 :help
頁面,由 產生,使用 tree-sitter-vimdoc 解析器,來源為 原始碼。
:set ignorecase再次搜尋「include」,現在它會比對「Include」、「INCLUDE」和「InClUDe」。(設定 'hlsearch' 選項可快速查看模式比對的位置。) 您可以使用以下指令再次關閉此功能
:set noignorecase但讓我們保持開啟,並搜尋「INCLUDE」。它會比對與「include」完全相同的文字。現在設定 'smartcase' 選項
:set ignorecase smartcase如果您的模式中至少有一個大寫字元,搜尋會變為區分大小寫。這個想法是您不必輸入大寫字元,因此您必須這樣做是因為您想要比對大小寫。這很聰明!設定這兩個選項後,您會找到以下比對結果
CTRL-C
和在 MS-Windows 上使用 CTRL-Break
來中斷它。:set rulerVim 會在視窗的右下角 (如果有的話,則在狀態列) 顯示游標位置。它看起來像這樣
:set nowrapscan現在,當搜尋到達檔案結尾時,會顯示錯誤訊息
/default/2此指令會搜尋模式「default」,然後移動到模式後第二行的開頭。在上面的段落中使用此指令時,Vim 會在第一行中找到單字「default」。然後,游標會向下移動兩行,並停在「an offset」上。
/const/e會將游標放在「const」的「t」上。從該位置開始,加上一個數字會向前移動多個字元。此指令會移動到比對後面的字元
/const/e+1正數會將游標向右移動,負數會將游標向左移動。例如
/const/e-1會將游標移動到「const」的「s」上。
/const/b+2將游標移動到比對的開頭,然後向右移動兩個字元。因此,它會停在「n」上。
/that //e等於
/that/e若要使用相同的偏移量重複
/「n」執行相同的動作。若要在移除先前使用的偏移量的同時重複
//
?const?e-2「b」和「e」保持其含義,它們不會隨著使用「?」而改變方向。
/const/-2這會找到下一個單字「const」,然後向上移動兩行。如果您使用「n」再次搜尋,Vim 可以從目前位置開始並找到相同的「const」比對。然後再次使用偏移量,您會回到您開始的位置。您會卡住!可能會更糟:假設下一行還有另一個「const」的比對。然後,重複正向搜尋會找到此比對並向上移動兩行。因此,您實際上會將游標向後移動!
/a*會比對「a」、「aa」、「aaa」等。但也包括「」(空字串),因為其中包含零次。「*」僅適用於它前面的項目。因此,「ab*」會比對「a」、「ab」、「abb」、「abbb」等。若要比對整個字串多次,必須將其分組為一個項目。這是透過在其前面加上「\ (」並在其後面加上「\ )」來完成的。因此,此指令
/\(ab\)*比對:「ab」、「abab」、「ababab」等。也包括「」。
/ab\+比對「ab」、「abb」、「abbb」等。當沒有「b」跟隨時,它不會比對「a」。
/folders\=比對「folder」和「folders」。
/ab\{3,5}比對「abbb」、「abbbb」和「abbbbb」。當省略「n」時,預設為零。當省略「m」時,預設為無限大。當省略「,m」時,它會精確比對「n」次。範例
/ab\{-1,3}會比對「abbb」中的「ab」。實際上,它永遠不會比對一個以上的 b,因為沒有理由比對更多。它需要其他東西來強制它比對超過下限。相同的規則適用於移除「n」和「m」。甚至可以移除這兩個數字,導致「\{-}」。這會比對它前面的項目零次或多次,並盡可能減少次數。項目本身總是比對零次。當與其他東西結合使用時,它會很有用。範例
/a.\{-}b這會比對「axbxb」中的「axb」。如果使用此模式
/a.*b它會嘗試使用「.*」比對盡可能多的字元,因此它會將「axbxb」作為一個整體進行比對。
/foo\|bar這會比對「foo」或「bar」。可以串聯更多的替代方案
/one\|two\|three比對「one」、「two」和「three」。若要比對多次,必須將整個內容放在「\ (」和「\ )」中
/\(foo\|bar\)\+這會比對「foo」、「foobar」、「foofoo」、「barfoobar」等。另一個範例
/end\(if\|while\|for\)這會比對「endif」、「endwhile」和「endfor」。
/forever\&...這會比對「forever」中的「for」。例如,它不會比對「fortuin」。
/[a-z][] 結構會比對單個字元。在內部,您可以指定要比對的字元。您可以包含一個字元清單,如下所示
/[0123456789abcdef]這會比對任何包含的字元。對於連續字元,您可以指定範圍。「0-3」代表「0123」。「w-z」代表「wxyz」。因此,與上述相同的指令可以縮短為
/[0-9a-f]若要匹配連字號 "-" 字元本身,請將其放在範圍中的第一個或最後一個位置。這些特殊字元被接受,以便在 [] 範圍內更容易使用它們(實際上它們可以被用於搜尋模式中的任何位置)
<Esc>
\t <Tab>
\r <CR>
\b <BS>
/"[^"]*"
/\a尋找字母字元。這等同於使用 "/[a-zA-Z]"。以下是一些其他的例子
<Tab>
和 <Space>
) | \S | 非空白字元 | [^ ] (非 <Tab>
和 <Space>
) | \l | 小寫字母 | [a-z] | \L | 非小寫字母 | [^a-z] | \u | 大寫字母 | [A-Z] | \U | 非大寫字母 | [^A-Z]/\f\+"\f" 項目代表檔案名稱字元。因此,這會匹配一個可以是檔案名稱的字元序列。哪些字元可以作為檔案名稱的一部分取決於您使用的系統。在 MS-Windows 上,包含反斜線,而在 Unix 上則不包含。這是使用 'isfname' 選項指定的。Unix 的預設值為
:set isfname isfname=@,48-57,/,.,-,_,+,,,#,$,%,~,=對於其他系統,預設值會有所不同。因此,您可以使用 "\f" 來建立一個匹配檔案名稱的搜尋模式,並且它會自動調整為您正在使用的系統。
/one\ntwo這會匹配以 "one" 結尾的行,且下一行以 "two" 開頭的情況。若要也匹配 "one two",您需要匹配空格或換行符號。要使用的項目是 "\_s"
/one\_stwo若要允許任何數量的空白字元
/one\_s\+two當 "one " 在行的結尾,而 " two" 在下一行的開頭時,也會匹配。
/"\_[^"]*"這會尋找雙引號中的文字,這些文字可能會分割成數行。
/\d\u\u\u\d\d\d另一種方式是指定有三個數字和字母,並帶有計數
/\d\u\{3}\d\{3}改用 [] 範圍
/[0-9][A-Z]\{3}[0-9]\{3}您應該使用哪一種?使用您可以記住的任何一種。您可以記住的簡單方法比您無法記住的複雜方法快得多。如果您可以記住所有方法,則請避免使用最後一種方法,因為它既需要更多輸入,執行速度也更慢。
/\<\h\w*\>"\<" 和 "\>" 用於只尋找整個單字。"\h" 代表 "[A-Za-z_]",而 "\w" 代表 "[0-9A-Za-z_]"。
/\w\@<!\h\w*\w\@!