Jak wypisać podświetlony kod źródłowy do pliku, aby użyć go poza vimem

9

W moim miejscu pracy chcę przeprowadzić prezentację niestandardowego języka, który opracowałem w celu rozwiązania niektórych problemów, które mieliśmy. Aby ułatwić programowanie, stworzyłem własny plik składni vim dla tego konkretnego języka.

Teraz muszę go przedstawić na innym komputerze, który nie będzie miał tego pliku składni. Z tego co wiem, może nawet nie mieć zainstalowanego vima (ale wątpię).

Byłoby idealnie, gdybym mógł less -ruzyskać plik z taką samą podświetleniem składni, co na własnym komputerze.

Nie wiem jednak, jak kopiować i wklejać zachowując kolory (w terminalu z gnome na Debianie), ani jak wyprowadzać plik z podświetleniem składni jako surowe znaki kontrolne z vima. Jestem bardziej pewny znalezienia rozwiązania od vima, ale nie mam pojęcia, czego szukać, aby to zrobić.

Czy znasz jakiś sposób, aby wyświetlić plik, który otworzyłeś, z wyróżnieniem jego składni jako znaki ANSI raw-control-char w innym pliku?

DainDwarf
źródło

Odpowiedzi:

13

Możesz użyć :TOhtmlpolecenia dostarczonego z Vimem, aby utworzyć reprezentację HTML bufora (podświetlonego składnią) (lub jego części). Następnie jedynym wymaganiem w systemie docelowym jest przeglądarka do wyświetlania przechwyconego pliku. Zobacz :help :TOhtmlszczegóły.

Jeśli nalegasz na wyprowadzenie sekwencji ucieczki ANSI, prawdopodobnie możesz zmodyfikować wtyczkę, aby to zrobić, ale sądzę, że nie byłby to trywialny wysiłek.

Ingo Karkat
źródło
3
O MÓJ BOŻE! To jest tak idealne, chciałbym móc podnieść twoją odpowiedź więcej niż jeden raz.
DainDwarf
2

Program vimpager zawiera skrypt o nazwie „vimcat”. Może wyświetlać plik z podświetleniem składni vima przekonwertowanym na kody specjalne Ansi.

(Dodatkowa autopromocja: napisałem widelec dla neovim: nvimpager .)

Lucas
źródło
1

[EDYCJA]: Zauważyłem, że kot nie robi tego, kiedy używa vima i skryptu, możesz jednak użyć „head”.

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

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

Jeśli maszyna do prezentacji ma dostępny kolorowy terminal i jest oparta na * nix, możesz nagrać skrypt za pomocą

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

a potem tylko

guest@demomachine$ cat demo.typescript

cat może nie współpracować z vimem i skryptem dla tego problemu, patrz edycja powyżej.

na maszynie do prezentacji. WSKAZÓWKA: pamiętaj o wielkości terminala podczas nagrywania, powinna być mniejsza lub taka sama jak maszyna demonstracyjna.

Skrypt pozwala także nagrywać całą sesję terminalową, dzięki czemu można nagrywać i odtwarzać demo za pomocą scriptreplay.

Skała
źródło