Czy Vim może interpretować kody ucieczki kolorów terminali?

29

Wiele programów CLI wyświetla ładnie podświetlony tekst. Podczas gdy większość z nich sprawdza, czy dane wyjściowe trafiają do pliku, niektóre zawierają kody specjalne terminala. Lubię dane wyjściowe z kodami ucieczki, ale przeglądanie tych plików w Vimie jest bolesne.

Czy Vim może zinterpretować te kody ucieczki w oczekiwanych kolorach? Jeśli nie, czy można ustawić Vima tak, aby ignorował te kody ucieczki?

beatgammit
źródło

Odpowiedzi:

28

Istnieją różne wtyczki, które umożliwiają wyświetlanie kolorów ANSI za pomocą kodów specjalnych:


Jeśli chcesz usunąć wszystkie kody ucieczki, możesz użyć:

:%s/<1b>\[[0-9;]*m//g

Uwaga: <1b>to nie jest dosłowny tekst, to znak zmiany znaczenia, użyj Ctrl+, va następnie Escwstaw go (może również pojawiać się jako ^[, w zależności od displayustawień).

Lub możesz je usunąć za pomocą sed; na przykład:

$ sed 's|\x1b\[[;0-9]*m||g' somefile | vi -
Martin Tournoij
źródło
0

Jeśli masz wystarczająco nowoczesny vim z funkcją + terminal, możesz to zrobić, :term cat somefilea otrzymasz bufor z interpretowanymi wszystkimi kodami terminali.

Może to działać lepiej na dużych plikach niż np. Colorizer, co spowodowało, że mój vim był wyjątkowo wolny, gdy pozwoliłem mu się poluzować na pliku o długości 6000 linii.

Marius Gedminas
źródło