Vim 匹配跳转与搜索命令完整学习笔记
文章目录
- [Vim 匹配跳转与搜索命令完整学习笔记](#Vim 匹配跳转与搜索命令完整学习笔记)
-
- [1. 括号/结构匹配](#1. 括号/结构匹配)
-
- [`%` - 括号匹配跳转](#
%
- 括号匹配跳转) - [`[[` / `]]` - 函数定义跳转](#
[[
/]]
- 函数定义跳转) - [`[{` / `]}` - 代码块边界跳转](#
[{
/]}
- 代码块边界跳转)
- [`%` - 括号匹配跳转](#
- [2. 精确单词搜索](#2. 精确单词搜索)
-
- [`*` - 向下精确搜索](#
*
- 向下精确搜索) - [`#` - 向上精确搜索](#` - 向上精确搜索)
- [`*` - 向下精确搜索](#
- [3. 模糊单词搜索](#3. 模糊单词搜索)
-
- [`g*` - 向下模糊搜索](#
g*
- 向下模糊搜索) - [`g#` - 向上模糊搜索](#` - 向上模糊搜索)
- [`g*` - 向下模糊搜索](#
- [4. 手动查找](#4. 手动查找)
-
- [`/word` - 向下搜索](#
/word
- 向下搜索) - [`?word` - 向上搜索](#
?word
- 向上搜索) - [`n` / `N` - 重复搜索](#
n
/N
- 重复搜索)
- [`/word` - 向下搜索](#
- [5. 标签跳转(需要 ctags)](#5. 标签跳转(需要 ctags))
-
- [`Ctrl-]` - 跳转到定义](#
Ctrl-]
- 跳转到定义) - [`Ctrl-t` - 返回上一位置](#
Ctrl-t
- 返回上一位置)
- [`Ctrl-]` - 跳转到定义](#
- [6. 标记跳转](#6. 标记跳转)
-
- [设置标记 - `m{a-z}`](#设置标记 -
m{a-z}
) - 跳转到标记
- [设置标记 - `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 导航的核心,熟练掌握后可大幅提高代码编辑效率。