Quando leggo un file con `less` o` more`, come posso ottenere il contenuto a colori?


411

Quando leggo un file in Linux con il comando lesso more, come posso ottenere il contenuto a colori?


5
Questo sembra correlato: superuser.com/questions/36022/less-and-grep-color - aiuta?
Jonik,

7
Il titolo di questa domanda è molto fuorviante. Molte persone che atterrano su questa pagina si aspettano una soluzione al problema di colorazione che si verifica quando si inoltra un comando con output colorato a less: i colori vengono persi. (Le risposte a quel "problema relativo alle tubazioni" riguardano less -R, unbufferecc.) Ma la vera domanda si riferisce all'apertura di un file ! - L'ambiguità risiede principalmente nel titolo della domanda, ma a parte questo, IMHO la domanda è ancora troppo ampia: "leggere un file" potrebbe riferirsi a qualsiasi file (probabilmente testo semplice). (beh, "ottenere il contenuto in colori" probabilmente si riferisce all'evidenziazione della sintassi.)
myrdd,

Ho bisogno di correggermi, solo 3 (o 4) delle 14 risposte mancano alla vera domanda del PO: le risposte di ChristopheD , Puneet e Onlyjob ; e forse jbbr . Tuttavia, due di queste risposte fanno parte delle tre più votate.
myrdd,

@myrdd "evidenziazione della sintassi" è il termine rilevante quindi ... (Chiede di mostrare i colori, non di aggiungere i colori?) less -Rfunzionerà anche sui file, ad es.ls --color=always > /tmp/file && less -R /tmp/file
Gert van den Berg,

1
@myrdd Potrebbe avere molto senso che la domanda venga chiusa come "non chiaro cosa viene posto" poiché le domande che pongono uno dei due verrebbero probabilmente contrassegnate come duplicate di questo ... (E le risposte per uno qualsiasi dei due possono essere ridimensionate basato su come l'interprete lo interpreta ...) (Il mio caso d'uso era un file di registro che (fastidiosamente) contiene codici di escape colore)
Gert van den Berg

Risposte:


149

Puoi utilizzare il potere di pygmentize con meno - automaticamente! (Non è necessario il tubo a mano.)

Installa pygmentscon il tuo gestore pacchetti o pip (eventualmente chiamato python-pygments) o scaricalo qui http://pygments.org/download/ .

Scrivi un file ~/.lessfilter

#!/bin/sh
case "$1" in
    *.awk|*.groff|*.java|*.js|*.m4|*.php|*.pl|*.pm|*.pod|*.sh|\
    *.ad[asb]|*.asm|*.inc|*.[ch]|*.[ch]pp|*.[ch]xx|*.cc|*.hh|\
    *.lsp|*.l|*.pas|*.p|*.xml|*.xps|*.xsl|*.axp|*.ppd|*.pov|\
    *.diff|*.patch|*.py|*.rb|*.sql|*.ebuild|*.eclass)
        pygmentize -f 256 "$1";;

    .bashrc|.bash_aliases|.bash_environment)
        pygmentize -f 256 -l sh "$1";;

    *)
        if grep -q "#\!/bin/bash" "$1" 2> /dev/null; then
            pygmentize -f 256 -l sh "$1"
        else
            exit 1
        fi
esac

exit 0

Nel tuo .bashrcaggiungi

export LESS='-R'
export LESSOPEN='|~/.lessfilter %s'

Inoltre, è necessario rendere ~/.lessfiltereseguibile eseguendo

chmod u+x ~/.lessfilter

Testato su Debian.

Ti viene l'idea. Questo può ovviamente essere ulteriormente migliorato, accettando più estensioni o analizzando lo shebang per altri interpreti rispetto a bash. Vedi alcune delle altre risposte per questo.

L'idea è nata da un vecchio post sul blog dei creatori di Pygments , ma il post originale non esiste più.


6
Se vuoi colorare i file del codice sorgente, devi anche rendere eseguibile ~ / .lessfilter eseguendo chmod u+x ~/.lessfilter. È inoltre necessario disporre di pygmentize ( pygments.org/download ) installato.
Sergiy Belozorov,

