【问题标题】:How do I turn on search highlighting from a vim script?如何从 vim 脚本打开搜索突出显示?
【发布时间】:2010-12-20 16:27:37
【问题描述】:

如果我做以下两种之一:

call search("searchString")

exec "/ searchString"

从脚本中,vim 执行搜索但不突出显示结果,即使 hlsearch.从脚本外部执行相同的搜索会突出显示结果。

【问题讨论】:

  • 我自己找到了答案.. 总是这样。这里是: call search(l:searchString) call matchadd('Search', l:searchString)
  • 请在此处添加您的答案作为真实答案。当您真正在寻找答案时,很难发现评论。

标签: vim


【解决方案1】:

我相信这在函数内部有效 (仅启用突出显示,仅此而已):

call feedkeys(":\<C-u>set hlsearch \<enter>")

【讨论】:

    【解决方案2】:

    feedkeys()

    功能是关键(双关语):

    call feedkeys("/pattern\<CR>")
    

    或更清洁:

    " highlights – or doesn’t – according to 'hlsearch' option
    function SearcH(pattern)
        let @/ = a:pattern
        call feedkeys("/\<CR>")
    endfunction 
    

    【讨论】:

    • 这对我有用。这类似于在搜索后使用“n”按钮。但是我有一个非常长的搜索字符串。是否可以在不看到下面的搜索字符串的情况下突出显示匹配项?
    【解决方案3】:

    在这里找到答案: http://vim.1045645.n5.nabble.com/highlighting-search-results-from-within-a-function-tt5709191.html#a5709193

    ```

    一个解决方案是

    function! XXXX() 
        execute '/this' 
        return @/ 
    endfunction 
    

    并使用以下内容代替 ":call XXXX()"。

    :let @/ = XXXX() 
    

    ```

    【讨论】:

      【解决方案4】:

      要打开,请按 ESC 输入:set hls

      要关闭,请按 ESC 输入:set nohls

      【讨论】:

        【解决方案5】:

        我知道这已经晚了。然而,当我搜索这个问题的答案时,这个页面出现了。所以我觉得有必要帮助解决它。

        调用搜索(l:searchString)

        调用 matchadd('Search', l:searchString)

        对我不起作用。 (从函数内部运行时)它确实突出了我想要搜索的单词,但 n/N 不会在它们之间循环。此外,当我执行新搜索时,“l:serachStirng”模式仍然突出显示。这个链接上的答案效果更好

        Vim search and highlighting control from a script

        这给了我:

        让@/ = l:searchString

        然后运行

        正常的n

        在功能之外(因此突出显示立即完成,无需用户按 n)

        【讨论】:

          【解决方案6】:

          刚刚自己找到了答案:

          call search(l:searchString)
          call matchadd('Search', l:searchString)
          

          【讨论】:

          • 这是否允许在下一个/上一个匹配中正常使用 n/N?
          • 这真的很有帮助!
          • @alesplin: This 下面的回答说不。我发布了solution
          【解决方案7】:

          你需要把它放在你的 .vimrc 文件中

          " Switch syntax highlighting on, when the terminal has colors
          " Also switch on highlighting the last used search pattern.
          if &t_Co > 2 || has("gui_running")
            syntax on
            set hlsearch
          endif
          

          .vimrc 文件通常位于您的主目录中,或者您可以使用 "locate .vimrc" 找到它

          【讨论】:

          • 这是关于 vim 中的脚本,一般不开启高亮搜索和语法高亮。
          猜你喜欢
          • 2010-10-20
          • 1970-01-01
          • 2010-10-14
          • 2020-04-12
          • 2011-05-14
          • 2011-09-28
          • 2012-05-21
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多