gpt4 book ai didi

vim - 如何在双击时突出显示 vim 中出现的所有单词

转载 作者:行者123 更新时间:2023-12-02 08:44:45 25 4
gpt4 key购买 nike

当我在 Windows 上时,我使用 notepad++,在 Linux 上我使用 vim。我真的很喜欢vim。但在 notepad++ 中至少有一件事我觉得非常有趣。您可以双击某个单词,它会自动突出显示该单词的所有出现位置。我想知道我是否可以用 vim 做类似的事情?所以问题是当你在 vim 中双击某个单词时如何突出显示该单词的所有出现位置。

显然,我不想搜索该单词,或更改光标位置,只是突出显示。我的 :set hlsearch 也已打开。

也许你可能想避免在 vim 中使用鼠标,但我在这里异常(exception):)。

我知道 * 可以完成相同的工作,但是鼠标呢?

最佳答案

如果你想突出显示光标下的单词,例如 * ,但是不想想要移动光标,那么我建议如下:

nnoremap <silent> <2-LeftMouse> :let @/='\V\<'.escape(expand('<cword>'), '\').'\>'<cr>:set hls<cr>

基本上,此命令将搜索寄存器 ( @/ ) 设置为当前字并打开 'hlsearch'因此结果会突出显示。通过设置@/光标没有像 * 那样移动或# .

说明:

  • <silent> - 执行后不显示命令
  • <2-LeftMouse> - 双击鼠标左键
  • @/是用于搜索 / 的寄存器和?
  • expand('<cword>')获取光标下当前单词
  • escape(pattern, '\')如果存在元字符,则转义正则表达式
  • \V使用非常非魔术模式,因此所有元字符都必须使用 / 进行转义
  • \<\>确保当前单词位于单词边界
  • set hls设置'hlsearch'这样突出显示就会出现

如果设置@/注册不是您喜欢的,您可以使用 :match像这样:

nnoremap <silent> <2-leftMouse> :exe 'highlight DoubleClick ctermbg=green guibg=green<bar>match DoubleClick /\V\<'.escape(expand('<cword>'), '\').'\>/'<cr>

要清除匹配项,只需使用:

:match none

关于vim - 如何在双击时突出显示 vim 中出现的所有单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6876850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com