it-swarm-eu.dev

Sintassi della sintassi tramite Less

c'è un modo per sintassi evidenziare un file che vedo in Meno?

in realtà sto usando questo comando per aprire un file xml (ea volte una serie di essi)

less htmleditors/htmleditors_config.xml

o

less [multiple files]

Mi piacerebbe rimanere in Less (per imparare meglio quel programma e usare la mia conoscenza di: n e: p per la navigazione successiva/precedente)

Ma vuole anche una sorta di evidenziazione della sintassi di base - almeno mostrare i commenti in modo diverso. Conosci qualche modo per farlo?

130

Puoi usare GNU's source-highlight , come mostrato qui (path may differire, vedi sotto):

 export LESSOPEN="| /usr/bin/src-hilite-lesspipe.sh %s"
 export LESS=' -R '

A partire da Debian Stretch e Fedora 25, i nomi dei pacchetti e i percorsi degli script sono diversi

  • Debian:

    Sudo apt install libsource-highlight-common source-highlight
    dpkg -L libsource-highlight-common | grep lesspipe
    # /usr/share/source-highlight/src-hilite-lesspipe.sh
    
  • Fedora:

    Sudo dnf install source-highlight
    rpm -ql source-highlight | grep lesspipe
    # /usr/bin/source-highlight/src-hilite-lesspipe.sh
    
120
brandstaetter

Il meglio di entrambe le risposte precedenti: puoi richiamare l'editor di sistema predefinito da meno, premendo v.

91
JiM
pygmentize somefile.ex | less -R

o

function cless () {
    pygmentize -f terminal "$1" | less -R
}

Pygmentize viene fornito come parte della Pygments Python sintassi highliter .

32
user31752

Penso che dovresti usare un editor di testo. Mi piace davvero me stesso. Ciò ti darà un sacco di energia quando visualizzi i file e poi quando vuoi modificarli conoscerai già le basi.

Ecco alcuni dei vantaggi dell'utilizzo di un editor di testo (in particolare vim):

  • evidenziazione della sintassi
  • potenti comandi di movimento
  • trova
  • passare a una posizione specifica in un file (chiamato un segno)
  • pieghevole (utile quando vuoi solo vedere gli stubbs delle funzioni)

Per aprire il tuo file in modalità di sola lettura, usa questo:

vim -R <file name>

Ecco una guida di navigazione di base:

j - move down one line
k - move up one line
h - left one char
l -right one char

ctrl-f - forward one page
ctrl-b - back one page

/<something> - search for something
n - next of whatever you searched for
N - next (search backwards) of whatever you searched for

:q - quit
:q! - quit without saving
:w - save

Ecco un link per maggiori informazioni:

http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html

Solo per ricapitolare, se si userà unix vim è piuttosto fondamentale. Ho sentito dire che imparare Vim è come imparare a scrivere. È il prossimo strumento più utile che puoi imparare per la programmazione.

(Giusto per evitare le guerre degli editor potresti anche guardare in emacs o in un altro editor, comunque io personalmente preferisco vim)

16

Come altri hanno già detto, puoi usare il potere di vim. Ma soprattutto, puoi farlo senza imparare a usare vi/vim.

Vim è dotato di uno script less.vim che funziona piuttosto bene come sostituto di meno, con l'evidenziazione della sintassi a colori. Usa less keybindings (basta premere 'q' per uscire).

Ha avuto alcuni problemi, quindi l'ho migliorato . Ecco uno screenshot di il mio post sul blog (archiviato 2013-04-09; originale genera 503):

screenshot of https://github.com/huyz/less.vim

15
huyz

Stavo anche cercando questo e ho trovato un'altra soluzione usando Vim: http://ubuntu-tutorials.com/2008/07/14/use-vim-as-a-syntax-highlighting- pager/

Il post è piuttosto vecchio, quindi ora su distribos più recenti vim 7.2 viene spedito e il file .bashrc leggerà: alias vless = 'vim -u /usr/share/vim/vim72/macros/less.vim'

10
Lorenzo

Sono felice di annunciare un nuovo pacchetto, e2ansi , che fornisce supporto per l'evidenziazione della sintassi per cercapersone come more e less.

Il pacchetto usa 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

