Подтвердить что ты не робот

Vim скрывает более одного символа

На самом деле я хотел бы отображать -> с (есть пробел после стрелки) в файлах haskell. Но у меня создается впечатление, что механизм скрытия работает только на замену -> на один символ. Нежелательным эффектом является визуально плохое отступы.

Есть ли способ достичь этого?

Спасибо.

Изменить: На самом деле я использую это, (из haskell.vim (скрыть расширение) плагин)

syntax match hsNiceOperator "<-" conceal cchar=←
4b9b3361

Ответ 1

Я делаю именно то, что вы хотите в 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

Кстати, если вам не нравятся цвета по умолчанию для скрытых символов, вы можете их изменить следующим образом:

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