Vim突出显示-是否有办法找出在特定点应用的内容?

Vim突出显示-是否有办法找出在特定点应用的内容?,vim,Vim,我正试图调整我的突出显示。Vim高亮显示非常复杂,据我所知,许多规则运行以确定一点文本的类别,然后这些规则被映射并可能再次映射到最终类别,然后映射到依赖于环境的处理(term/cterm/gui) 由于我在cterm上使用的组合比颜色多,所以您会得到重复的组合,并且在哪里应用了突出显示类别(“组”)并不总是很明显 我想将光标放在高亮显示的单词上,然后运行一个命令来查看高亮显示规则匹配的内容以及如何将其映射到最终处理 这是一个特征吗?有可能吗?创建这样的映射: nm <silent>

我正试图调整我的突出显示。Vim高亮显示非常复杂,据我所知,许多规则运行以确定一点文本的类别,然后这些规则被映射并可能再次映射到最终类别,然后映射到依赖于环境的处理(term/cterm/gui)

由于我在cterm上使用的组合比颜色多,所以您会得到重复的组合,并且在哪里应用了突出显示类别(“组”)并不总是很明显

我想将光标放在高亮显示的单词上,然后运行一个命令来查看高亮显示规则匹配的内容以及如何将其映射到最终处理

这是一个特征吗?有可能吗?

创建这样的映射:

nm <silent> <F1> :echo "hi<" . synIDattr(synID(line("."),col("."),1),"name")
    \ . '> trans<' . synIDattr(synID(line("."),col("."),0),"name")
    \ . "> lo<" . synIDattr(synIDtrans(synID(line("."),col("."),1)),"name")
    \ . ">"<CR>
nm:echo“hi-lo”

并在任何标记上使用F1来查看突出显示。

要找出哪个语法组导致突出显示,
:syn list
显示所有活动组,但安装插件时更容易。我发现这个插件对于排除故障和开发语法插件是必不可少的!(基本上,这是@svlasov答案的高级版本。)

太棒了!vimscript对我来说就像伏都教-不知道!因此,它输出
hi
(突出显示组的名称)和
trans
lo
?是的,在
上执行,而C中的
关键字显示
hi trans-lo
trans和lo是什么意思?
trans
表示透明项目突出显示,
lo
用于继承的突出显示。通常它们是一样的,但并不总是一样的。阅读更多
:h transparent
当hlsearch打开时,它不回显
搜索
突出显示组的原因是什么@SVLASOV可能重复的