it-swarm-ru.tech

Как сделать так, чтобы Vim отображал цвета в соответствии с цветовыми кодами?

Короче говоря, я пытаюсь заменить less на vim (vimpager). У меня есть настройки для скриптов, чтобы выплевывать цвета (и жирный и все хорошо), когда они могут. less понимает цветовые коды и хорошо их отображает. Как я могу заставить vim анализировать коды и отображать цвета/жирность, как это делает less?

62
phunehehe

Два ответа:

Коротко: вы хотите использовать скрипт vim AnsiEsc.vim . Он будет скрывать фактические escape-последовательности ANSI в вашем файле и использовать подсветку синтаксиса для соответствующего цвета текста. Проблема с использованием этого в пейджере заключается в том, что вам нужно будет заставить vim распознавать, когда использовать это. Я не уверен, можете ли вы просто всегда загружать его или он будет конфликтовать с другими файлами синтаксиса. Вам придется экспериментировать с этим.

Длинный ответ: лучшее, на что вы можете надеяться, это частичное непереносимое решение. Less фактически не понимает escape-последовательности терминала, поскольку они в значительной степени зависят от терминала, но less может распознать их (подмножество) и будет знать, как передать их на терминал, если вы используете -r (или -R) вариант. Терминал интерпретирует escape-последовательности и изменяет атрибуты текста (цвет, жирный, подчеркивание ...). Vim, будучи редактором, а не пейджером, не просто передает необработанные управляющие символы в терминал. Он должен отображать их каким-то образом, чтобы вы могли их редактировать. Вы можете использовать другие функции vim, такие как скрытие и подсветка синтаксиса, чтобы скрыть последовательности и использовать их для установки цветов текста, однако он всегда будет обрабатывать только подмножество последовательностей терминалов и, вероятно, не будет работать на некоторых терминалах. ,.

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

45
Jan Hlavacek

Теперь с vim 8 вы можете использовать режим терминала :terminal, а затем в этом терминале сделать cat myfile и ​​вернитесь в обычный режим с помощью Ctrl-w N. Это будет правильно отображать цветовые коды ANSI. Автоматизируя эти шаги и читая данные из стандартного ввода вместо файла, можно использовать vim для замены less.

4
rubystallion