Come rendere i colori di visualizzazione di Vim come indicato dai codici colore?


61

In breve, sto cercando di sostituire lesscon vim( vimpager). Ho delle impostazioni per gli script per sputare i colori (e in grassetto e tutto bene) ogni volta che possono. lesscomprende i codici colore e li visualizza bene. Come posso vimanalizzare i codici e visualizzare i colori / l'audacia in questo modo less?

Risposte:


45

Due risposte:

Una breve: si desidera utilizzare lo script vim AnsiEsc.vim . Nasconderà le sequenze di escape ANSI effettive nel file e utilizzerà l'evidenziazione della sintassi per colorare il testo in modo appropriato. Il problema con l'utilizzo di questo in un cercapersone è che dovrai far riconoscere a Vim quando utilizzarlo. Non sono sicuro se puoi semplicemente caricarlo sempre o se sarà in conflitto con altri file di sintassi. Dovrai sperimentarlo.

Una risposta lunga: il meglio che puoi sperare è una soluzione parziale non portatile. Meno in realtà non comprende le sequenze di escape del terminale, poiché queste sono in gran parte dipendenti dal terminale, ma meno può riconoscerle (un sottoinsieme di) e saprà passarle attraverso il terminale, se si utilizza il -r(o-R) opzione. Il terminale interpreta le sequenze di escape e modifica gli attributi del testo (colore, grassetto, sottolineato ...). Vim, essendo un editor anziché un cercapersone, non passa semplicemente i caratteri di controllo non elaborati al terminale. Deve visualizzarli in qualche modo, quindi puoi effettivamente modificarli. Puoi usare altre funzionalità di vim, come l'occultamento e l'evidenziazione della sintassi per nascondere le sequenze e usarle per impostare i colori del testo, tuttavia, gestirà sempre solo un sottoinsieme delle sequenze di terminali e probabilmente non funzionerà su alcuni terminali .

Questo è davvero solo uno dei tanti problemi che incontrerai quando proverai ad usare un editor di testo come cercapersone.


Per dirla in poche parole, devi scrivere parte di un emulatore di terminale in Vim, la parte che gestisce le sequenze di escape del terminale presenti nel tuo input.
Gilles 'SO- smetti di essere malvagio' il

Grazie, credo di arrendermi. Se non è facile, non ha più molto senso.
phunehehe,

1
Il link @JanHlavacek è interrotto :(
Nitrodist

19
@Nitrodist: less -r FILE( fonte )
Adobe,

1
Sembra che il link di Jan sia stato spostato su linux-tips.com/t/how-to-enable-syntax-highlighting-in-less/208
Timothy Zorn,

2

Ora con vim 8 è possibile utilizzare la modalità terminale :terminale poi in quel terminale fare cat myfilee tornare alla modalità normale con Ctrl-w N. Questo visualizzerà correttamente i codici colore ANSI. Automatizzando questi passaggi e leggendo l'input standard anziché un file, dovrebbe essere possibile utilizzare vim per sostituire meno.


Questo non risponde affatto alla domanda. Come si sostituisce less?
ossbuntu,

@ossbuntu Se corri ls --color=always >/tmp/colored.txte poi in vim :terminal cat /tmp/colored.txtseguito da :only, allora avrai l'output ls ben colorato in vim come farebbe meno. Poiché vim supporta il passaggio di comandi come argomenti della riga di comando all'avvio, è chiaramente possibile armeggiare per far funzionare quella soluzione per la sostituzione less:)
rubystallion
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.