vim

2011-11-29 21 views
12

Aslında ile -> görüntülemek istediğiniz birden fazla karakteri ile gizlemeye haskell dosyalarında (ok sonra bir boşluk vardır). Ancak, gizleme mekanizmasının yalnızca ->'u tek bir karakterle değiştirmeye çalıştığı izlenimine sahibim. İstenmeyen bir etki görsel olarak kötü girinti.vim

Bunu başarmanın bir yolu var mı?

Teşekkürler.

Düzenleme: Aslında (() eklentisi geliştirme gizlemek haskell.vim itibaren) bu kullanmak

syntax match hsNiceOperator "<-" conceal cchar=← 
+0

Bir karakteri başka bir karakterle değiştirmenin yolu nedir? –

+0

Sana ait compisition gönderebilir – yogsototh

+0

dizim için kullanılan gizlemek mecanism kullanmak aslında benim cevap düzenlendi ' "→"' - bu soruya çok önemli olduğu görülmektedir? – sehe

cevap

16

Ben tam olarak C. istediğini hile şöyle ayrı ayrı her bir karakteri gizlemeye olduğunu yapın:

syn match ArrowHead contained ">" conceal cchar=▶ 
syn match ArrowTail contained "-" conceal cchar=─ 
syn match ArrowFull "->" contains=ArrowHead,ArrowTail 

ArrowHead veya ArrowTail maalesef bir ArrowFull dışında eşleşti alır olduğunu görebilirsiniz . Bunun nedeni, mevcut sözdizimi kurallarının contains=ALLBUT,... veya benzeri bir şey kullanmasıdır.

C Bunu düzeltmek için, ben ArrowTail ve ArrowHead herhangi bir sorun önlemek görünüyor cParenGroup kümeye eklenir.

syn cluster cParenGroup add=ArrowTail,ArrowHead 

Haskell için benzer bir şey yapmanız gerekebilir. Varsayılan renkleri beğenmezseniz BTW

set conceallevel=1 concealcursor=nvic 

: Ben hiç aksi gizlemek özelliği kullanmayın yana

, ben Vim oklar TÜM zaman "gizlemek" devam edin ve hiç söyle Gizleme karakterleri için bunları aşağıdaki gibi değiştirebilirsiniz:

hi conceal ctermfg=DarkBlue ctermbg=none guifg=DarkBlue guibg=none 
+0

"Çünkü varolan sözdizimi kuralları = içerir = ALLBUT, ..." veya benzer bir şey. " : '' syne ArrowHead [...] 've' syning ArrowTail [...] 'ile eşleşir. – user2987828

+0

@ user2987828 Bu, Vim 7.4'te benim için çalışmıyor. #defines içinde yanlış pozitif ArrowHeads ve ArrowTails alıyorum. – superjer