Como fazer o Vim exibir cores conforme indicado pelos códigos de cores?

61

Em resumo, estou tentando substituir lesspor vim( vimpager). Eu tenho configurações para scripts para citar cores (e negrito e tudo de bom) sempre que possível. lessentende os códigos de cores e os exibe bem. Como posso vimanalisar os códigos e exibir cores / ousadia da maneira que lessfaz?

phunehehe
fonte

Respostas:

45

Duas respostas:

Um pequeno: você deseja usar o script vim AnsiEsc.vim . Ele ocultará as seqüências de escape ANSI reais no seu arquivo e usará o realce da sintaxe para colorir o texto adequadamente. O problema de usar isso em um pager é que você precisará fazer com que o vim reconheça quando usá-lo. Não tenho certeza se você pode simplesmente carregá-lo sempre ou se ele entrará em conflito com outros arquivos de sintaxe. Você terá que experimentar com isso.

Uma resposta longa: o melhor que você pode esperar é uma solução parcial não portátil. Menos na verdade não entende as seqüências de escape do terminal, uma vez que elas são em grande parte dependentes do terminal, mas menos podem reconhecê-las (um subconjunto delas) e saberão transmiti-las ao terminal, se você usar o -r(ou-R). O terminal interpreta as seqüências de escape e altera os atributos do texto (cor, negrito, sublinhado ...). O Vim, sendo um editor e não um pager, não passa apenas caracteres de controle brutos para o terminal. Ele precisa exibi-los de alguma forma, para que você possa editá-los. Você pode usar outros recursos do vim, como ocultação e destaque de sintaxe para ocultar as seqüências e usá-los para definir cores do texto; no entanto, ele sempre manipulará apenas um subconjunto das sequências de terminais e provavelmente não funcionará em alguns terminais. .

Este é realmente apenas um dos muitos problemas que você encontrará ao tentar usar um editor de texto como pager.

Jan Hlavacek
fonte
Para resumir, você deve escrever parte de um emulador de terminal no Vim, a parte que lida com as seqüências de escape do terminal que estão presentes em sua entrada.
Gilles 'SO- stop be evil'
Obrigado, acho que estou desistindo. Se não é fácil, não faz mais muito sentido.
## phrehehe #
1
O link para @JanHlavacek está quebrado :(
Nitrodist
19
@Nitrodist: less -r FILE( fonte )
Adobe
1
Parece ligação de Janeiro mudou-se para linux-tips.com/t/how-to-enable-syntax-highlighting-in-less/208
Timothy Zorn
2

Agora, com o vim 8, você pode usar o modo terminal :terminale, nesse terminal, cat myfilevoltar e voltar ao modo normal com Ctrl-w N. Isso exibirá os códigos de cores ANSI corretamente. Ao automatizar essas etapas e ler da entrada padrão em vez de um arquivo, deve ser possível usar o vim para substituir menos.

rubystallion
fonte
Isso não responde à pergunta. Como isso substitui less?
ossbuntu 29/10
@ossbuntu Se você executar ls --color=always >/tmp/colored.txte, em seguida, no vim, :terminal cat /tmp/colored.txtseguido de :only, você terá a saída ls muito bem colorida no vim, como menos faria. Como o vim suporta a passagem de comandos como argumentos de linha de comando na inicialização, é claramente possível mexer para fazer com que a solução funcione para a substituição less:)
rubystallion 29/10