搜尋模式指令

/<keyword> 正向搜尋

?<keyword> 反向搜尋

轉義

加 \ 就是轉義 正向查找時,/ 開頭的查找,要查找 / 時需要轉義變成 \/ 反向查找時,? 開頭的查找,要查找 ? 時需要轉義變成 \? 要查找轉義 \ 也需要轉義,變成 \\

編輯

<Ctrl-r><Ctrl-w> 搜尋到第一個匹配時,自動補全剩餘的單字 但如果搜尋裡面有用非常魔法前綴,就會補全整個單字

搜尋偏移

在搜尋的結尾補上命令,例如 /search/e

匹配游標從結尾算起 [+num] 結尾開始右移,[-num] 結尾開始左移 /e[+num] /e[-num]

暫時關閉高亮

:noh[lsearch] 如果打開 'hlsearch',最後一次查找命令的所有匹配點都會被高亮。 用 :nohlsearch 命令來暫停。

暫存器

<Ctrl-r>{register} 貼上暫存器的內容

替代

:[range]s[ubstitute]/{pattern}/{string}/[flags] 搜尋一段文字,再用另一段文字將其替換

:[range]&[&][flags] [count] 使用最後一次 :substitute 相同的模式和替代字串 第二個 & 為使用最後一次的旗標

{pattern}{string} 都適用正規表達式

執行 {Vim Script} 表達式,並將返回的結果作為替換 {string} \={Vim Script}

~ 使用上一個調用 :substitute 時的 {string}

flags

& 重用上一次 substitute 命令所用過的旗標

I 區分大小寫

c 確認或拒絕每一處的修改

提示

說明

y

替換此匹配

n

忽略此匹配

q

退出替換過程

l

"last" - 替換此匹配後退出

a

"all" - 替換此處與之後所有的匹配

^E <Ctrl-e>

向上滾動視窗

^Y <Ctrl-y>

向下滾動視窗

e 屏蔽沒有匹配到該模式的錯誤提示訊息 "E486: 找不到模式"

g 對行內所有的匹配進行替代

i 忽略大小寫

n 報告匹配的次數,並不實際進行替代

舉例

:%s/jack/vick/g 將當前文件中所有的 jack 改成 vick

vimgrep

vim 內部的 grep 可以打開 quickfix 查看查詢結果

:vimgrep /{pattern}/[g][j] {path/to/file} 把找到的匹配放到 quickfix 列表

[g] 全域搜尋

[j] 只更新 quickfix 列表

檔案路徑萬用字元

** 對目錄遞迴搜尋

* 通用檔名

舉例

**/*.txt 遞迴搜尋副檔名為 txt 的所有檔案

grep

外部的 grep,就像系統的 grep 指令

:gr[ep][!] [arguments] 搜尋結果會存放在 quickfix 列表

:lgr[ep][!] [arguments] 搜尋結果會存放在當前視窗的位置列表

參數

-i 不區分大小寫

舉例

:grep -r --include="*.txt" keyword path 遞迴搜尋 path 的所有 txt 檔,包含 keyword 的內容

尋找檔案

:fin[d][!] [++opt] [+cmd] {file} 在 path 裡找到 {file} ,然後編輯 :edit:set path+=path/** 增加 path

Last updated