:match StatusLineTerm /session/
其中
StatusLineTerm
只是具有我喜欢的颜色的现有高光组的名称。这个match
命令使用光标下的单词作为匹配模式?像nnoremap <F5> :match StatusLineTerm /.expand(<cword>)/
一样,但实际上可以工作吗?#1 楼
要快速解决,请尝试以下操作::nnoremap <F5> :match StatusLineTerm /<C-R><C-W>/<CR>
它使用Ctrl-RCtrl-W将光标下方的单词插入命令行。请参阅
:help c_CTRL-R_CTRL-W
。#2 楼
我为此使用一个插件:有趣的单词。它并不大,因为它的唯一功能是将具有定义的颜色或随机颜色的单词高亮显示,优点是在单个键下可以具有多个颜色/高亮显示。如果需要,您也可以轻松清除使用该插件完成的所有突出显示。#3 楼
我为此使用mark.vim-plugin。它可以同时处理许多有趣的单词,并允许在突出显示的单词之间跳转。#4 楼
在将光标停留一小段时间后,您将自动执行以下操作::au CursorHold * :exec 'match Search /\V\<' . expand('<cword>') . '\>/'
默认情况下,这将在闲置4秒钟后突出显示光标下方的单词。使用
:set updatetime=100
使其在0.1秒后发生。如果要在脚本中而不是一次性完成此操作,请将其放在自动组中,这样就不必每次都添加新的
CursorHold
自动命令脚本运行:augroup highlight_current_world
au!
au CursorHold * :exec 'match Search /\V\<' . expand('<cword>') . '\>/'
augroup END
评论
欢迎来到Vi和Vim!您可能希望通过自动分组显示此信息,因为这是最佳做法。
– D. Ben Knoble♦
20年6月1日在23:27
我绝对不想这样做,但是非常感谢,这是一个很酷的窍门!
–lesnik
20年6月2日在6:52
@ D.BenKnoble好主意,完成了。
–塔基斯
20年6月2日在23:13
#5 楼
您表明您正在尝试使映射与<cword>
一起使用。尽管您接受的答案很好,但我很惊讶没有人正确使用该答案。通常,映射的RHS上的字符串实际上是作为Ex命令执行的。不会进行字符串的预扩展/评估/处理。因此,
:match
in :nnoremap <F5> :match StatusLineTerm /.expand(<cword>)./
(沿着您的尝试行)将尝试从字面上匹配字符串'.expand(
如果要扩展/求值字符串或字符串的一部分,我们必须自己将其作为表达式传递给
:exec
命令::exec 'match StatusLineTerm /' . expand('<cword>') . '/'
请注意,我们用引号将要使用的所有部分都用引号引起来,并用
.
附加它们。其余的被评估。 (还请注意,<cword>
是一个特殊的字符串,在传递给expand()
之前需要加引号。)因此,您最初想要的映射是:
:nnoremap <F5> :exec 'match StatusLineTerm /' . expand('<cword>') . '/'<CR>
评论
并非完全是我想要的(例如,我不想在有趣的单词之间导航),但这是需要调查或可以使用的东西。
–lesnik
18/09/26'9:02