当您在文件中搜索类似于/console.log之类的单词时,console.log的所有实例都会突出显示。我当前的消除突出显示的策略是执行类似/asntehua的操作。是否有适当的方法来删除突出显示的单词?

评论

没有比/ skldafjlksjdf更快的键入了))

将以下内容添加到您的.vimrc中::nnoremap :nohlsearch 。在命令模式下按回车键,突出显示消失。

#1 楼

作为:noh的替代方法,我喜欢将:let @/=""映射到键盘快捷键。

不同之处在于:noh将搜索项保留在搜索寄存器中,因此正常模式下的nN通过跳转到下一个/上一个比赛并重新突出显示。
另一方面,使用:let @/=""会导致出现消息E25: No previous regular expression并将光标留在原处,如果您不知道ctrl,这特别方便- o仍然不小心击中了n

也可以用其他方式使用。要使vim突出显示某些文本而不跳转到文本,可以:let @/="some text"

在这些表达式中,@可以引用一个寄存器,@ /是保存最后一个搜索模式的寄存器。 >

#2 楼

只需键入

:noh<cr>


(其中<cr>表示回车,即Enter)。此命令的完整非缩写形式是:nohlsearch。 >为方便起见,您可以在.vimrc中添加一个映射,例如

nnoremap <Leader><space> :noh<cr>


。由于我的领导者是太空人,因此我只需轻按两次空格即可清除突出显示。 (默认情况下,<Leader>设置为\

另一个受欢迎的选择是将其绑定到Ctrl + L,因为这或多或少是“重绘终端屏幕”的默认设置,这大致是什么您正在执行的操作:

nnoremap <silent> <C-L> :nohlsearch<CR><C-L>


这也具有重新绘制终端屏幕的副作用,如果终端连接速度很慢,这可能会很慢(这种情况很少这些天)。
注意:如果您正在使用tpope / vim-sensible,那么它已经提供了上面列出的<C-l>映射。

#3 楼

永久禁用搜索突出显示

使用/

:set nohlsearch
搜索时,匹配项不会突出显示搜索

:noh


:nohlsearch(清除直到按下n或N或执行新的搜索)


清除高亮按ESC


nnoremap <esc> :noh<return><esc>



按下另一个键或自定义地图时清除高亮显示




按\(反斜杠)时清除亮点

nnoremap \ :noh<return>



按两次ESC清除亮点

nnoremap <esc><esc> :noh<return>




评论


我在我的vimrc中添加了nnoremap :noh ,但是它不起作用。我已经将jk映射为逃避,那可能是为什么?

–mbigras
17 Mar 2 '17 at 2:38

到底是怎么回事?也许您禁用了ESC键?

– Shehryar
17年2月40日标记为2'

按jk不会关闭突出显示的文本(但仍可以用作Esc)。按下键盘左上方的我的Esc键不会关闭突出显示的文本。

–mbigras
17 Mar 2 '17在2:43



因此,您可以在那里找到答案。将您的jk地图放在ESC地图下方,并确保您使用的是简单地图而不是noremap

– Sheharyar
17 Mar 2 '17 at 2:46

重新映射转义符可能会导致箭头键出现问题,并且我假设其他情况下也会使用转义符。 vi.stackexchange.com/questions/11144/…

–罗布·莫舍(Rob Mosher)
19年8月20日在16:15

#4 楼

在〜/ vimrc中尝试了一些针对此快捷方式的建议解决方案后,我决定简单地在其中添加nmap <esc><esc> :noh<return>。双逃逸防止干扰箭头键的功能。如果您处于插入模式,则必须进行三次转义。这是快速执行且易于记住的方法。

#5 楼

我在.vimrc中添加了一个autocmd,以便在您进入插入模式时立即删除突出显示的内容。

 autocmd InsertEnter * :let @/=""


评论


使用nohl而不是let @ / =“”将是更好的方法,因为那样您就不会破坏当前的搜索了。

–詹姆斯
18-09-19在23:57

@jamessan可以与:let @ / =“”命令一起使用,但是autocmd InsertEnter *:noh出于某种原因不起作用,知道为什么吗?

– tobek
19年5月17日在22:54

实际上,我找到了原因:根据文档“无法在自动命令中使用“:nohlsearch”关闭搜索突出显示“-原因详细信息:vimdoc.sourceforge.net/htmldoc/autocmd.html#autocmd-searchpat

– tobek
19年5月17日在23:01

#6 楼

/asdfasdf


它的优点是您不必输入准确的内容。缺点是,在4096字节的文件中大约有1:68719476736的机会不起作用,并且光标会跳到另一个位置。对于较大的文件,此机会增加。

评论


欢迎使用vi SE!我认为字符串asdfasdf是特殊的,因为它在实际文件中比随机选择的8字节序列经常发生。因此,机会要高得多。 :-)

–peterh-恢复莫妮卡
19年8月19日在22:32

#7 楼

如果您不想在搜索后不突出显示,可以使用以下命令(更好):

:set nohls


或以下命令(更糟): >
:hi Search NONE


#8 楼

键入:help incsearch时,我在手册中发现了以下内容:
augroup vimrc-incsearch-highlight
  autocmd!
  autocmd CmdlineEnter /,\? :set hlsearch
  autocmd CmdlineLeave /,\? :set nohlsearch
augroup END

我辞职使用,因为我尝试过的其他解决方案都不是完美的,因此该解决方案“直指马口” 。它突出显示当前窗口中的所有搜索匹配项。搜索时,可以使用CTRL-GCTRL-T键移动到下一个和上一个匹配项。

#9 楼

我不认为完全删除hls并不是一件好事,如何轻松启用或禁用创建简单快捷方式(布尔值)
对我来说->

" to reselect use gv in normal mode
nnoremap <S-F11> <ESC>:set hls!<cr>
inoremap <S-F11> <C-o>:set hls!<cr>
vnoremap <S-F11> <ESC>:set hls!<cr> <bar> gv


魔术的出现是由于设置结尾处的“ !

#10 楼

我发现很少要突出显示对我来说是很少见的,当我需要突出显示时只是短暂的一刻。我的解决方法是

nnoremap <Leader>/ set hls!<CR>


这样可以在按\/时突出显示,如果再次按则禁用它。在极少数情况下,您可以在需要时轻松访问突出显示。