Wie kann ich die Farbe behalten, wenn ich den externen Befehl in vim ausführe?

12

Beispielsweise zeigt der Befehl ls --colorfarbenfrohe Ergebnisse an, wenn er in der Shell ausgeführt wird. Wenn ich jedoch :!ls --colorin vim anrufe, sind alle Farbinformationen weg.

Was kann ich tun, um die Farbe beim Aufrufen eines externen Befehls in vim beizubehalten?

EDIT: Um meine Frage zu klären : Dies ist eine Frage zu VIM selbst. Ich frage NICHT , wie die Farbe von "ls" aktiviert werden soll. Was ich wissen möchte, ist im Allgemeinen, wie die Anzeige von farbigen Ergebnissen ALLER Shell-Befehle aktiviert werden kann (solange sie farbenfrohe Ergebnisse haben).

CMinus
quelle
2
Funktioniert hier gut.
Ignacio Vazquez-Abrams
2
"Dies ist eine Frage zu VIM selbst ..."
Ignacio Vazquez-Abrams
2
und vim ist eines der "Software-Tools, die üblicherweise von Programmierern verwendet werden" ...
1
Also E-Mail. Bedeutet nicht unbedingt, dass "Wie mache ich Thunderbird?" Hier zum Thema gehört.
Ignacio Vazquez-Abrams
2
Vim hat ctags, Einrückungen und viel direktere Unterstützung für die Programmierung. E-Mail macht was direkt für die Programmierung?
Jens

Antworten:

5

CLI Vim oder GUI Vim?

Sie können die Ausgabe von :!lsoder :!ls --coloreines anderen externen Befehls in CLI Vim selbst nicht anzeigen, da es sich um einen einzelnen Thread handelt: Vim ist angehalten und $ ls --colorwird in Ihrer Shell ausgeführt. Daran führt kein Weg vorbei. Nun, Sie können die Ausgabe externer Befehle in den aktuellen Puffer stellen, aber das ist nicht dasselbe.

In GUI Vim können Sie nur eine Pseudo-Shell erhalten, die überhaupt keine Farben anzeigen kann. Daran führt auch kein Weg vorbei.

Wenn Sie dringend eine farbige Ausgabe von externen Befehlen benötigen, müssen Sie einen externen Terminalemulator mit etwas wie starten :!xterm & oder ein Plugin wie Conque Shell verwenden .

romainl
quelle
1
Ich würde auch so etwas wie tmux oder screen vorschlagen.
Lucapette
Ja, in der Tat. Aber der Fragesteller bestand darauf, dass es sich um eine Frage zu Vim selbst handelt. Tmux ist großartig. Das Anmelden auf einem Remote-Server über SSH und die Verwendung eines gut konfigurierten Vim in tmux / screen ist eine überraschend erfreuliche Erfahrung. Perfekt, um in die Zone zu kommen und dort zu bleiben.
Romainl
@romainl danke für deine tolle Antwort. Ich habe gVim verwendet und fälschlicherweise angenommen, dass CLI vim auch keine Farbe anzeigen kann ... Bei einigen Versuchen habe ich festgestellt, dass Farbe in meinem CLI vim korrekt angezeigt wird.
CMinus
1

Sie können festlegen :set shellcmdflag=-ic, dass sich die Shell wie Ihre Eingabeaufforderung interaktiv verhält.

Conner
quelle
1

Sie können eine Funktion erstellen in .bashrc:

function ls { /bin/ls --color=always; }
export -f ls
kev
quelle
Entschuldigung für den Tippfehler, aber ich frage nicht, wie Farbe mit dem Befehl "ls" angezeigt werden soll. Ich bin gespannt, wie die Farbe beibehalten werden kann, wenn die externen Befehle mit vim ausgeführt werden. Ich habe nur "ls" als Beispiel verwendet.