Qualcuno può confermare che questo funziona in quanto non ha alcun effetto per me quando eseguo un comando comels -l | less
puk

7
@puk puoi fare qualcosa del genere ls --color=always -l | less -R. Ovviamente molto da scrivere ma si potrebbe alias in qualcosa del genere ll. Cioè se non si desidera utilizzare librerie extra.
PhilT,

2
ha aggiunto il commento di @ SergiyByelozyorov alla risposta.
Andrybak,

2
La mia modifica è stata rifiutata, quindi suppongo che la posterò come commento: non testare indirettamente i codici di uscita dei comandi. È possibile utilizzare if grep -q "#\!/bin/bash" "$1"( -qsopprime l'output standard). Potresti voler reindirizzare l'errore standard con 2>/dev/null.
Tom Fenech,

496

Prova quanto segue:

less -R

da man less:

-r o --raw-control-chars

Fa sì che vengano visualizzati caratteri di controllo "non elaborati". (...)

-R o --RAW-CONTROL-CHARS

Come -r, ma solo le sequenze di escape "color" ANSI vengono emesse in forma "grezza". (...)


16
Ciò è utile quando il file stesso contiene i codici di escape che dovranno essere visualizzati.
Nitrodist,

1
Conoscevo meno -r ma la ricerca nel file usando "/" continuava a far apparire le righe sbagliate. -R sembra fare un lavoro migliore. Grazie per il consiglio.
Amos Shapira,

53
Va notato che la maggior parte dei programmi usa isatty(2)syscall per verificare se il loro output standard è un terminale, e di solito disabilita l'output colorato se non lo è. Per qualsiasi pipe di valore inferiore, isattyverrà restituito 0. Per verificare se funziona, provareecho -e '\x1b[32;1mtest\x1b[m' | less -r
mic_e

11
Questa risposta non eccelle nel fare effettivamente qualcosa di test.
Michael Wolf,

18
Puoi anche digitare -Rquando hai già aperto lessper raggiungere questo obiettivo.
Scz,

137

Ho ottenuto la risposta in un altro post: Less and Grep: ottenere risultati colorati usando una pipe da grep a less

Quando si esegue semplicemente grep --color, implica grep --color=autoche rileva se l'output è un terminale e in tal caso abilita i colori. Tuttavia, quando rileva una pipa disabilita la colorazione. Il seguente comando:

grep --color=always "search string" * | less -R

Attiverà sempre la colorazione e sovrascriverà il rilevamento automatico e otterrai l'evidenziazione del colore in meno.

Attenzione: non mettere --color=alwayscome alias, a volte rompe le cose. Ecco perché esiste --color=autoun'opzione.


5
Bene grazie. Solo che devo usare -Ranche un'opzione per less.
naught101

10
Credo grep -Rsia per specificare la ricerca ricorsiva. less -Rè necessario per lesssputare correttamente i colori indietro. grep --color=always [grep cmds] | less -Rfunziona per me su OS X 10.7.3!
Steven Lu,

@ naught101 @Steven Lu Modificato, anche se sembra che alcune persone potrebbero non aver bisogno di usare less -R(secondo l'autore del post originale, comunque).
jtpereyda,

2
Esiste un modo per far sapere a grep solo il comando pipe less -R e poi solo colorare? Quindi, non dobbiamo mettere --color = sempre e meno -R sempre.
A-letubby,

1
Questa è di gran lunga la risposta di lavoro più semplice. Grazie!
Danny Staple,

36

Usa viewinvece di less. Apre il file con vimin sola lettura.

È praticamente un colore less: un cercapersone dove puoi cercare /(e altro). L'unico inconveniente è che non puoi uscire con, qma è necessario:q

Inoltre, ottieni la stessa colorazione di vim(dal momento che stai effettivamente utilizzando vim).


Che ne dici delle prestazioni di file di grandi dimensioni? L'evidenziazione della sintassi di Vim è nota per essere lenta su file di grandi dimensioni.
Pihentagy,

Non so quale sia il tuo valore per "big", ma l'apertura di un file di ~ 10000 righe è istantanea, ricerca all'interno inclusa.
Riccardo Galli,

1
Ho votato (non lo sapevo view) ma un altro aspetto negativo è che j / k / su / giù non scorre all'istante, poiché c'è un cursore.
Tyler Collier,

7
Si noti che potrebbe essere necessario aggiungere view -durante il piping
user45909

6
vimè un editor, che carica il file completo in memoria, mentre lessè un cercapersone, che carica il file solo parzialmente in memoria. Conoscerai la differenza con file di grandi dimensioni.
sabato

16

Per dire di meno per mostrare i colori chiamalo con -R:

less -R

Sfortunatamente alcuni programmi rilevano che il loro stdout non è un terminale e disabilitano i colori, ad esempio pacman (gestore di pacchetti Arch Linux).

In questi casi è possibile utilizzare unbuffer:

unbuffer <command> | less -R

Esempio usando pacman

unbuffer pacman -Ss firefox | less -R

Il unbuffercomando di solito fa parte del pacchetto expect(Arch Linux, Debian / Ubuntu) o expect-dev(versioni legacy di Debian / Ubuntu).

Per rispondere alla domanda per completezza:

Come altri hanno già risposto, pygmentizeè ottimo per colorare il codice sorgente. Non richiede unbuffer. Chiamata più semplice:

pygmentize someSource.cpp | less -R

2
Da usare unbuffersu Ubuntu,sudo apt install expect
wisbucky

Questa risposta richiede più voti.
Thomas Dignan,

Stavo cercando di reindirizzare l'output di dmesg per verificare gli errori di avvio, ma i colori non funzionavano a meno che non usassi il buffer, il che mi confondeva il diavolo: unbuffer dmesg | less -Rfunziona come previsto.
pbhj,

15

pygmentizesupporta l' -gopzione per indovinare automaticamente il lexer da utilizzare, utile per i file letti STDINsenza controllare alcun tipo di estensione.

Usando quello, devi solo impostare le seguenti 2 esportazioni nel tuo .bashrcsenza ulteriori script:

export LESS='-R'
export LESSOPEN='|pygmentize -g %s'

4
Conciso ed efficace. Preferisco definire un alias, perché a volte meno è meglio. Quindi: alias lesc = 'LESS = "- R" LESSOPEN = "| pygmentize -g% s" less'
Tiago

9

Non hai detto cosa dovrebbe significare questo colore, ad es. Quali dovrebbero essere i colori per un file di testo?

Se ciò che si desidera è l'evidenziazione della sintassi per il codice sorgente, è necessario un evidenziatore del codice sorgente. A volte uso pygmentize in questo modo

pygmentize file.cpp | less

o

pygmentize file.cpp | more

Ci sono altri evidenziatori in giro.

Questo è abbastanza veloce. Se non ti dispiace accendere vimc'è una modalità di sola lettura che può darti l'evidenziazione della sintassi se ce l'hai vim.

view file.cpp

o in alternativa vedi la risposta di churnd.


5

Questa è l'ennesima risposta basata sui pigmenti , con diversi importanti miglioramenti:

  • non si rompe lesspipeo lessfilefiltri
  • funziona con più input per less
  • analizza correttamente il tipo di script dall'intestazione shebang
  • funziona con tutti i 434 tipi di file disponibili da Pygments
  • la combinazione di colori è parametrizzata come variabile d'ambiente

Installa Pygments e Gawk

sudo apt-get install python-pygments python3-pygments gawk

Imposta variabili d'ambiente

Verifica se lesspipeo lessfileè già abilitato:

echo $LESSOPEN

Se non vedi nessuno dei programmi a cui fai riferimento lì, assicurati che lesspipesia installato (la maggior parte delle distro viene fornito con esso).

Aggiungi quanto segue a ~/.bashrc:

# sets LESSOPEN and LESSCLOSE variables
eval "$(SHELL=/bin/sh lesspipe)"

# interpret color characters
export LESS='-R'

# to list available styles: `pygmentize -L styles`
export PYGMENTIZE_STYLE='paraiso-dark'

# optional
alias ls='ls --color=always'
alias grep='grep --color=always'

Se non vuoi lesspipe, sostituisci la evalfrase con:

export LESSOPEN='|~/.lessfilter %s'

Creare ~/.lessfilter

Aggiungi il seguente codice e rendi il file eseguibile: chmod u+x ~/.lessfilter

#!/bin/bash
for path in "$@"; do
    # match by known filenames
    filename=$(basename "$path")
    case "$filename" in
        .bashrc|bash.bashrc|.bash_aliases|.bash_environment|.bash_profile|\
        .bash_login|.bash_logout|.profile|.zshrc|.zprofile|.zshrc|.zlogin|\
        .zlogout|zshrc|zprofile|zshrc|zlogin|zlogout|.cshrc|.cshdirs|\
        csh.cshrc|csh.login|csh.logout|.tcshrc|.kshrc|ksh.kshrc)
            # shell lexer
            pygmentize -f 256 -O style=$PYGMENTIZE_STYLE -l sh "$path"
            ;;
        .htaccess|apache.conf|apache2.conf|Dockerfile|Kconfig|external.in*|\
        standard-modules.in|nginx.conf|pacman.conf|squid.conf|termcap|\
        termcap.src|terminfo|terminfo.src|control|sources.list|CMakeLists.txt|\
        Makefile|makefile|Makefile.*|GNUmakefile|SConstruct|SConscript|\
        .Rhistory|.Rprofile|.Renviron|Rakefile|Gemfile|PKGBUILD|autohandler|\
        dhandler|autodelegate|.vimrc|.exrc|.gvimrc|vimrc|exrc|gvimrc|todo.txt)
            # filename recognized
            pygmentize -f 256 -O style=$PYGMENTIZE_STYLE "$path"
            ;;
        *)
            ext=$([[ "$filename" = *.* ]] && echo ".${filename##*.}" || echo '')
            case "$ext" in
                .as|.mxml|.bc|.g|.gd|.gi|.gap|.nb|.cdf|.nbp|.ma|.mu|.at|.run|\
                .apl|.adl|.adls|.adlf|.adlx|.cadl|.odin|.c-objdump|.s|\
                .cpp-objdump|.c++-objdump|.cxx-objdump|.d-objdump|.S|.hsail|\
                .ll|.asm|.ASM|.objdump-intel|.objdump|.tasm|.au3|.ahk|.ahkl|\
                .bb|.decls|.bmx|.bas|.monkey|.BAS|.bst|.bib|.abap|.ABAP|.cbl|\
                .CBL|.cob|.COB|.cpy|.CPY|.gdc|.maql|.p|.cls|.c|.h|.idc|.cpp|\
                .hpp|.c++|.h++|.cc|.hh|.cxx|.hxx|.C|.H|.cp|.CPP|.ino|.clay|\
                .cu|.cuh|.ec|.eh|.mq4|.mq5|.mqh|.nc|.pike|.pmod|.swg|.i|.vala|\
                .vapi|.capnp|.chpl|.icl|.dcl|.cf|.docker|.ini|.cfg|.inf|\
                .pc|.properties|.reg|.tf|.pypylog|.cr|.csd|.orc|.sco|.css|\
                .less|.sass|.scss|.croc|.d|.di|.smali|.jsonld|.json|.yaml|\
                .yml|.dpatch|.darcspatch|.diff|.patch|.wdiff|.boo|.aspx|.asax|\
                .ascx|.ashx|.asmx|.axd|.cs|.fs|.fsi|.n|.vb|.als|.bro|.crmsh|\
                .pcmk|.msc|.pan|.proto|.pp|.rsl|.sbl|.thrift|.rpf|\
                .dylan-console|.dylan|.dyl|.intr|.lid|.hdp|.ecl|.e|.elm|.ex|\
                .exs|.erl|.hrl|.es|.escript|.erl-sh|.aheui|.befunge|.bf|.b|\
                .camkes|.idl4|.cdl|.cw|.factor|.fan|.flx|.flxh|.frt|.f|.F|\
                .f03|.f90|.F03|.F90|.PRG|.prg|.go|.abnf|.bnf|.jsgf|.cyp|\
                .cypher|.asy|.vert|.frag|.geo|.plot|.plt|.ps|.eps|.pov|.inc|\
                .agda|.cry|.hs|.idr|.kk|.kki|.lagda|.lcry|.lhs|.lidr|.hx|\
                .hxsl|.hxml|.sv|.svh|.v|.vhdl|.vhd|.dtd|.haml|.html|.htm|\
                .xhtml|.xslt|.pug|.jade|.scaml|.xml|.xsl|.rss|.xsd|.wsdl|\
                .wsf|.xpl|.pro|.ipf|.nsi|.nsh|.spec|.i6t|.ni|.i7x|.t|.io|\
                .ijs|.coffee|.dart|.eg|.js|.jsm|.juttle|.kal|.lasso|\
                .lasso[89]|.ls|.mask|.j|.ts|.tsx|.jl|.aj|.ceylon|.clj|\
                .cljs|.golo|.gs|.gsx|.gsp|.vark|.gst|.groovy|.gradle|.ik|\
                .java|.kt|.pig|.scala|.xtend|.cpsa|.cl|.lisp|.el|.hy|.lsp|.nl|\
                .kif|.rkt|.rktd|.rktl|.scm|.ss|.shen|.xtm|.cmake|.mak|.mk|\
                .[1234567]|.man|.md|.css.in|.js.in|.xul.in|.rst|.rest|.tex|\
                .aux|.toc|.m|.sci|.sce|.tst|.ml|.mli|.mll|.mly|.opa|.sml|.sig|\
                .fun|.bug|.jag|.mo|.stan|.def|.mod|.mt|.ncl|.nim|.nimrod|.nit|\
                .nix|.cps|.x|.xi|.xm|.xmi|.mm|.swift|.ooc|.psi|.psl|.G|.ebnf|\
                .rl|.treetop|.tt|.adb|.ads|.ada|.pas|.dpr|.pwn|.sp|.pl|.pm|\
                .nqp|.p6|.6pl|.p6l|.pl6|.6pm|.p6m|.pm6|.php|.php[345]|.zep|\
                .praat|.proc|.psc|.lgt|.logtalk|.prolog|.pyx|.pxd|.pxi|.dg|\
                .py3tb|.py|.pyw|.sc|.tac|.sage|.pytb|.qvto|.Rout|.Rd|.R|.rq|\
                .sparql|.ttl|.r|.r3|.reb|.red|.reds|.txt|.rnc|.graph|\
                .instances|.robot|.fy|.fancypack|.rb|.rbw|.rake|.gemspec|\
                .rbx|.duby|.rs|.rs.in|.SAS|.sas|.applescript|.chai|.ezt|\
                .mac|.hyb|.jcl|.lsl|.lua|.wlua|.moo|.moon|.rexx|.rex|.rx|\
                .arexx|.sh|.ksh|.bash|.ebuild|.eclass|.exheres-0|.exlib|.zsh|\
                .sh-session|.shell-session|.bat|.cmd|.fish|.load|.ps1|.psm1|\
                .tcsh|.csh|.ns2|.st|.smv|.snobol|.rql|.sql|.sqlite3-console|\
                .do|.ado|.scd|.tcl|.rvt|.ng2|.tmpl|.spt|.cfc|.cfm|.cfml|\
                .evoque|.kid|.handlebars|.hbs|.phtml|.jsp|.liquid|.mao|.mhtml|\
                .mc|.mi|.myt|.rhtml|.tpl|.ssp|.tea|.twig|.vm|.fhtml|.sls|\
                .feature|.tap|.awk|.vim|.pot|.po|.weechatlog|.todotxt|.thy|\
                .lean|.rts|.u|.vcl|.bpl|.sil|.vpr|.cirru|.duel|.jbst|.qml|\
                .qbs|.slim|.xqy|.xquery|.xq|.xql|.xqm|.whiley|.x10)
                    # extension recognized
                    pygmentize -f 256 -O style=$PYGMENTIZE_STYLE "$path"
                    ;;
                *)
                    # parse the shebang script header if it exists
                    lexer=$(head -n 1 "$path" |grep "^#\!" |awk -F" " \
'match($1, /\/(\w*)$/, a) {if (a[1]!="env") {print a[1]} else {print $2}}')
                    case "$lexer" in
                        node|nodejs)
                            # workaround for lack of Node.js lexer alias
                            pygmentize -f 256 -O style=$PYGMENTIZE_STYLE \
                                -l js "$path"
                            ;;
                        "")
                            exit 1
                            ;;
                        *)
                            pygmentize -f 256 -O style=$PYGMENTIZE_STYLE \
                                -l $lexer "$path"
                            ;;
                    esac
                    ;;
            esac
            ;;
    esac
