В Vim, как сохранить символы скрыты, даже когда курсор входит в эту строку

У меня может быть уникальная ситуация. Я хочу, чтобы gVim (версия gui, в Linux) скрывала скрытые символы, несмотря ни на что, даже если курсор находится на этой строке или этот символ выбран. (Он должен быть как можно ближе к тому, чтобы символы никогда не существовали по возможности.) В настоящее время скрытые символы отображаются, когда курсор входит в эту строку, что заставляет текст прыгать при прокрутке и при выборе текста.

Мы используем gView (только для чтения gVim) для просмотра журналов, чтобы воспользоваться его надежной подсветкой синтаксиса. Проблема заключается в том, что эти журналы содержат много символов escape и цветовых кодов TTY, что затрудняет чтение. (^ [33mSomeText ^ [0m)

Я использую эту строку, чтобы скрыть их:

syntax match Ignore /\%o33\[[0-9]\{0,5}m/ conceal

Так как файлы просматриваются не-vim-экспертами, он выглядит глючным и сломанным, когда текст не скрывает себя. (И также выглядит глючным и сломанным, если цветовые коды присутствуют, а также выглядит глючным и сломанным, если цветовые коды затемнены, чтобы стать невидимыми, но все же показывают, когда они выбраны и появляются после копирования/вставки.)

Это должно быть хорошо, потому что:

Эти файлы открываются только для чтения в gview, с дополнительным "набором номодифицируемых", что еще более затрудняет сохранение файла. Несмотря на то, что можно редактировать и пытаться сохранить журналы, это считается недействительной вещью и безвредной задачей, и требует достаточных навыков Vim, которые "если кто-то сумеет отредактировать файл, он знает, что они делать". Проблема с возможностью редактирования строки со скрытым текстом не применяется.

Если "hidden" не может быть сконфигурирован, чтобы скрывать скрытый текст, независимо от того, приемлемой альтернативой было бы заменить цветовые коды TTY пробелами при открытии файла. Но это должно быть сделано в режиме только для чтения, и мы не можем иметь gview, чтобы открыть диалог сохранения при закрытии окна, потому что файл был изменен его .vimrc.

Примечание. Я полностью контролирую файл .vim script, полученный при их чтении, но не могу контролировать наличие цветовых кодов TTY или кода, который открывает файлы журнала в gview. (т.е. я не могу передать его через sed или что-то в этом роде.) Идеальное решение - это все, что может прозрачно наносить цветовые коды из .vimrc, но я услышу любые предложения. Функция "скрытия" - это всего лишь мое самое многообещающее руководство.

Итак, любые идеи о том, как навсегда избавиться от них при просмотре файлов без появления диалогов при закрытии?

Ответ 1

:help conceal

Когда дается аргумент "скрывать", элемент отмечен как скрытный. Независимо от того, действительно ли оно скрыто, зависит от значения опция 'capallevel'. Опция "маскировка" используется для определения того, скрытые элементы в текущей строке отображаются нескрываемыми, чтобы иметь возможность отредактируйте строку.

:help concealcursor

Устанавливает режимы, в которых текст в строке курсора также может быть скрыт. Когда текущий режим указан, скрытие происходит так же, как в другие строки.

  • n Нормальный режим
  • v Визуальный режим
  • я Режим вставки
  • c Редактирование командной строки, для 'incsearch'

'v' применяется ко всем строкам в области Visual, а не только к курсору. Полезным значением является "nc". Это используется в файлах справки. Пока вы перемещаются вокруг текста, скрываются, но при вставке текста или выбирая визуальную область, отображается скрытый текст, так что вы можете видеть, что вы делаете. Имейте в виду, что позиция курсора не всегда там, где это отображается. Например, при перемещении по вертикали он может изменять столбец.

Кроме того, :help conceallevel

Определите, как текст с атрибутом "скрывать" синтаксиса |: syn-conceal |:

Эффект ценности ~

  • 0 Текст отображается нормально
  • 1 Каждый блок скрытого текста заменяется одним       персонаж. Если элемент синтаксиса не имеет настраиваемого       символ замены (см. |: syn-cchar |)       используется символ, определенный в "listchars" (по умолчанию используется       пространство).       Он выделяется группой выделения "Скрывать".
  • 2 Скрытый текст полностью скрыт, если он не имеет       пользовательский символ замены определен (см.       |:. Син-cchar |)
  • 3 Скрытый текст полностью скрыт.