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 导航的核心,熟练掌握后可大幅提高代码编辑效率。
