Vim 高亮命令完整学习笔记
文章目录
- 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*$ " 匹配空行或只有空格的行