Evidenziazione della sintassi nel terminale


43

Molti editor orientati alla programmazione coloreranno il codice sorgente. Esiste un comando che colorerà il codice sorgente per la visualizzazione nel terminale?

Potrei aprire un file con emacs -nw(che si apre nel terminale, invece di spuntare una nuova finestra), ma sto cercando qualcosa che opere come less(o che le opere con less -R , che passa attraverso il colore sequenze di escape nel suo ingresso).

Risposte:


66

Con highlightun terminale che supporta le stesse sequenze di escape colore di xterm:

highlight -O xterm256 your-file | less -R

Con ruby-rouge:

rougify your-file | less -R

Con python-pygments:

pygmentize your-file | less -R

Con GNUsource-highlight :

source-highlight -f esc256 -i your-file | less -R

Puoi anche usare vimcome cercapersone con l'aiuto dello macros/less.shscript fornito con vim(vedi :h lessall'interno vimper i dettagli):

Sul mio sistema:

sh /usr/share/vim/vim74/macros/less.sh your-file

Oppure potresti usare uno degli evidenziatori della sintassi che supportano l'output e l'utilizzo dell'HTML elinkso w3mcome pager (o elinks -dump -dump-color-mode 3 | less -R) come con GNUsource-highlight :

source-highlight -o STDOUT -i your-file | elinks -dump -dump-color-mode 3 | less -R

L'evidenziazione può convertire il testo in SVG / HTML, il che è molto interessante.
utopic eexpress

14

Uso GNU source-highlightcombinato con less -Rquesto. Aggiungi le seguenti righe al file di inizializzazione della shell ( ~/.bashrcad esempio):

cless(){
 LESSOPEN='| source-highlight --failsafe --out-format=esc256 -o STDOUT -i %s 2>/dev/null ' less -R "$@"
}

Ciò dovrebbe automaticamente colorare il codice sorgente in base alla lingua utilizzata e, se non ci riesce, si avvierà lessdirettamente sul suo input.


6

Se ti interessano i colori in lessgenerale, ti consigliamo di dare un'occhiata lesspipe.sh. Vedi, ad esempio, http://freecode.com/projects/lesspipe .

lesspipe.sh è un filtro di input per il cercapersone less, come descritto nella pagina man di less. Lo script viene eseguito in una shell compatibile con ksh (ad esempio bash, zsh) e consente di utilizzare meno per visualizzare file con contenuto binario, file compressi, archivi e file contenuti negli archivi.

Colorerà anche script di shell, script perl, ecc. In modo simile a un editor di testo, ma senza l'uso di alcun programma di "preelaborazione" per eseguire la colorazione.


Grazie! Penso che lesspipe.shsia quello che stavo cercando di ricordare prima di pubblicare la domanda ...
alexis

2

Mi piace la semplicità e utilizzo l'editor di testo nano, in questo caso di solito procedo come segue:

controlla che l'evidenziazione della sintassi della strega sia disponibile: ls -la /usr/share/nano/

includilo nel mio file nanorc con il seguente comando o eseguendolo manualmente

echo 'include /usr/share/nano/sh.nanorc' >> ~/.nanorc

su lesssuggerisco di dare un'occhiata a questa pagina


0

Secondo il suggerimento di Stéphane Chazelas , creo una funzione bash per usare l' highlightevidenziazione della sintassi show, inserirla in .bashrc o così via. Funziona alla grande, veloce ed efficace.

s(){ highlight --force -O ansi $1 | /usr/bin/less -R; }

evidenziare il supporto nel formato di sintassi della lingua 202 . vedi highlight --list-scripts=langs.


0

È possibile utilizzare il pacchetto, e2ansi , che fornisce supporto per l'evidenziazione della sintassi per cercapersone come moree less.

Il pacchetto utilizza la madre di tutti gli editor di testo, Emacs , per eseguire l'evidenziazione della sintassi effettiva. Come bonus aggiuntivo, vengono eseguite anche tutte le altre conversioni normalmente eseguite da Emacs, come i file non compressi.

Esempio

Il seguente è il risultato della visualizzazione di un file usando lesse e2ansi:

Esempio

Configurazione

Il pacchetto fornisce uno strumento da riga di comando e2ansi-catche avvia Emacs in modalità batch, apre i file, la sintassi li evidenzia e rende il risultato usando sequenze ANSI.

