Vim 匹配跳轉與搜索命令完整學習筆記
文章目錄
- Vim 匹配跳轉與搜索命令完整學習筆記
- 1. 括號/結構匹配
- `%` - 括號匹配跳轉
- `[[` / `]]` - 函數定義跳轉
- `[{` / `]}` - 代碼塊邊界跳轉
- 2. 精確單詞搜索
- `*` - 向下精確搜索
- `#` - 向上精確搜索
- 3. 模糊單詞搜索
- `g*` - 向下模糊搜索
- `g#` - 向上模糊搜索
- 4. 手動查找
- `/word` - 向下搜索
- `?word` - 向上搜索
- `n` / `N` - 重復搜索
- 5. 標簽跳轉(需要 ctags)
- `Ctrl-]` - 跳轉到定義
- `Ctrl-t` - 返回上一位置
- 6. 標記跳轉
- 設置標記 - `m{a-z}`
- 跳轉到標記
- 快速參考表
- 使用技巧
本指南匯總了 Vim 中最常用的匹配、跳轉和搜索命令,幫助您快速定位代碼和高效導航。
1. 括號/結構匹配
%
- 括號匹配跳轉
- 功能: 跳轉到匹配的括號
()
、{}
、[]
- 使用方法: 將光標放在任意括號上,按
%
可跳轉到對應的另一端 - 適用場景: 快速檢查括號配對,定位代碼塊邊界
[[
/ ]]
- 函數定義跳轉
- ?
[[
? : 跳轉到上一個函數定義或代碼塊起始 - ?
]]
? : 跳轉到下一個函數定義或代碼塊起始 - 適用場景: 在大文件中快速瀏覽函數結構
[{
/ ]}
- 代碼塊邊界跳轉
- ?
[{
? : 跳轉到當前代碼塊起始位置 - ?
]}
? : 跳轉到當前代碼塊結束位置 - 備注: 需要配合
matchit
插件使用,可與if
、for
等代碼塊跳轉
2. 精確單詞搜索
*
- 向下精確搜索
- 功能: 向下查找光標下的完整單詞
- 使用方法: 將光標放在單詞上按
*
- 等效操作:
/\<word\><CR>
#
- 向上精確搜索
- 功能: 向上查找光標下的完整單詞
- 使用方法: 將光標放在單詞上按
#
- 備注: 與
*
搜索方向相反
3. 模糊單詞搜索
g*
- 向下模糊搜索
- 功能: 向下查找包含該單詞的部分匹配
- 使用示例: 光標在
log
上按g*
,可匹配logger
、logfile
、catalog
等 - 適用場景: 查找相關變量或函數名
g#
- 向上模糊搜索
- 功能: 向上查找包含該單詞的部分匹配
- 備注: 類似
g*
但搜索方向向上
4. 手動查找
/word
- 向下搜索
- 功能: 向下搜索指定字符串
- 使用示例: 輸入
/main
后按回車,查找 “main” - 提示: 支持正則表達式
?word
- 向上搜索
- 功能: 向上搜索指定字符串
- 使用方法: 類似
/
,但搜索方向向上
n
/ N
- 重復搜索
- ?
n
?: 重復上一次搜索(同方向) - ?
N
?: 反方向重復上一次搜索 - 常用場景: 連續查找多個匹配項
5. 標簽跳轉(需要 ctags)
Ctrl-]
- 跳轉到定義
- 功能: 跳轉到標簽(函數/變量定義)
- 前提條件: 需要生成 ctags 文件
- 使用方法: 將光標放在函數名上按
Ctrl-]
Ctrl-t
- 返回上一位置
- 功能: 跳回上一個標簽位置
- 作用: 相當于"返回"功能,可多次使用
6. 標記跳轉
設置標記 - m{a-z}
- 功能: 在當前位置設置一個字母標記
- 使用示例:
ma
表示在當前位置設置標記 a - 范圍: 可使用 a-z 共26個標記
跳轉到標記
- ?
'a
?: 跳轉到標記 a 所在行(單引號) - ``a` : 精確跳轉到標記位置,包括列(反引號)
- 區別: 單引號跳到行首,反引號跳到確切的光標位置
快速參考表
類別 | 命令 | 功能描述 | 使用示例 / 備注 |
---|---|---|---|
括號/結構匹配 | % | 跳轉到匹配括號() ,{} ,[] | 在括號上按% 可跳轉另一端 |
[[ /]] | 上/下一個函數定義或代碼塊起始 | 適用于函數塊快速跳轉 | |
[{ /]} | 跳轉到當前代碼塊起始/結束(配合 matchit) | 可配合if ,for 塊跳轉 | |
精確單詞搜索 | * | 向下查找光標下完整單詞 | 在單詞上按* ,等同于/word<CR> |
# | 向上查找光標下完整單詞 | 與* 相反方向 | |
模糊單詞搜索 | g* | 向下查找包含該單詞的部分匹配 | 例如g*log 匹配logger 、logfile 等 |
g# | 向上查找包含該單詞的部分匹配 | 類似g* 反方向 | |
手動查找 | /word | 向下搜索字符串 | 輸入/main 后按n 重復查找 |
?word | 向上搜索字符串 | 類似/ ,但方向向上 | |
n | 重復上一次搜索(同方向) | 常用于連續查找 | |
N | 反方向重復上一次搜索 | 與n 方向相反 | |
標簽跳轉 | Ctrl-] | 跳到標簽(函數/變量定義),需 ctags | 光標在函數名上按Ctrl-] 跳轉定義 |
Ctrl-t | 跳回上一個標簽位置 | 相當于“返回”功能 | |
標記跳轉 | m{a-z} | 設置一個字母標記 | 如ma 表示在當前位置設置標記 a |
'a | 跳到標記 a 所在行 | 單引號跳整行 | |
``a` | 精確跳到標記位置(包括列) | 反引號跳到確切光標位置 | |
:delmarks a | 刪除標記 a | ||
:marks | 查看所有設置的標記 |
使用技巧
- 組合使用: 可以將搜索命令與其他 Vim 命令組合,如
d/pattern
刪除到匹配位置 - 搜索歷史: 按
/
或?
后,可用上下箭頭查看搜索歷史 - 高亮設置: 使用
:set hlsearch
開啟搜索結果高亮 - 忽略大小寫: 使用
:set ignorecase
進行大小寫不敏感搜索 - 標記管理: 大寫字母標記(A-Z)可跨文件使用
提示:這些命令是 Vim 導航的核心,熟練掌握后可大幅提高代碼編輯效率。