Vim 匹配跳转与搜索命令完整学习笔记
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 导航的核心,熟练掌握后可大幅提高代码编辑效率。