done
exit 0

L'unico inconveniente di questo approccio è che Pygments è un programma Python, e quindi al primo utilizzo durante una sessione di shell, c'è un ritardo di "avvio a freddo". Le invocazioni successive sono molto più veloci.
Joe Coder,

Bello! Davvero completo.
Dario Seidl,

4

Usa il GNU Source-highlight ; puoi installarlo con aptse lo hai, o installarlo altrimenti dal sorgente. Quindi imposta un "preprocessore di input" per less, con l'aiuto delle documentazioni di Source-highligh per l' installazione con less :

Ciò è stato suggerito da Konstantine Serebriany. Lo script src-hilite-lesspipe.sh verrà installato insieme a source-highlight. È possibile utilizzare le seguenti variabili di ambiente:

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

In questo modo, quando si utilizza meno per sfogliare un file, se si tratta di un file di origine gestito dall'evidenziazione di origine, verrà automaticamente evidenziato.

Xavier-Emmanuel Vincent ha recentemente fornito una versione alternativa della combinazione di colori ANSI, esc256.style: alcuni terminali possono gestire 256 colori. Xavier ha anche fornito uno script che controlla quanti colori può gestire il tuo terminale e, nel caso, utilizza la variante 256. Lo script si chiama source-highlight-esc.sh e verrà installato insieme agli altri binari.


