Como posso manter a cor quando executo o comando externo no vim?

12

Por exemplo, o comando ls --colorexibe resultados coloridos ao ser executado no shell. No entanto, quando ligo :!ls --colorpara o vim, todas as informações de cores desaparecem.

O que devo fazer para manter a cor ao chamar um comando externo dentro do vim?

EDIT: Para esclarecer minha pergunta , esta é uma pergunta sobre o próprio VIM , na verdade não estou perguntando como ativar a cor do "ls". O que eu quero saber é, geralmente como habilitar a exibição de resultados coloridos de TODOS os comandos do shell (desde que tenham resultados coloridos).

CMinus
fonte
2
Funciona bem aqui.
Ignacio Vazquez-Abrams
2
"Esta é uma pergunta sobre o próprio VIM ..."
Ignacio Vazquez-Abrams
2
e vim é uma das "ferramentas de software comumente usados por programadores" ...
1
Então é o email. Não significa necessariamente "como eu Thunderbird" está no tópico aqui.
Ignacio Vazquez-Abrams
2
O Vim possui ctags, recuo e suporte muito mais direto à programação. O email faz o que diretamente para programação?
Jens

Respostas:

5

CLI Vim ou GUI Vim?

Você não pode mostrar a saída :!lsou :!ls --colorou qualquer outro comando externo em si CLI Vim porque de rosca única: Vim é suspenso e $ ls --coloré executado em sua concha. Não há maneira de contornar isso. Bem, você pode colocar a saída de comandos externos no buffer atual, mas isso não é a mesma coisa.

Na GUI Vim, você só pode obter um pseudo-shell totalmente incapaz de mostrar cores. Também não há maneira de contornar isso.

Se você precisa desesperadamente de saída colorida de comandos externos, é necessário iniciar um emulador de terminal externo com algo parecido :!xterm & ou usar um plug-in como o Conque Shell .

romainl
fonte
1
Gostaria de sugerir algo como tmux ou tela também.
Lucapette
Sim, de fato. Mas o solicitante insistiu que é uma pergunta sobre o próprio Vim. Tmux é ótimo. Conectar-se a um servidor remoto via SSH e usar um Vim bem configurado no tmux / screen é uma experiência surpreendentemente agradável. Perfeito para entrar na zona e ficar lá.
Romainl 17/07/2012
@romainl obrigado por sua resposta incrível. Usei o gVim e assumi falsamente que o CLI vim também não pode exibir cores ... Em algumas tentativas, descobri que a cor é exibida corretamente no meu CLI vim.
18712 CMinus
1

Você pode :set shellcmdflag=-icfazer o shell se comportar interativamente, como seu prompt de comando.

Conner
fonte
1

Você pode fazer uma função em .bashrc:

function ls { /bin/ls --color=always; }
export -f ls
kev
fonte
Desculpe pelo erro de digitação, mas não estou perguntando como exibir cores com o comando "ls" - estou curioso sobre como manter a cor ao executar comandos externos com o vim. Eu apenas usei "ls" como exemplo.