vim技巧:用列表形式顯示全部搜索到的內容,去掉搜索內容的高亮

本篇文章介紹 vim 的一些使用技巧:vim

  • 用列表形式顯示全部搜索到的內容
  • 去掉搜索內容的高亮

用列表形式顯示全部搜索到的內容

vim 在文件內用 / 或者 ? 進行查找,不會列出全部查找到的內容,須要經過 n 或者 N 命令逐一跳轉到匹配的位置。命令行

若是想要用列表的形式顯示全部查找到的內容,能夠用 [I 命令。注意,[ 後面跟着的是大寫字母I。該命令在查找 count_matches 單詞時,會顯示相似於下面的效果:code

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 命令,一次性列出了包含搜索內容的全部行,第二列是對應行的行號。以後,能夠在命令行輸入 :number 跳轉到 number 對應的行。例如,輸入 :1879,回車後會跳轉到 1879 行。rem

[I 表示從文件開頭開始查找當前光標下的關鍵字,若是當前光標不在要搜索的關鍵字下,能夠先用 / 或者 ? 搜索,跳轉到關鍵字後,再用 [I 命令。字符串

若是當前文件是 C/C++ 代碼文件,[I 也會查找 #include 指定的頭文件。便可能會列出多個文件下的匹配內容。若是不想要這個效果,能夠先執行 :set include= 命令,將include選項的值設成空,就不會查找include的頭文件,而後再執行 [I 命令,查找完後執行 :set include& 命令重置include選項爲默認值。
能夠映射快捷鍵把這三個命令放到一塊兒,方便操做。 例以下面映射爲 F7 鍵:class

:map <F7> :set include=<CR>[I:set include&<CR>

若是不是 C/C++ 代碼文件,不須要作其餘設置,[I 命令只會查找當前文件。vimrc

注意[I 命令不能查找少數的特殊字符,例如不能查找右大括號},可是能夠查找左大括號{搜索

去掉搜索內容的高亮

vim 打開搜索高亮 (set hlsearch) 後,搜索到的內容會一直高亮顯示。技巧

若是要去掉搜索內容的高亮,能夠搜索一些不存在的內容,搜索不到就會去掉以前的高亮。 map

上面是取巧的作法,標準作法是執行 :nohlsearch 命令。
這個命令會去掉搜索內容的高亮,但仍是打開搜索高亮功能,下次搜索到內容仍是會高亮。

爲了方便執行,能夠在 ~/.vimrc 文件中,把這個命令映射成快捷鍵。下面把它映射爲 F9 鍵:

" 若是要去掉高亮顯示搜索到的內容,須要再次搜索一些不存在的字符串,比較麻煩.能夠
" 在vim的命令行中執行nohlsearch命令去掉當前高亮.下面以:開頭表示在命令行執行.
nnoremap <F9> :nohlsearch<CR>
" 插入模式下也用F9來去掉搜索高亮.下面的<C-o>表示CTRL-O,在插入模式執行一次命令
inoremap <F9> <C-o>:nohlsearch<CR>
相關文章
相關標籤/搜索