Как сделать так, чтобы Vim отображал цвета в соответствии с цветовыми кодами?
61
Короче, я пытаюсь заменить lessна vim( vimpager). У меня есть настройки для скриптов, чтобы выкладывать цвета (и жирный и все хорошо), когда они могут. lessпонимает цветовые коды и отображает их красиво. Как я могу сделать vimсинтаксический анализ кодов и отобразить цвета / жирность, как это lessпроисходит?
Коротко: вы хотите использовать vim-скрипт AnsiEsc.vim . Он будет скрывать фактические escape-последовательности ANSI в вашем файле и использовать подсветку синтаксиса для соответствующего цвета текста. Проблема с использованием этого в пейджере заключается в том, что вам нужно будет заставить vim распознавать, когда использовать это. Я не уверен, можете ли вы просто всегда загружать его или он будет конфликтовать с другими файлами синтаксиса. Вам придется экспериментировать с этим.
Длинный ответ: лучшее, на что вы можете надеяться, это частичное непереносимое решение. Less фактически не понимает escape-последовательности терминала, поскольку они в значительной степени зависят от терминала, но less может распознать их (подмножество) и будет знать, как передать их на терминал, если вы используете -r(или-R) вариант. Терминал интерпретирует escape-последовательности и изменяет атрибуты текста (цвет, жирный, подчеркивание ...). Vim, будучи редактором, а не пейджером, не просто передает необработанные управляющие символы в терминал. Он должен отображать их каким-то образом, чтобы вы могли их редактировать. Вы можете использовать другие функции vim, такие как скрытие и подсветка синтаксиса, чтобы скрыть последовательности и использовать их для установки цветов текста, однако он всегда будет обрабатывать только подмножество последовательностей терминалов и, вероятно, не будет работать на некоторых терминалах. ,
Это действительно одна из многих проблем, с которыми вы столкнетесь, когда попытаетесь использовать текстовый редактор в качестве пейджера.
Короче говоря, вы должны написать часть эмулятора терминала в Vim, которая обрабатывает escape-последовательности терминала, которые присутствуют в вашем входе.
Жиль "ТАК - перестань быть злым"
Спасибо, я думаю, что сдаюсь. Если это не легко, это больше не имеет особого смысла.
Теперь с vim 8 вы можете использовать режим терминала, :terminalа затем в этом терминале сделать cat myfileи вернуться в обычный режим с помощью Ctrl-w N. Это будет правильно отображать цветовые коды ANSI. Автоматизируя эти шаги и читая данные из стандартного ввода вместо файла, можно использовать vim для замены less.
Это не отвечает на вопрос вообще. Как это заменить less?
ossbuntu
@ossbuntu Если вы бежите , ls --color=always >/tmp/colored.txtа затем в Vim с :terminal cat /tmp/colored.txtпоследующим :only, то вы будете иметь выход LS красиво окрашенный в Vim , как меньше будет делать. Поскольку vim поддерживает передачу команд в качестве аргументов командной строки при запуске, очевидно, что можно less
less -r FILE
( источник )Теперь с vim 8 вы можете использовать режим терминала,
:terminal
а затем в этом терминале сделатьcat myfile
и вернуться в обычный режим с помощью Ctrl-w N. Это будет правильно отображать цветовые коды ANSI. Автоматизируя эти шаги и читая данные из стандартного ввода вместо файла, можно использовать vim для замены less.источник
less
?ls --color=always >/tmp/colored.txt
а затем в Vim с:terminal cat /tmp/colored.txt
последующим:only
, то вы будете иметь выход LS красиво окрашенный в Vim , как меньше будет делать. Поскольку vim поддерживает передачу команд в качестве аргументов командной строки при запуске, очевидно, что можноless