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

10

Por exemplo, para o comando ls --color exibe resultados coloridos ao ser executado no shell. No entanto, quando eu chamo :!ls --color dentro do vim, todas as informações de cor desaparecem.

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

EDIT: Para esclarecer minha dúvida , essa é uma pergunta sobre o VIM em si, estou NÃO realmente perguntando como ativar "ls "a cor. O que eu quero saber é, geralmente, como habilitar a exibição de resultados coloridos de comandos shell ALL (desde que tenham resultados coloridos).

    
por CMinus 16.07.2012 / 21:59

3 respostas

5

CLI Vim ou GUI Vim?

Você não pode mostrar a saída de :!ls ou :!ls --color ou qualquer outro comando externo no próprio CLI Vim porque ele é de thread único: o Vim é suspenso e o $ ls --color é executado em seu shell. Não há como evitar isso. Bem, você pode colocar a saída de comandos externos no buffer atual, mas isso não é a mesma coisa.

No GUI Vim, você pode obter apenas um pseudo-shell que é totalmente incapaz de mostrar qualquer cor. Não há como evitar isso.

Se você precisa desesperadamente de saída colorida de comandos externos, você tem que lançar um emulador de terminal externo com algo como :!xterm & ou usando um plugin como Conque Shell .

    
por 17.07.2012 / 10:41
1

Você pode :set shellcmdflag=-ic fazer o shell se comportar de forma interativa, como seu prompt de comando.

    
por 17.07.2012 / 01:44
1

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

function ls { /bin/ls --color=always; }
export -f ls
    
por 17.07.2012 / 01:50

Tags