Comment puis-je conserver la couleur lorsque j'exécute la commande externe dans vim?

12

Par exemple, la commande ls --coloraffiche des résultats colorés lors de son exécution dans le shell. Cependant, lorsque j'appelle à l' :!ls --colorintérieur de vim, toutes les informations de couleur ont disparu.

Que dois-je faire pour conserver la couleur lors de l'appel d'une commande externe dans vim?

EDIT: Pour clarifier ma question , c'est une question sur VIM lui-même, je ne demande pas réellement comment activer la couleur de "ls". Ce que je veux savoir, c'est généralement comment activer l'affichage des résultats colorés de TOUTES les commandes shell (tant qu'ils ont des résultats colorés).

CMinus
la source
2
Fonctionne bien ici.
Ignacio Vazquez-Abrams
2
"C'est une question sur le VIM lui-même ..."
Ignacio Vazquez-Abrams
2
et vim est l'un des "outils logiciels couramment utilisés par les programmeurs" ...
1
Courriel de So. Cela ne signifie pas nécessairement «comment puis-je Thunderbird» est sur le sujet ici.
Ignacio Vazquez-Abrams
2
Vim a des ctags, un retrait et un support beaucoup plus direct pour la programmation. Le courrier électronique fait quoi directement pour la programmation?
Jens

Réponses:

5

CLI Vim ou GUI Vim?

Vous ne pouvez pas afficher la sortie de :!lsou :!ls --colorou de toute autre commande externe dans CLI Vim elle-même car elle est à thread unique: Vim est suspendu et $ ls --colorest exécuté dans votre shell. Il n'y a aucun moyen de contourner cela. Eh bien, vous pouvez placer la sortie des commandes externes dans le tampon actuel, mais ce n'est pas la même chose.

Dans GUI Vim, vous ne pouvez obtenir qu'un pseudo-shell totalement incapable d'afficher les couleurs. Il n'y a aucun moyen de contourner cela non plus.

Si vous avez désespérément besoin d'une sortie colorée à partir de commandes externes, vous devez lancer un émulateur de terminal externe avec quelque chose comme :!xterm & ou utiliser un plugin comme Conque Shell .

romainl
la source
1
Je suggérerais aussi quelque chose comme tmux ou screen.
lucapette
Oui en effet. Mais le demandeur a insisté sur le fait qu'il s'agissait d'une question concernant Vim lui-même. Tmux est génial. Se connecter sur un serveur distant via SSH et utiliser un Vim bien configuré dans tmux / screen est une expérience étonnamment agréable. Parfait pour entrer dans la zone et y rester.
romainl
@romainl merci pour votre réponse impressionnante. J'ai utilisé gVim et j'ai supposé à tort que vim CLI ne pouvait pas non plus afficher la couleur ... Avec certains essais, j'ai trouvé que la couleur était correctement affichée dans mon vim CLI.
CMinus
1

Vous pouvez :set shellcmdflag=-icfaire en sorte que le shell se comporte de manière interactive, comme votre invite de commande.

Conner
la source
1

Vous pouvez créer une fonction dans .bashrc:

function ls { /bin/ls --color=always; }
export -f ls
kev
la source
Désolé pour la faute de frappe, mais je ne demande pas comment afficher la couleur avec la commande "ls" - je suis curieux de savoir comment conserver la couleur lors de l'exécution des commandes externes avec vim. J'ai juste utilisé "ls" comme exemple.