如何在Vim中使用一种语法高亮显示和两种不同的开始/结束设置?

时间:2011-08-11 17:19:26

标签: vim syntax-highlighting

让我们说我有一个文件:memovi.txt(学习vi ...),其中每一行都有相同的结构(命令冒号解释);例如:

  

dw:从当前光标位置删除到下一个单词

(注意:文字白色,背景黑色)

现在,我想做两件事:

1)以绿色突出显示该命令 我通过定义一个带开始和结束的区域来做到这一点,我用start =≈,end =≈

所以,在我的.vimrc中我有:

:command Tran :source syntax.vim

在我的syntax.vim中,我有:

syn region cTran conceal start='≈' end='≈'
hi cTran ctermbg=Black ctermfg=DarkGreen

2)但我希望,当然,我希望插入一个例子(例如,d4w),并用不同的颜色(洋红色)突出显示它,我想通过将它放在start =•和end =之间来强调它• 带来如下结果:

  

≈dw≈(因此为绿色):从当前光标位置删除到   下一个字。 •d4w•(因此为品红色):删除4个字

但似乎我无法使用两种不同的“着色”来定义一种语法高亮显示,具体取决于两个不同的开始/结束集。或者我可以吗?

提前致谢

1 个答案:

答案 0 :(得分:2)

vim帮助文件语法(help.vim)是此行为的一个很好的模板。它使用栏“|”分隔帮助超链接。然后隐藏吧。

这是syntax.vim,它应该达到你想要的ASCII分隔符|=。我没有用你的Unicode字符对它进行测试,但是我不明白为什么要改变它(尽管我在Unicode的变幻莫测中没有学过它)。

syn match cTransA "|.*|" contains=delimA
syn match cTransB "=.*=" contains=delimB
syn match delimA contained '|' conceal
syn match delimB contained '=' conceal
hi cTransA ctermfg=DarkGreen
hi cTransB ctermfg=Magenta

希望这有帮助。