Jak mogę zachować kolor po uruchomieniu zewnętrznego polecenia w vimie?

12

Na przykład dla polecenia ls --colorwyświetla kolorowe wyniki podczas wykonywania w powłoce. Jednak gdy :!ls --colorwywołam vim, wszystkie informacje o kolorze zniknęły.

Co powinienem zrobić, aby zachować kolor podczas wywoływania zewnętrznego polecenia wewnątrz vima?

EDYCJA: Aby wyjaśnić moje pytanie , jest to pytanie dotyczące samego VIM , tak naprawdę NIE pytam, jak włączyć kolor „ls”. Chcę przede wszystkim wiedzieć, jak włączyć wyświetlanie kolorowych wyników WSZYSTKICH poleceń powłoki (o ile mają one kolorowe wyniki).

CMinus
źródło
2
Działa dobrze tutaj.
Ignacio Vazquez-Abrams
2
„To pytanie dotyczy samego VIM ...”
Ignacio Vazquez-Abrams,
2
a vim jest jednym z „narzędzi programowych powszechnie używanych przez programistów” ...
1
E-mail. Nie musi to oznaczać „jak ja Thunderbird” jest na ten temat.
Ignacio Vazquez-Abrams,
2
Vim ma ctagi, wcięcia i znacznie bardziej bezpośrednie wsparcie dla programowania. E-mail robi to, co bezpośrednio do programowania?
Jens,

Odpowiedzi:

5

CLI Vim czy GUI Vim?

Nie można pokazać wyjście :!lslub :!ls --colorlub innego polecenia zewnętrznego w samej CLI Vima bo to pojedynczy gwintowany: Vim jest zawieszony i $ ls --colorjest wykonywany w swojej skorupie. Nie można tego obejść. Cóż, możesz umieścić wyjście poleceń zewnętrznych w bieżącym buforze, ale to nie to samo.

W GUI Vim można uzyskać tylko pseudo-powłokę, która całkowicie nie jest w stanie pokazać żadnych kolorów. Tego też nie da się obejść.

Jeśli rozpaczliwie potrzebujesz kolorowych wyników z zewnętrznych poleceń, musisz uruchomić zewnętrzny emulator terminala z czymś podobnym :!xterm & lub użyć wtyczki takiej jak Conque Shell .

romainl
źródło
1
Sugerowałbym też coś takiego jak tmux lub screen.
lucapette,
W rzeczy samej. Ale pytający nalegał, że jest to pytanie o samego Vima. Tmux jest świetny. Zalogowanie się na zdalnym serwerze za pośrednictwem SSH i używanie dobrze skonfigurowanego Vima w tmux / screen to zaskakująco przyjemne doświadczenie. Idealny do wejścia w strefę i pozostania tam.
romainl
@romainl dziękuję za wspaniałą odpowiedź. Użyłem gVim i fałszywie założyłem, że vim CLI również nie może wyświetlać kolorów ... W niektórych próbach zauważyłem, że kolor jest poprawnie wyświetlany w moim vimie CLI.
CMinus,
1

Możesz :set shellcmdflag=-icsprawić, aby powłoka zachowywała się interaktywnie, podobnie jak wiersz polecenia.

Conner
źródło
1

Możesz wykonać funkcję w .bashrc:

function ls { /bin/ls --color=always; }
export -f ls
kev
źródło
Przepraszam za literówkę, ale nie pytam, jak wyświetlać kolor za pomocą polecenia „ls” - jestem ciekawy, jak zachować kolor podczas wykonywania poleceń zewnętrznych za pomocą vima. Po prostu użyłem „ls” jako przykładu.