突出显示光标下的单词,但光标下的单词除外

突出显示光标下的单词,但光标下的单词除外

我有一个autocmd触发器CursorMoved,它将match与光标下的单词相同的单词作为语法规则,只是反转前景/背景。

我使用它来查找所有与光标下的单词相同的单词,以便立即检查拼写错误。如下所示:

autocmd CursorMoved * exe printf('match lCursor /\V\<%s\>/', escape(expand('<cword>'), '/\'))

我怎样才能从比赛中排除当前行?

答案1

为了避免当前行上的任何匹配,可以使用:help /\%l特殊原子来匹配当前行号,然后通过以下方式断言不匹配负面前瞻

exe printf('match lCursor /\V\%%%dl\@!\<%s\>/', line('.'), escape(expand('<cword>'), '/\'))

但在你的回答中你也指出当前单词(不是整行)不应突出显示。这可以通过负向前瞻再次实现,断言光标(\%#)不在当前关键字(\<\k*...\k*\>)内( \&) 也匹配当前单词:

exe printf('match lCursor /\V\%%(\<\k\*\%%#\k\*\>\)\@!\&\<%s\>/', escape(expand('<cword>'), '/\'))

相关内容