Vim语法隐藏在上下文中

时间:2012-05-07 06:49:18

标签: vim syntax

我想隐藏基于希腊符号名称的变量,并将它们转换为Unicode等效符号,类似于vim-cute-python的工作方式。所以,例如,我有这个

syntax match scalaNiceKeyword "alpha" conceal cchar=α

在文件中定义用于隐藏Scala文件,除了它过于激进之外,它工作得很好。如果我写alphabet,那么它会被隐藏成αbet,这显然是错误的。如何修改/扩展此隐藏声明,以便它只隐藏与“[_] alpha [_]”匹配的关键字,即我希望进行以下转换

alpha_1 => α_1
alpha => α
alphabet => alphabet

注意:这类似于this question,但由于我想要匹配的组环境是空格和下划线,因此它似乎稍微复杂一些。天真地定义像下面这样的语法区域会使事情变得多种多样:

syn region scalaGreekGroup start="[ _]" end="[ _]"

提前致谢!

2 个答案:

答案 0 :(得分:3)

修改模式以仅匹配由单词边界或。界定的名称 下划线:

:syntax match scalaNiceKeyword '\(_\|\<\)\zsalpha\ze\(\>\|_\)' conceal cchar=α

答案 1 :(得分:0)

有一个名为unilatex.vim的脚本,它定义imaps在打开/写入时执行\alpha => α以及在保存时进行反向转换。我正在将它用于乳胶代码并修改它以降低反向转换,因为我的乳胶编译器能够正确执行unicode。 我不知道scala源代码是否可以是unicode,但是如果可以的话,你可以查看my version