3

Per espandere un'altra risposta, puoi farlo funzionare per la maggior parte se non per tutti i tuoi script che non hanno estensioni modificando il file .lessfilter solo un po ':

#!/bin/sh
    case "$1" in
    *.awk|*.groff|*.java|*.js|*.m4|*.php|*.pl|*.pm|*.pod|*.sh|\
    *.ad[asb]|*.asm|*.inc|*.[ch]|*.[ch]pp|*.[ch]xx|*.cc|*.hh|\
    *.lsp|*.l|*.pas|*.p|*.xml|*.xps|*.xsl|*.axp|*.ppd|*.pov|\
    *.diff|*.patch|*.py|*.rb|*.sql|*.ebuild|*.eclass)
        pygmentize -f 256 "$1";;
    .bashrc|.bash_aliases|.bash_environment)
        pygmentize -f 256 -l sh "$1"
        ;;
    *)
        scriptExec=$(head -1 "$1" |grep "^#\!" |awk -F" " '{print $1}')
        scriptExecStatus=$?
        if [ "$scriptExecStatus" -eq "0" ]; then
            lexer=$(echo $scriptExec |awk -F/ '{print $NF}')
            pygmentize -f 256 -l $lexer "$1"
        else
            exit 1
        fi
esac

exit 0

Dovresti ancora aggiungere le due variabili a .bashrc:

