共计 1137 个字符,预计需要花费 3 分钟才能阅读完成。
本篇文章介绍 vim 的一些使用技巧:
- 用列表形式显示所有搜索到的内容
- 去掉搜索内容的高亮
用列表形式显示所有搜索到的内容
vim 在文件内用 /
或者 ?
进行查找,不会列出所有查找到的内容,需要通过 n 或者 N 命令逐一跳转到匹配的位置。
如果想要用列表的形式显示所有查找到的内容,可以用 [I
命令。注意,[
后面跟着的是大写字母 I
。该命令在查找 count_matches 单词时,会显示类似于下面的效果:
src/main.c
1: 586 static int count_matches;
2: 1270 if (count_matches)
3: 1879 count_matches = 1;
4: 2093 count_matches = 0;
Press ENTER or type command to continue
可以看到,使用 [I
命令,一次性列出了包含搜索内容的所有行,方便查看。
[I
表示从文件开头开始查找当前光标下的关键字,如果当前光标不在要搜索的关键字下,可以先用 /
或者 ?
搜索,跳转到关键字后,再用 [I
命令。
如果当前文件是 C/C++ 代码文件,[I
也会查找 #include
指定的头文件。即可能会列出多个文件下的匹配内容。如果不想要这个效果,可以先执行 :set include=
命令,将 include 选项的值设成空,就不会查找 include 的头文件,然后再执行 [I
命令,查找完后执行 :set include&
命令重置 include 选项为默认值。
可以映射快捷键把这三个命令放到一起,方便操作。例如下面映射为 F7 键:
:map <F7> :set include=<CR>[I:set include&<CR>
如果不是 C/C++ 代码文件,不需要做其他设置,[I
命令只会查找当前文件。
注意 :[I
命令不能查找少数的特殊字符,例如不能查找右大括号 }
,但是可以查找左大括号 {
。
去掉搜索内容的高亮
vim 打开搜索高亮 (set hlsearch) 后,搜索到的内容会一直高亮显示。
如果要去掉搜索内容的高亮,可以搜索一些不存在的内容,搜索不到就会去掉之前的高亮。
上面是取巧的做法,标准做法是执行 :nohlsearch
命令。
这个命令会去掉搜索内容的高亮,但还是打开搜索高亮功能,下次搜索到内容还是会高亮。
为了方便执行,可以在 ~/.vimrc
文件中,把这个命令映射成快捷键。下面把它映射为 F9 键:
"如果要去掉高亮显示搜索到的内容, 需要再次搜索一些不存在的字符串, 比较麻烦. 可以" 在 vim 的命令行中执行 nohlsearch 命令去掉当前高亮. 下面以: 开头表示在命令行执行.
nnoremap <F9> :nohlsearch<CR>
" 插入模式下也用 F9 来去掉搜索高亮. 下面的 <C-o> 表示 CTRL-O, 在插入模式执行一次命令
inoremap <F9> <C-o>:nohlsearch<CR>