Puoi integrarlo lessimpostando le seguenti variabili su, ad esempio (la posizione del tuo file init può variare):

export "LESSOPEN=||-/usr/local/emacs --batch -Q -l ~/.emacs -l bin/e2ansi-cat %s"
export "LESS=-r"
alias "more=less -X -E"

Nella configurazione sopra, lessripristina il contenuto della finestra del terminale originale mentre moresemplicemente emette nuovo contenuto dopo il prompt.

Nota: se si utilizza una versione precedente di less, potrebbe non supportare ||la -sintassi o , nel qual caso potrebbe essere necessario utilizzare semplicemente LESSOPEN=|/usr/local/emacs ....

Usando lessnei tubi

Il carattere "-" LESSOPENindica che è necessario utilizzare anche il filtro di input durante il piping del testo less. In questo caso, Emacs può fare affidamento solo sul testo stesso (e non su un nome file). Fortunatamente, Emacs fornisce un sistema per questo. Inoltre, il file file fornito e2ansi-magic.elimposta tipi di file aggiuntivi. Per esempio:

Esempio di pipe

Perché usare Emacs?

  • Emacs supporta praticamente tutti i linguaggi di programmazione e formati di testo strutturati. Nella maggior parte dei casi, il supporto per l'evidenziazione della sintassi è eccellente.
  • È possibile aggiungere facilmente supporto per più lingue e formati o modificare i pacchetti esistenti in base alle proprie esigenze.
  • Emacs supporta temi di colore. Durante l'utilizzo e2ansi, i colori nel tema vengono mantenuti durante la visualizzazione di un file less. Puoi scegliere un tema di colore adatto da una serie di fonti o crearne uno tuo.
  • Se si utilizza Emacs come editor preferito, nell'editor si otterrà la stessa evidenziazione che si ottiene quando si visualizza un file less(meno limitazioni nel formato sequenza ANSI e nella finestra del terminale).
  • lesstrarranno vantaggio dalle funzionalità di Emacs che eseguono la conversione automatica, ad esempio i file non compressi. In effetti, puoi insegnare a Emacs a eseguire qualsiasi tipo di conversione come convertire automaticamente un file binario in un formato leggibile dall'uomo usando uno strumento esterno.
  • Puoi visualizzare i file che si trovano su altri computer usando la sintassi di Emacs per l'accesso remoto come /USER@HOST:FILENAME.

Link utili

  • e2ansiè distribuito su Melpa e può essere installato utilizzando il sistema di pacchetti standard Emacs
  • e2ansiè ospitato su GitHub
  • La e2ansipagina sul wiki di Emacs
  • La casa di less.

Note sul sistema operativo

  • Su MS Windows, la console non supporta in modo nativo le sequenze ANSI. Fortunatamente, l' lessapplicazione è in grado di renderli. Non sono a conoscenza di alcuna distribuzione binaria contemporanea di lessper MS Windows e i file di build forniti sono difficili da usare. Fortunatamente, è facile costruire lessusando CMake , vedi questo testo per i dettagli.

  • OS X distribuisce una versione antica di less. Fortunatamente, è facile creare una versione moderna direttamente dalla fonte.


-2

Si chiama evidenziazione della sintassi.

GNU Source-highlight quando viene dato un file sorgente, produce un documento con l'evidenziazione della sintassi.

Uso lo lessfilterscript qui sotto, oppure potresti farlo lessinvocare automaticamente come con:

export LESSOPEN="| /path/to/lessfilter %s"
export LESS=' -R '

Ho trovato questo articolo e ho iniziato a farlo in questo modo:

#!/bin/sh
file -b -L "$1" | grep -q text &&
  /usr/share/source-highlight/src-hilite-lesspipe.sh "$1"

( src-hilite-lesspipe.shviene spedito con, source-highlightma non tutte le distribuzioni lo includono)


4
"Se vai all'articolo, l'autore deve usare un Mac poiché usa i capitali per i suoi comandi": Temo che tu sia un po 'confuso: chiaramente non sei consapevole che exportdefinisce una variabile d'ambiente, non un alias. Il comando less usa flag dalla variabile d'ambiente LESS, quindi la tua risposta ha bisogno di un po 'di lavoro.
alexis
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.