Как вывести выделенный исходный код в файл для использования вне vim

9

На своем рабочем месте я хочу сделать презентацию собственного языка, который я разработал для решения некоторых проблем, которые у нас были. Для облегчения разработки я создал свой собственный файл синтаксиса vim для этого конкретного языка.

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

Было бы идеально, если бы я мог less -rполучить файл с той же подсветкой синтаксиса, что и на моем собственном компьютере.

Однако я не знаю, как копировать и вставлять, сохраняя цвета (в терминале из gnome в Debian), или как вывести файл с подсветкой синтаксиса в виде необработанных контрольных символов из vim. Я более уверен в поиске решения от vim, но я не знаю, что искать для этого.

Знаете ли вы какой-нибудь способ вывести файл, который вы открыли, с подсветкой синтаксиса как ANSI raw-control-chars в другом файле?

DainDwarf
источник

Ответы:

13

Вы можете использовать :TOhtmlкоманду, поставляемую с Vim, чтобы создать HTML-представление (выделенный синтаксис) буфера (или его частей). Тогда ваше единственное требование в целевой системе - браузер для отображения захваченного файла. Смотрите :help :TOhtmlподробности.

Если вы настаиваете на выводе escape-последовательностей ANSI, вы, вероятно, могли бы изменить плагин, чтобы сделать это, но я думаю, что это будет нетривиальным усилием.

Инго Каркат
источник
3
БОЖЕ МОЙ! Это так прекрасно, я бы хотел повторить ваш ответ не один раз.
DainDwarf
2

Программа vimpager включает в себя скрипт под названием «vimcat». Он может выводить файл с подсветкой синтаксиса vim, преобразованный в escape-коды ANSI.

(Дополнительная самореклама: я написал форк для neovim: nvimpager .)

Лукас
источник
1

[РЕДАКТИРОВАТЬ]: Просто заметил, что cat не делает трюк при использовании vim и script, однако вы можете использовать 'head'.

guest@demomachine$ head -c [terminalsize] demo.typescript

EXAMPLE: guest@demomachine$ head -c 3710 demo.typescript

Если на презентационном компьютере доступен цветной терминал и он основан на * nix, вы можете записать сценарий с

you@yourmachine$ script -c "vim [sourcefile]" demo.typescript

а потом просто

guest@demomachine$ cat demo.typescript

cat может не работать с vim и script для этой проблемы, см. выше.

на презентации машины. СОВЕТ: учитывайте размер терминала во время записи, он должен быть меньше или соответствовать размеру демонстрационной машины.

Скрипт также позволяет вам записывать весь сеанс терминала, так что вы можете записывать и воспроизводить демо, используя scriptreplay.

рок
источник