其实我想在haskell文件中显示->
和→
(箭头后面有空格)。但我有一个隐藏机制的印象只能用一个字符代替->
。不良影响是视觉上不好的缩进。vim隐藏多个字符
有没有办法做到这一点?
谢谢。
编辑:其实我用这个,(从haskell.vim
(隐瞒增强)插件)
syntax match hsNiceOperator "<-" conceal cchar=←
其实我想在haskell文件中显示->
和→
(箭头后面有空格)。但我有一个隐藏机制的印象只能用一个字符代替->
。不良影响是视觉上不好的缩进。vim隐藏多个字符
有没有办法做到这一点?
谢谢。
编辑:其实我用这个,(从haskell.vim
(隐瞒增强)插件)
syntax match hsNiceOperator "<-" conceal cchar=←
我做的正是你在C.想要什么诀窍是单独隐瞒每一个字符,像这样:
syn match ArrowHead contained ">" conceal cchar=▶
syn match ArrowTail contained "-" conceal cchar=─
syn match ArrowFull "->" contains=ArrowHead,ArrowTail
不幸的是,您可能会发现ArrowHead或ArrowTail在ArrowFull外部匹配。这是因为现有的语法规则使用contains=ALLBUT,...
或类似的东西。
要在C中修复此问题,我将ArrowTail和ArrowHead添加到了cParenGroup群集,这似乎可以防止出现任何问题。
syn cluster cParenGroup add=ArrowTail,ArrowHead
您可能需要为Haskell做类似的事情。
因为我没有使用隐藏功能在所有否则,我告诉Vim继续前进,“隐藏”的箭头所有的时间:
set conceallevel=1 concealcursor=nvic
BTW,如果你不喜欢默认的颜色对于隐藏字符,你可以像这样改变它们:
hi conceal ctermfg=DarkBlue ctermbg=none guifg=DarkBlue guibg=none
“,因为现有的语法规则使用'contains = ALLBUT,...'或类似的东西。” :然后在'syn match ArrowHead [...]'和'syn match ArrowTail [...]''结尾处使用'containedin = ArrowFull'。 – user2987828
@ user2987828这在Vim 7.4中不适用于我。我在#defines中获得了错误的ArrowHeads和ArrowTails。 – superjer
你用什么方法来替换另一个字符? –
我编辑了我的答案,实际上我使用了用于语法突出显示的隐藏mecanism – yogsototh
你可以发布“→→”的编写 - 它似乎对于这个问题至关重要? – sehe