在gvim中突出显示光标下的单词

4
如何在vim中突出显示光标下的单词。 目前,我是通过获取光标下的单词,然后按*键来实现的。当然,这确实会突出显示文本,但如果文件中存在同样的单词,则光标会移动到下一个找到的单词上。但是,我希望光标停留在同一个单词上,同时突出显示它。
4个回答

4
假设您已经打开了hlsearch,根据您描述的*命令,我非常确定您已经打开了这个选项。您可以创建一个映射来设置搜索寄存器。
nnoremap <leader>* :<C-u>let @/ = expand('<cword>')<cr> 

使用映射后,您可以像其他搜索一样使用n/N跳转到下一个/上一个结果。

编辑:

由于您要求我描述映射正在做什么,我将其分解。

  • nnoremap表示创建非递归映射。
  • <leader>*是映射的键序列。默认情况下,<leader>\,因此实际映射是\后跟*。您可以将其更改为任何您想要的内容,我只是用作示例。
  • :<C-u>在这种情况下可能没有用,但我发现这是一个好习惯。它的作用是保证不向即将运行的命令添加范围。
  • let @/ =正在设置/(搜索)寄存器。当您进行普通搜索时,此处存储最后搜索的字符串。我们正在使用映射来操作它,以利用内置的hlsearchn/N功能。
  • expand('<cword>')正在获取光标下的单词。
  • <cr>只是模拟您按下Enter以完成命令。

它没有起作用。我不确定我是否正确映射了它。 我刚刚输入了这个并按下了回车键nnoremap /* :<C-u>let @/ = expand('<cword>') - Sagar Jain
好的。我做到了。然后我按*键来突出显示光标下的单词。但是,光标移动到了下一个找到的单词。 - Sagar Jain
1
“By default <leader> is /” — 我认为你的意思是 \ (反斜杠)。 - mMontu
@mMontu,哦天啊,确实是这样。已经修复了。 - Randy Morris
@SagarJain 这个命令将 <leader>* 映射到这个命令,而不仅仅是普通的 *。 当光标停留在单词上时,请按 \*。 如果您想更改 * 的默认行为,则从映射中删除 <leader> 部分(尽管我不建议这样做!)。 - Randy Morris
显示剩余4条评论

2
你可以尝试使用Mark插件,它可以同时突出显示不同颜色的多个单词。该插件非常稳定,文档详细,易于使用。
可以通过直接选择一个词或使用正则表达式来进行高亮显示,并且该插件提供了一些机制,以在标记的单词/表达式之间跳转。

太好了!我觉得这正是我想要的。目前,我办公室的网络管理员阻止我下载那个插件。等我获得下载权限后,我会尝试使用这个插件。谢谢! - Sagar Jain
那个链接里的插件下载在哪里? 我点击了下载按钮(绿色的在左边),但看起来像是vim可执行文件。 - Sagar Jain
如果您向下滚动,您将看到版本列表及其对应的软件包链接(*.vmb.gz)- 最新版本为2.8.5。您也可以在Github上克隆存储库 - mMontu

1

我该如何在vim中添加一个函数?很抱歉,我是vim新手。 - Sagar Jain
1
@SagarJain 你可以像我一样,在你的vimrc文件中添加这个函数。 - Kent

0
我在 .vimrc 中使用 F3 键来突出显示光标下的单词,方法如下:
nmap /=expand("")N
其中 'N' 用于返回到上一个位置。

这基本上是RandyMorris在上面的答案。有无限数量的重新映射可用来解决这个问题。 - wxz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接