Come posso mantenere il colore quando eseguo il comando esterno all'interno di VIM?


11

Ad esempio, per il comando ls --colorvisualizza risultati colorati quando viene eseguito nella shell. Tuttavia, quando chiamo :!ls --colorall'interno di VIM, tutte le informazioni sul colore scompaiono.

Cosa devo fare per mantenere il colore quando si chiama un comando esterno all'interno di VIM?

EDIT: Per chiarire la mia domanda , questa è una domanda su VIM stesso, NON sto effettivamente chiedendo come abilitare il colore di "ls". Quello che voglio sapere è, generalmente, come abilitare la visualizzazione di risultati colorati di TUTTI i comandi della shell (purché abbiano risultati colorati).


2
Funziona bene qui.
Ignacio Vazquez-Abrams,

1
"Questa è una domanda su VIM stesso ..."
Ignacio Vazquez-Abrams,

2
e vim è uno degli "strumenti software comunemente usati dai programmatori" ...

1
Quindi e-mail. Non significa necessariamente che "come faccio Thunderbird" è in tema qui.
Ignacio Vazquez-Abrams,

2
Vim ha tag, trattini e un supporto molto più diretto per la programmazione. La posta elettronica fa cosa direttamente per la programmazione?
Jens,

Risposte:


5

CLI Vim o GUI Vim?

Non è possibile mostrare l'output di :!lso :!ls --colorqualsiasi altro comando esterno in CLI Vim stesso perché è a thread singolo: Vim è sospeso e $ ls --colorviene eseguito nella shell. Non c'è modo di aggirare questo. Bene, puoi posizionare l'output di comandi esterni nel buffer corrente ma non è la stessa cosa.

In GUI Vim, puoi ottenere solo una pseudo-shell che non è assolutamente in grado di mostrare alcun colore. Non c'è modo di aggirare neanche quello.

Se hai disperatamente bisogno di un output colorato da comandi esterni devi avviare un emulatore di terminale esterno con qualcosa di simile :!xterm & o utilizzare un plugin come Conque Shell .


1
Vorrei suggerire qualcosa come tmux o anche lo schermo.
lucapette,

Si Certamente. Ma il richiedente ha insistito sul fatto che si tratta di una domanda su Vim stesso. Tmux è fantastico. Accedere a un server remoto tramite SSH e utilizzare un Vim ben configurato in tmux / screen è un'esperienza sorprendentemente piacevole. Perfetto per entrare nella zona e stare lì.
Romainl,

@romainl grazie per la tua fantastica risposta. Ho usato gVim e ho erroneamente ritenuto che anche CLI vim non potesse visualizzare il colore ... Con alcune prove ho trovato che il colore è visualizzato correttamente nel mio CLI vim.
CMinus,

1

Puoi fare :set shellcmdflag=-icin modo che la shell si comporti in modo interattivo, come il tuo prompt dei comandi.


1

Puoi fare una funzione in .bashrc:

function ls { /bin/ls --color=always; }
export -f ls

Ci scusiamo per l'errore di battitura, ma non sto chiedendo come visualizzare il colore con il comando "ls" - Sono curioso di sapere come conservare il colore quando si eseguono i comandi esterni con vim. Ho appena usato "ls" come esempio.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.