Ответ 1
Я думаю, что ваша идея имеет один основной недостаток: никто никогда не думал о том, чтобы разрешить такую вещь.
Очевидно, что vim способен выполнять подсветку синтаксиса. Но я готов поспорить, что вы используете конус мороженого, который, если вам удастся получить vim, чтобы передать текст и обработать его, вам не понравятся результаты.
Посмотрите, что происходит, когда вы передаете текст через more
(или less
, если хотите). Когда он идет на терминал, эти программы отображают один экранный экран и ждут, пока вы нажмете пробел. Но если вы перенаправляете stdout в другое место, кроме терминала, эти программы замечают это и просто копируют свой вход в свой вывод без изменений.
Если vim не замечает, что вы прокладываете текст, вы можете отправить команды перемещения курсора, которые вы, вероятно, не хотите в своем выходе. Если vim замечает, скорее всего, просто передаст текст, а не синтаксис - покрасит его. Только если vim делает синтаксис-раскраску, но не добавляет движений курсора, ваша идея будет работать.
Вы можете попробовать. Вот ответ, в котором обсуждаются пробки через vim:
Выполнить команду из Vim из командной строки
Но я говорю, почему бы не пропустить текст через программу, которая была разработана и предназначена для передачи текста через нее? Пигменты могут раскрашивать каждый основной язык программирования и формат разметки.
Главное преимущество, которое я вижу в вашей идее: вы можете настроить способ синтаксической раскраски vim, получить его так, как вы этого хотите, а затем использовать vim для обработки вашего текста. Но, вероятно, не так сложно настроить Pyigs, и это может быть даже удовлетворительным из коробки, и в этом случае это, безусловно, будет самым простым способом. И Pyigs не только имеет выход ANSI-последовательности, но также имеет выход HTML, RTF, LaTeX и т.д. Поэтому, если вы получаете Pyigs, работающие так, как вы этого хотите, он должен иметь возможность выводить любой формат вывода, который вам нужен; vim будет иметь только последовательность ANSI.