其實我想在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