Vim:搜索光标下的单词(不是 * 或 #)

Pax*_*ali 1 vim neovim

我想复制 Sublime Text 的“CTRL-D”行为,突出显示光标下的当前单词。

*并且#在这里不起作用,因为它们会自动移动光标(如nN),这是我明确不想要的。

为了突出显示光标下的当前单词,我发现以下方法是有效的:

yiw
:let @/=@@
:set hls
Run Code Online (Sandbox Code Playgroud)

如果您手动输入此内容,它会按预期正常工作。

我的问题是,我只是不明白我把它放在键盘映射上以便绑定它时做错了什么。

到目前为止我尝试过的是:

  1. 创建一个函数,然后将其映射到一个键:

    function SearchWordUnderCursor()
        silent! yiw
        silent! :let @/ = @@
        silent! :set hls
    endfunction
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用内联键绑定,如下所示:

    nmap <C-D> yiw | :let @/ = @@ | :set hls
    
    Run Code Online (Sandbox Code Playgroud)

这两种方法都不能按预期工作,我不知道我做错了什么。

搜索模式/寄存器设置得很好,但立即突出显示不起作用,您必须手动nN一次才能显示突出显示,但这会移动光标,而不是“手动”方法。

为什么它像手动输入一样很难完成?

我正在使用 NVIM v0.2.2。

D. *_*ble 5

一个简单的、非光标移动的解决方案是

nnoremap <C-D> *N
Run Code Online (Sandbox Code Playgroud)