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" 等
` ` 或操作符,匹配左边或右边的表达式

实用技巧

1. 清除高亮

vim 复制代码
:noh

使用此命令清除当前的搜索高亮。

2. 设置搜索选项

vim 复制代码
:set hlsearch    " 开启搜索高亮
:set incsearch   " 开启增量搜索
:set ignorecase  " 忽略大小写
:set smartcase   " 智能大小写匹配

3. 搜索历史

  • / 后使用上下箭头键浏览搜索历史
  • 使用 n 跳转到下一个匹配项
  • 使用 N 跳转到上一个匹配项

常见应用场景

代码搜索

vim 复制代码
/function.*main     " 搜索包含 function 和 main 的行
/\<TODO\>          " 精确匹配单词 TODO
/^\s*#             " 匹配以 # 开头的注释行(可能有前导空格)

日志分析

vim 复制代码
/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 地址

文本处理

vim 复制代码
/[A-Z]{2,}         " 搜索连续的大写字母
/\w+@\w+\.\w+      " 简单的邮箱地址匹配
/^\s*$             " 匹配空行或只有空格的行