Vim 高亮命令完整学习笔记
Vim 作为强大的文本编辑器,提供了丰富的搜索和高亮功能。掌握这些命令可以大大提高文本处理效率。本文将系统介绍 Vim 的高亮搜索命令和正则表达式的使用。
基础高亮搜索命令
快速搜索命令
命令 |
作用描述 |
示例 |
shift + * |
向下查找并高亮显示匹配内容 |
光标置于单词上,按shift + * |
shift + # |
向上查找并高亮显示匹配内容 |
光标置于单词上,按shift + # |
这两个命令是最常用的快速搜索功能,可以快速查找光标所在单词的所有匹配项。
正则表达式搜索
数字匹配
命令 |
作用描述 |
示例 |
/Path [0-9] |
匹配单个数字 |
匹配 “Path 1”、“Path 5” |
/Path [0-9]\+ |
匹配多个数字 |
匹配 “Path 123”、“Path 45” |
逻辑匹配
命令 |
作用描述 |
示例 |
/aaa\|bbb\|ccc |
高亮显示匹配 aaa、bbb 或 ccc 的行 |
匹配包含任一关键词的行 |
/create_clock.*clkA |
高亮显示同时包含 create_clock 和 clkA 的行 |
匹配同一行中包含两个关键词 |
单词边界匹配
命令 |
作用描述 |
示例 |
/eco\w* |
匹配以 eco 开头的单词 |
匹配 “eco”、“economy”、“ecological” |
/\w*mbist |
匹配以 mbist 结尾的单词 |
匹配 “test_mbist”、“mbist” |
/.*mbist |
匹配包含 mbist 的行 |
匹配任何包含 “mbist” 的行 |
/.*mbist\w*\s* |
匹配包含 mbist 后跟字母数字及空格的行 |
更精确的模式匹配 |
大小写控制
命令 |
作用描述 |
示例 |
/error\c |
不区分大小写的匹配 |
匹配 “error”、“Error”、“ERROR” |
正则表达式元字符详解
字符类匹配
符号 |
描述 |
示例 |
. |
匹配除换行符外的任意单个字符 |
a.c 匹配 “abc” 或 “axc” |
\d |
匹配一个数字 |
\d 匹配 “1” 或 “9” |
\D |
匹配一个非数字字符 |
\D 匹配 “a” 或 “@” |
\w |
匹配一个字母、数字或下划线 |
\w 匹配 “a”、“1” 或 “_” |
\W |
匹配一个非字母、非数字、非下划线字符 |
\W 匹配 “#” 或 “&” |
\s |
匹配一个空白字符(空格、制表符、换行等) |
\s 匹配空格、Tab 或换行符 |
\S |
匹配一个非空白字符 |
\S 匹配 “a”、“b”、“1” |
字符集合
符号 |
描述 |
示例 |
[abc] |
匹配方括号中的任何单个字符 |
[abc] 匹配 “a”、“b” 或 “c” |
[^abc] |
匹配任何不在方括号中的字符 |
[^abc] 匹配 “x” 或 “1” |
数量限定符
符号 |
描述 |
示例 |
a{n} |
匹配前面的字符恰好出现 n 次 |
\d{3} 匹配 “123” |
a{n,} |
匹配前面的字符至少出现 n 次 |
\d{2,} 匹配 “12” 或 “123” |
a{n,m} |
匹配前面的字符出现 n 至 m 次 |
\d{2,4} 匹配 “12” 或 “1234” |
* |
匹配前面的字符零次或多次 |
a* 匹配 “”、“a”、“aa” 等 |
+ |
匹配前面的字符一次或多次 |
a+ 匹配 “a” 或 “aa” 等 |
? |
匹配前面的字符零次或一次 |
a? 匹配 “” 或 “a” |
位置锚点
符号 |
描述 |
示例 |
^ |
匹配行的开始 |
^a 匹配以 “a” 开头的行 |
$ |
匹配行的结束 |
a$ 匹配以 “a” 结尾的行 |
分组和选择
符号 |
描述 |
示例 |
() |
分组,匹配括号内的内容 |
(ab)+ 匹配 “ab”、“abab” 等 |
| |
或操作符,匹配左边或右边的表达式 |
a|b 匹配 “a” 或 “b” |
实用技巧
1. 清除高亮
:noh
使用此命令清除当前的搜索高亮。
2. 设置搜索选项
:set hlsearch " 开启搜索高亮
:set incsearch " 开启增量搜索
:set ignorecase " 忽略大小写
:set smartcase " 智能大小写匹配
3. 搜索历史
- 按
/
后使用上下箭头键浏览搜索历史
- 使用
n
跳转到下一个匹配项
- 使用
N
跳转到上一个匹配项
常见应用场景
代码搜索
/function.*main " 搜索包含 function 和 main 的行
/\<TODO\> " 精确匹配单词 TODO
/^\s*# " 匹配以 # 开头的注释行(可能有前导空格)
日志分析
/ERROR\|WARN\|FATAL " 搜索错误、警告或致命信息
/\d{4}-\d{2}-\d{2} " 搜索日期格式 YYYY-MM-DD
/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} " 搜索 IP 地址
文本处理
/[A-Z]{2,} " 搜索连续的大写字母
/\w+@\w+\.\w+ " 简单的邮箱地址匹配
/^\s*$ " 匹配空行或只有空格的行