【问题标题】:Is there anyway to dynamically enable / disable the highlighting in Vim?无论如何动态启用/禁用 Vim 中的突出显示?
【发布时间】:2013-01-16 23:21:45
【问题描述】:

好吧,基本上 Vim 突出显示搜索的方式让我不快。基本上你做一个搜索,然后你必须输入 /asdf 或在你的 vimrc 中有这样的快捷方式:

nn <silent> <leader><space> :noh<CR>

这是我所拥有的。但这仍然是太多的脑力劳动。基本上,当我进行搜索时,我希望启用突出显示(就像现在一样),但如果我做的不是循环搜索(使用 n/N),那么我希望关闭突出显示。这基本上是我的工作流程,所以我想知道我是否可以自动化它。另外,如果我搜索,请执行 n/N 以外的操作(应该关闭突出显示),然后再次按 n/N,它应该重新启用。

有什么想法吗?

【问题讨论】:

  • 妥协:让你的映射更简单,例如我发现:nnoremap &lt;silent&gt; &lt;BS&gt; :nohls&lt;CR&gt; 非常直观(一个按键!)。
  • @glts:从下面的相同答案判断,这不是 OP 想要的。

标签: vim macvim


【解决方案1】:

这很难。一个想法是

:autocmd CursorHold * call feedkeys(":noh\<CR>")

(需要使用feedkeys(),因为:nohlsearch 在函数和自动命令中无效。)每当您将光标暂停几秒钟时,这都会清除突出显示。您可以添加其他触发器,例如 InsertEnterCursorHoldI

无效的是CursorMoved,因为搜索和n / N 也会跳转。您需要重载这些命令,在跳转后存储光标位置,并修改 autocmd 以仅在位置不同时清除突出显示。

我的工作:我已将 Enter 映射到 :nohlsearch;方便快捷。

【讨论】:

    【解决方案2】:

    您可以通过以下方式打开或关闭它:

    :set hls

    :set nohls

    我已将 F7 映射到 set hls!:

    noremap <F7>    :set hls!<CR>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-18
      • 1970-01-01
      • 1970-01-01
      • 2011-09-28
      相关资源
      最近更新 更多