export LESS='-R'
export LESSOPEN='|~/.lessfilter %s'

E dovrai comunque rendere eseguibile .lessfilter:

$ chmod 700 ~/.lessfilter

Inoltre volevo aggiungere che sotto debian il pacchetto pygments si chiama python-pygments. Inizialmente ho avuto difficoltà a localizzarlo perché l'ovvio errore di ortografia di "pigmenti" come "pigmenti" non mi suggeriva abbastanza che si trattava di un pacchetto che potrebbe essere preceduto da "python-" dal gestore pacchetti.


2
2 commenti: 1) Grazie per il miglioramento. 2) Frasi come "la migliore risposta votata" non sono eccezionali; ciò potrebbe cambiare (in effetti, se è meglio di quella risposta, questo post potrebbe diventare la risposta migliore, a quel punto sarà solo fonte di confusione. Forse dite semplicemente "espandere su un'altra risposta" o "la risposta di captaincomic"?
fino al

2

Puoi prendere in considerazione l'uso mostdell'utilità che è un'alternativa ecologica per lesse more.


puoi mostrarci un esempio? Ho provato qui e l'output era in bianco e nero.
Danilo,

Il tuo input dovrebbe contenere colori. Prima di produrre un campione COLORISED (ad esempio ccze -A </var/log/dpkg.log, ls -1 --color /var/log) allora pipe a most: ls -1 --color /var/log | most.
Onlyjob,

Sì, ho usato: git status | less --color,git status | most --color
danilo

Ho usato la maggior parte, di più, di meno, e tutti gli strumenti mostrano in bianco e nero
danilo il

Assicurati che il tuo comando produca colori prima di eseguire il piping su lesso altri. Assicurati che l'emulatore di terminale sia in grado di generare colori. Controlla TERMla variabile d'ambiente. Maggiori informazioni su unix.stackexchange.com/questions/148/… Quando possibile, utilizzare la moderna distribuzione GNU + Linux come Debian . Utilizza il motore di ricerca (ad es. Duckduckgo.com startpage.com ) per trovare le risposte. Ricorda che i commenti non sono per discussione.
Onlyjob

1

Condensato dal mio post sul blog completo sul miglioramento di meno esperienza: https://www.topbug.net/blog/2016/09/27/make-gnu-less-more-powerful/

Per manpage colorate, aggiungi quanto segue a .bashrco .zshrc:

export LESS_TERMCAP_mb=$'\E[1;31m'     # begin bold
export LESS_TERMCAP_md=$'\E[1;36m'     # begin blink
export LESS_TERMCAP_me=$'\E[0m'        # reset bold/blink
export LESS_TERMCAP_so=$'\E[01;44;33m' # begin reverse video
export LESS_TERMCAP_se=$'\E[0m'        # reset reverse video
export LESS_TERMCAP_us=$'\E[1;32m'     # begin underline
export LESS_TERMCAP_ue=$'\E[0m'        # reset underline

Per evidenziare la sintassi, usare un potente esistente lesspipe.shper gestirlo invece di scrivere il tuo: https://github.com/wofr06/lesspipe


1

Ho trovato questa soluzione semplice ed elegante. Non è necessario installare nulla in più poiché è già presente per impostazione predefinita sulla maggior parte dei computer. Come vimè installato di default sulla maggior parte dei computer, include una macro per funzionare vimcomeless

Alcune delle opzioni per usarlo sono per creare un alias: alias vless='vim -u /usr/share/vim/vim74/macros/less.vim'

o crea un collegamento simbolico: ln -s /usr/share/vim/vim74/macros/less.sh ~/bin/vless

Quindi corri e basta vless myfile.py

Ho ottenuto la maggior parte delle informazioni qui


1
Ho alias lesser='/usr/share/vim/vim80/macros/less.sh'in ~/bash_aliases(in Ubuntu 18.04). Può usare scorciatoie come f avanti, b indietro, d metà giù, u metà su, q esci, ecc ...
Daniel

0

La soluzione più intuitiva e diretta per me era usare pygmentize
aggiungendo le righe sottostanti a .bashrc

export LESS='-R'
export LESSOPEN='|pygmentize -g %s'

Nel caso in cui non si potesse chiamare pygmentize, basta installare come

pip install pygments

ps. Il pygmentizefile binario eseguibile starebbe dentro /usr/local/bin/o nel tuo /home/username/.virtualenv/venvname/bin/o da qualche parte.


-2

Nessuno di questi stava funzionando fuori dagli schemi per me e ho trovato un modo semplice per farlo funzionare, quindi ho pensato di condividere.

Usa semplicemente tmux, che ti consente di accedere e scorrere una cronologia più ampia e preservare perfettamente i colori.


1
Tmux non consente più terminali da una schermata, come cambia la visualizzazione dei colori di less?
Xen2050,

@ Xen2050 Penso che sia una soluzione alternativa, anche se questa risposta non spiega come accedere alla modalità di scorrimento (Ctrl-b + [)
siikamiika,

-2

Finché il testo di output ha caratteri di controllo del colore, less -Rlo farà.


Questo è ciò che dice un'altra risposta (di 9 anni fa). Le risposte che duplicano altre risposte non sono utili.
Kamil Maciorowski il

Giusto, ma quella risposta non rende esplicito che funziona solo su file creati con caratteri di controllo del colore.
Leonardo Raele,
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.