Quanto segue è il risultato della visualizzazione di un file usando less e e2ansi:

Example

Configurazione

Il pacchetto fornisce uno strumento da riga di comando e2ansi-cat che avvia Emacs in modalità batch, apre i file, evidenzia la sintassi e restituisce il risultato utilizzando sequenze ANSI.

Puoi integrare questo in less impostando le seguenti variabili, ad esempio (la posizione del tuo file di 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, less ripristina il contenuto della finestra di terminale originale mentre more semplicemente emette un nuovo contenuto dopo il Prompt.

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

Usando less in pipe

Il carattere "-" in LESSOPEN indica che il filtro di input deve essere utilizzato anche quando si esegue il piping del testo in less. In questo caso, Emacs può contare solo sul testo stesso (e non sul nome di un file). Fortunatamente, Emacs fornisce un sistema per questo. Inoltre, il file di file fornito e2ansi-magic.el imposta tipi di file aggiuntivi. Per esempio:

Pipe example

Perché usare Emacs?

  • Emacs supporta praticamente tutti i linguaggi di programmazione e i formati di testo strutturato. 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 i temi di colore. Quando si utilizza e2ansi, i colori nel tema vengono mantenuti durante la visualizzazione di un file in less. Puoi scegliere un tema di colore adatto da un certo numero di fonti o progettare il tuo.
  • Se si utilizza Emacs come editor preferito, si otterrà la stessa evidenziazione nell'editor come si ottiene visualizzando un file usando less (meno limiti nel formato di sequenza ANSI e nella finestra del terminale).
  • less sfrutterà le funzionalità di Emacs che eseguono la conversione automatica, ad esempio file non compressi. Infatti, puoi insegnare a Emacs a eseguire qualsiasi tipo di conversione, come convertire automaticamente un file binario in un formato leggibile da un dispositivo esterno.
  • È possibile visualizzare i file situati su altre macchine utilizzando la sintassi di Emacs per l'accesso remoto come /[email protected]:FILENAME.

Link utili

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

Note sul sistema operativo

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

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

8
Lindydancer

Se hai GNU Source-highlight installato puoi usare il seguente comando per evidenziare la sintassi di un singolo file:

$ src-hilite-lesspipe.sh yourfile.xml | less -R
6
Oliver

Usando OS X 10.9 (Maverick) questo farebbe il trucco:

  • brew install source-highlight (supponendo che brew sia installato - http://brew.sh )
  • Sudo nano /etc/launchd.conf

    setenv LESSOPEN="| /usr/local/bin/src-hilite-lesspipe.sh %s"     
    setenv LESS=' -R '
    

    (Aggiungi a /etc/launchd.conf)

  • riavvio

2
TeNGiL

source-highlight ha uno script .sh che si trova in /usr/share/source-highlight/*.sh. Ho creato un collegamento simbolico con il nome hcat in /usr/bin.

Mostra l'output evidenziato nel terminale (console) - hcat è evidenziato cat.

Come:

[[email protected]]<bash><~> 43 
21:23 Fri Apr 19 > Sudo apt-get install source-highlight

[[email protected]]<bash><~> 28 
21:03 Fri Apr 19 > ll /usr/share/source-highlight/*.sh
-rwxr-xr-x 1 root root 432 May  1  2012 /usr/share/source-highlight/src-hilite-lesspipe.sh*

[[email protected]]<bash><~> 29 
21:04 Fri Apr 19 > Sudo su
[email protected]:/home/me# cd /usr/bin/
[email protected]:/usr/bin# ln -s /usr/share/source-highlight/src-hilite-lesspipe.sh hcat

[[email protected]]<bash><~> 36 
21:07 Fri Apr 19 > hcat test.xml
2
Vitalie Ghelbert

Ho trovato highlight che:

  • Supporta più schemi di colori e 256 colori
  • Funziona su STDIN (a differenza di source-highlight)
  • È molto più veloce di pygmentize

Screenshot

Ecco uno script che chiamo highlight-less-wrapper che include le istruzioni .bashrc su come impostare less per usarlo automaticamente.

#!/bin/bash

# Have highlight read from STDIN if '-' is given as filename

# Setup - Add to .bashrc:
# LESSOPEN='|-highlight-less-wrapper "%s"'
# export LESS=-FMRXis

# Usage:
# $ less file
# OR
# $ pipeline | less

warn () { printf "%s: %s\n" "$(basename "$0")" "$*" 1>&2; }
die () { warn "[email protected]"; exit 1; }

# Argument checking
case $# in
    0)
        # Allow `exec $0` for less setup
        echo "LESSOPEN='|-$(readlink -f "$0") "'"%s"'\'
        exit 255 ;;
    1)
        # Only one argument is expected.
        # less will invoke multiple times given multiple files.
        file=$1
        if [[ $file != - && ! -r $file ]]; then  # less passes '-' for STDIN
            die "Cannot open $file for reading"
        fi ;;
    *)
        die "Expected only one argument" ;;
esac

# Run highlight
# highlight will read from STDIN when given a null filename
run_highlight () {
    highlight --force -O truecolor --style aiseered "$1"
}

if [[ $file == - ]]; then  # Run on stdin
    run_highlight ""
else
    run_highlight "$file"
fi
0
Tom Hale

In mac, puoi semplicemente digitare view filename, fa cose simili come less.

0
Alan Dong

Ho avuto la stessa domanda e sono atterrato a sentire, leggere tutte le risposte e il seguente è quello che ho finalmente fatto per evidenziare la sintassi ogni volta che uso less o most:

Sudo apt install source-highlight

Poi sono andato e ho creato un alias per il mio less e most (io uso ZSH, ma puoi aggiungere alias per il tuo file .bashrc se usi bash):

vim ~/.zshrc

( Per coloro che potrebbero rimanere bloccati in vim: premere i per andare in modalità modifica, quando hai finito premi Esc poi : poi x e infine Enter per salvare le modifiche )

E incolla le seguenti righe per distro basate su Debian (come Debian, Ubuntu, Mint, ecc.):

alias most='AliasFuncLess() { unset -f AliasFuncLess; $(dpkg -L libsource-highlight-common | grep lesspipe) "$1" | less -R };AliasFuncLess'
alias most='AliasFuncMost() { unset -f AliasFuncMost; $(dpkg -L libsource-highlight-common | grep lesspipe) "$1" | most };AliasFuncMost'

o per distribuzioni RPM (Redhat, Fedora, Centos):

alias most='AliasFuncLess() { unset -f AliasFuncLess; $(rpm -ql source-highlight | grep lesspipe) "$1" | less -R };AliasFuncLess'
alias most='AliasFuncMost() { unset -f AliasFuncMost; $(rpm -ql source-highlight | grep lesspipe) "$1" | most };AliasFuncMost'

Ricorda per chiudere il terminale e aprirlo di nuovo per assicurarsi che l'alias sia stato creato.

Ora puoi goderti i colori:

most yourFile.xml
0

Se vuoi la stessa evidenziazione della sintassi che usi in Vim , ma per qualche motivo preferisci usare less come cercapersone, puoi usare questo script: https://github.com/rkitover/vimpager

L'utilizzo di base sarebbe:

vimpager file.txt

o

vimcat file.ext | less -R

Puoi usare -c per passare comandi extra che non sono nel tuo .vimrc (ad esempio selezionando un diverso schema di colori). Il comando completo che utilizzo è:

vimcat -c 'set cmdheight=20' -c 'hi! clear Normal' -o - "$FILENAME" | less -REXS

Attenzione: se il tuo Vim ti chiede di premere Invio all'avvio, non vedrai il Prompt, ma non succederà nulla finché non premi Invio! Il trucco cmdheight sopra può aiutare a mitigarlo.

0
joeytwiddle

Dopo aver installato GNU source-highlight (pacchetto dev-util/source-highlight su sabayon/gentoo), ho configurato quegli env in /etc/bash/bashrc.d/my-less-src-highlight:

#default:    export LESSOPEN="|lesspipe %s"
#don't like: export LESSOPEN="| /usr/bin/src-hilite-lesspipe.sh %s"
#default:    export LESS=" -R -M --shift 5"
export LESSCOLOR=always
export LESSCOLORIZER=/usr/bin/src-hilite-lesspipe.sh

Non mi è piaciuto sostituire lesspipe perché ha altre funzionalità. La concatenazione non ha funzionato.

0
comonad