在不移動遊標的情況下突出顯示搜尋字詞

在不移動遊標的情況下突出顯示搜尋字詞

使用 Vim,有時我會發現自己盯著一段原始程式碼看了一會兒,突然想要在螢幕上彈出一些變數。這很簡單:/<var>它突出了所有這些。我的問題是,搜尋常常會改變我的窗口,所以我不會從同一個地方查看原始程式碼。即使它只移動了幾行,它仍然讓我感到困惑,因為我需要花幾秒鐘來弄清楚事情已經移動到哪裡。

是否可以突出顯示搜尋詞而不將遊標移動到下一個匹配項?

答案1

http://vim.wikia.com/wiki/VimTip1572

如果您使用過此插件,則只需啟用該功能即可

\米

然後使用數字鍵盤鍵為該單字的所有位置指定顏色,而無需移動遊標。

1

如果您願意,您可以同時對許多不同的單字或更複雜的搜尋模式使用許多不同的突出顯示。

答案2

天藍的回答顯示如何使用普通搜尋突出顯示來完成您想要的事情的核心思想。

我透過製作一個類似於*命令,但實際上並沒有進入下一場比賽。

我要感謝的是加里約翰為指出expand()相當於*的單字選擇(以避免使用*自身並恢復視圖)。這足夠簡化程式碼,以便它可以直接進入映射(避免使用函數)。我還添加了一個匹配部分單字的映射(例如 g*)。

:" The leader defaults to backslash, so (by default) this
:" maps \* and \g* (see :help Leader).
:" These work like * and g*, but do not move the cursor and always set hls.
:map <Leader>* :let @/ = '\<'.expand('<cword>').'\>'\|set hlsearch<C-M>
:map <Leader>g* :let @/ = expand('<cword>')\|set hlsearch<C-M>

答案3

您也可以將搜尋暫存器設定為您想要匹配的變數。

首先,確保搜尋突出顯示已開啟:

:set hlsearch

然後,您可以使用以下命令設定搜尋暫存器:

:let @/="variable"

這將突出顯示所有出現的變量,而不會跳到下一個匹配項。

有關更多信息,請參閱:help @/

答案4

另外:

 :set hlsearch

您可能想要:

 : set noincsearch

相關內容