Vim 突出显示 - 有没有办法找出在特定点应用的内容?
Vim highlighting - is there a way to find out what is applied at a particular point?
我正在尝试调整我的突出显示。 Vim 突出显示非常复杂,据我了解,很多规则 运行 确定一段文本的类别,然后将这些规则映射并可能再次映射到最终类别,然后再映射依赖于环境的治疗 (term/cterm/gui)!
因为我在 cterm 上,所以组合比颜色多,所以你会得到重复的,并且在什么地方应用了哪个突出显示类别("group"?)并不总是很明显。
我想将光标放在突出显示的单词和 运行 一个命令上,以查看匹配的突出显示规则以及如何将其映射到最终处理。
这是一项功能吗?可能吗?
创建这样的映射:
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>
并在任何标记上使用 F1 以查看突出显示。
要找出哪个语法组导致突出显示,:syn list
会显示所有活动组,但安装 SyntaxAttr.vim - Show syntax highlighting attributes of character under cursor 插件后会更容易。我发现这个插件对于故障排除和开发语法插件是必不可少的! (基本上,它是@svlasov 答案的高级版本。)
我正在尝试调整我的突出显示。 Vim 突出显示非常复杂,据我了解,很多规则 运行 确定一段文本的类别,然后将这些规则映射并可能再次映射到最终类别,然后再映射依赖于环境的治疗 (term/cterm/gui)!
因为我在 cterm 上,所以组合比颜色多,所以你会得到重复的,并且在什么地方应用了哪个突出显示类别("group"?)并不总是很明显。
我想将光标放在突出显示的单词和 运行 一个命令上,以查看匹配的突出显示规则以及如何将其映射到最终处理。
这是一项功能吗?可能吗?
创建这样的映射:
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>
并在任何标记上使用 F1 以查看突出显示。
要找出哪个语法组导致突出显示,:syn list
会显示所有活动组,但安装 SyntaxAttr.vim - Show syntax highlighting attributes of character under cursor 插件后会更容易。我发现这个插件对于故障排除和开发语法插件是必不可少的! (基本上,它是@svlasov 答案的高级版本。)