我想隐藏基于希腊符号名称的变量,并将它们转换为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="[ _]"
提前致谢!
答案 0 :(得分:3)
修改模式以仅匹配由单词边界或。界定的名称 下划线:
:syntax match scalaNiceKeyword '\(_\|\<\)\zsalpha\ze\(\>\|_\)' conceal cchar=α
答案 1 :(得分:0)
有一个名为unilatex.vim
的脚本,它定义imaps
在打开/写入时执行\alpha => α
以及在保存时进行反向转换。我正在将它用于乳胶代码并修改它以降低反向转换,因为我的乳胶编译器能够正确执行unicode。
我不知道scala源代码是否可以是unicode,但是如果可以的话,你可以查看my version。