Daha az veya daha fazlasını içeren bir dosyayı okurken, içeriği renkli olarak nasıl alabilirim?


415

Linux'ta bir dosyayı komutuyla okuduğumda lessveya moreiçeriği renkleri nasıl alabilirim?


5
Bu ilgili görünüyor: superuser.com/questions/36022/less-and-grep-color - yardımcı olur mu?
Jonik

7
Bu sorunun başlığı çok yanıltıcıdır. Bu sayfada iniş yapan birçok kişi , renkli çıktıya sahip bir komutu pipolarken alacağınız renklendirme sorununa bir çözüm bekliyor less: renkler kayboluyor. (Bu “borulama konusuna verilen cevaplar” içerir less -R, unbuffervb.) Ancak asıl soru, bir dosyayı açmakla ilgilidir ! - Belirsizlik öncelikle soru başlığındadır, ancak bunun dışında IMHO soru hala çok geniştir: ”bir dosyayı okumak“ herhangi bir dosyaya atıfta bulunabilir (muhtemelen düz metin). (peki, ”içeriği renklerle al“ büyük olasılıkla sözdizimi vurgulamasına atıfta bulunur.)
myrdd

Kendimi düzeltmem gerekiyor, 14 cevabın sadece 3'ü (veya 4'ü) OP'nin asıl sorusunu özlüyor: ChristopheD , Puneet ve Onlyjob'ın yanıtları ; ve belki jbbr . Yine de, bu cevapların ikisi en yüksek oyu alanların üçünün bir parçası.
myrdd

@ myrdd "sözdizimi vurgulama", o zaman ilgili terimdir ... (Renk göstermeyi değil, renk göstermeyi ister mi?) less -Raynı zamanda dosyalar üzerinde de çalışacak, örneğinls --color=always > /tmp/file && less -R /tmp/file
Gert van den Berg

1
@ myrdd Sorunun “sorulanın net olmadığı” olarak kapatılması en mantıklı olabilir çünkü ikisinden herhangi birini soran sorular muhtemelen bunun kopyası olarak işaretlenecektir… seçmen bunu ...) nasıl yorumladığını dayanarak) içinde renk çıkış kodları vardır (My kullanma durumu (rahatsız edici bir günlük dosyası oldu)
Gert van den Berg

Yanıtlar:


149

Pygmentize'in gücünü daha azıyla - otomatik olarak kullanabilirsiniz! (Elle borulamaya gerek yoktur.)

pygmentsPaket yöneticinize veya pip'inize (muhtemelen adı verilir python-pygments) kurun veya http://pygments.org/download/ adresini ziyaret edin .

Bir dosya yaz ~/.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

Senin içinde .bashrceklenti

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

Ayrıca, ~/.lessfilterçalıştırarak çalıştırılabilir hale getirmeniz gerekir.

chmod u+x ~/.lessfilter

Debian'da test edildi.

Kaptın bu işi. Bu elbette, daha fazla uzantı kabul etmek veya shebang'ı bashtan başka tercümanlar için ayrıştırmakla daha da geliştirilebilir. Bunun için diğer cevapların bazılarına bakın.

Bu fikir Pygments'ın yapımcılarının eski bir blog gönderisinden geldi , ancak orijinal yazı artık mevcut değil.


6
Kaynak kod dosyalarının renklendirilmesini istiyorsanız, ~ / .lessfilter programını çalıştırarak çalıştırmanız da gerekir chmod u+x ~/.lessfilter. Ayrıca pygmentize ( pygments.org/download ) yüklü olması gerekir.
Sergiy Belozorov

Birisi bunun gibi çalıştığını teyit edebilir mi, böyle bir komut çalıştırdığımda benim için bir etkisi olmazls -l | less
puk

7
@puk gibi bir şey yapabilirsin ls --color=always -l | less -R. Belli ki yazmanız gereken çok şey var ama siz onun gibi birşeye takma ad alabilirsiniz ll. Ekstra kütüphaneler kullanmak istemiyorsanız.
PhilT,

2
@ SergiyByelozyorov adlı kullanıcının cevabına yaptığı yorumu ekledi.
andrybak

2
Düzenlemem reddedildi, sanırım bir yorum olarak göndereceğim: Komutların çıkış kodlarını dolaylı olarak sınama. Kullanabilirsiniz if grep -q "#\!/bin/bash" "$1"( -qstandart çıktıyı bastırır). Standart hatayı ile yönlendirmek isteyebilirsiniz 2>/dev/null.
Tom Fenech

503

Takip etmeyi dene:

less -R

from man less:

-r veya --raw-control-chars

"Ham" kontrol karakterlerinin gösterilmesine neden olur. (...)

-R veya --RAW-CONTROL-CHARS

Gibi -r, ancak sadece ANSI "renkli" kaçış dizileri "ham" formunda çıkar. (...)


17
Bu, dosyanın kendisinde gösterilmesi gereken çıkış kodlarını içerdiğinde yararlıdır.
Nitrodist

1
Daha az -r hakkında bilgim vardı ama "/" kullanarak dosyayı aramak yanlış satırlar getirmeye devam etti. -R daha iyi bir iş çıkarmış gibi görünüyor. Bahşiş için teşekkürler.
Amos Shapira

54
Çoğu programın isatty(2)standart çıktısının bir terminal olup olmadığını kontrol etmek için sistem çağrısı kullandığı ve eğer değilse, genellikle renklendirilmiş çıkışı devre dışı bıraktığı belirtilmelidir . Herhangi bir borunun daha az olması isattydurumunda 0 döndürür. Bunun çalışıp çalışmadığını kontrol etmek için deneyinecho -e '\x1b[32;1mtest\x1b[m' | less -r
mic_e 24:13

11
Bu cevap aslında bir şeyleri sınamada mükemmel değil.
Michael Wolf

18
Bunu başarmak için -Rne zaman açtığınızı da yazabilirsiniz less.
Scz

138

Cevabı başka bir mesajda aldım: Less and Grep: Grep'ten daha azına bir boru kullanırken renkli sonuçlar elde

Sadece çalıştırdığınızda grep --coloro ima grep --color=autoçıktı bir terminal olup olmadığını tespit eden ve eğer öyleyse renkleri sağlar. Ancak, bir boru tespit ettiğinde renklendirmeyi devre dışı bırakır. Aşağıdaki komut:

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

Her zaman renklendirmeyi etkinleştirir ve otomatik algılamayı geçersiz kılar ve rengi daha az vurgulayarak alırsınız.

Uyarı: --color=alwaysTakma ad koyma , bazen bazı şeyleri bozar. Bu yüzden bir --color=autoseçenek var.


6
Güzel, teşekkürler. Bunun dışında -Rbir seçenek olarak kullanmam gerekiyor less.
naught101

10
grep -RÖzyinelemeli arama belirlemek için olduğuna inanıyorum . renklerin doğru şekilde geri çevrilmesi için less -Rgereklidir less. grep --color=always [grep cmds] | less -ROS X 10.7.3'te benim için çalışıyor!
Steven Lu,

@ naught101 @Steven Lu Bu yazıda, bazı kişilerin kullanması gerekmeyebilir gibi görünmesine rağmen less -R(yine de orijinal yazının yazarına göre).
jtpereyda

2
Grep'in sadece pip az-R komutunu bilmesi ve sonra renklendirme yapması için herhangi bir yol var mı? Bu nedenle, --color = her zaman ve daha az - R'yi her zaman koymak zorunda değiliz.
A-letubby

1
Bu, bugüne kadarki en basit çalışma cevabı. Teşekkürler!
Danny Staple,

37

Yerine viewkullanın less. vimSalt okunur modda dosyayı açar .

Neredeyse renkli less: araştırabileceğiniz bir çağrı cihazı /(ve daha fazlası). Tek dezavantajı, çıkamamanız qama ihtiyacınız:q

Ayrıca, aynı boyayı elde edersiniz vim(aslında kullandığınızdan beri vim).


Büyük dosyaların performansına ne dersiniz? Vim sözdizimi vurgulama büyük dosyalarda yavaş olduğu biliniyor.
pihentagy

'Büyük' ​​için değerin ne olduğunu bilmiyorum, ancak ~ 10000 satırlık bir dosyayı açmak anında, içeride arama yap.
Riccardo Galli

1
Ben yükselttim (haberim yoktu view) ama bir başka dezavantajı, bir imleç olduğundan j / k / up / down 'un anında kaydırmadığıdır.
Tyler Collier,

7
view -Borular yaparken eklemeniz gerekebileceğini unutmayın
user45909

6
vimtüm dosyayı belleğe yükleyen bir editördür, oysa lessbir çağrı aygıtı dosyayı kısmen belleğe yükler. Farkı büyük dosyalarla öğreneceksiniz.
sjas

16

Renkleri göstermek için daha az söylemek gerekirse -R ile çağırın:

less -R

Maalesef, bazı programlar stdout'larının bir terminal olmadığını tespit eder ve renkleri devre dışı bırakır - örneğin pacman (Arch Linux paket yöneticisi).

Bu durumlarda kullanmak mümkün unbuffer:

unbuffer <command> | less -R

Pacman kullanarak örnek

unbuffer pacman -Ss firefox | less -R

unbufferKomut genellikle paketinin bir parçasıdır expect(Arch Linux, Debian / Ubuntu) veya expect-dev(Debian / Ubuntu mirası sürümleri).

Sorunun bütünlüğüne cevap vermek için:

Diğerlerinin zaten cevapladığı gibi, pygmentizekaynak kodunu renklendirmek için harika. Gerektirmez unbuffer. En kolay çağrı:

pygmentize someSource.cpp | less -R

2
unbufferUbuntu'da kullanmak için,sudo apt install expect
wisbucky

Bu cevabın daha fazla oyuna ihtiyacı var.
Thomas Dignan

Ben önyükleme hataları kontrol etmek boru dmesg çıktısı çalışıyordu ama benimle halt kafa karıştırıcı hangi, unbuffer kullanmadıkça renkler işe yaramadı: unbuffer dmesg | less -Rbeklendiği gibi çalışır.
pbhj

15

pygmentizeHerhangi bir uzantı türünü kontrol etmeden -gokunan dosyalar için yararlı olan kullanılacak olanı otomatik olarak tahmin etme seçeneğini destekler STDIN.

Bunu kullanarak, .bashrcek 2 kodunuz olmadan yalnızca aşağıdaki 2 dışa aktarımı ayarlamanız gerekir :

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

4
Kısa ve etkili. Bir takma ad tanımlamayı tercih ederim, çünkü bazen daha az iyidir. Öyleyse: alias lesc = 'LESS = "- R" LESSOPEN = "| pygmentize -g% s" az "
Tiago

9

Bu rengin ne anlama geldiğini söylemediniz, örneğin bir metin dosyası için renkler ne olmalı?

İstediğiniz şey kaynak kod için sözdizimi vurgulamaksa, bir kaynak kod vurgulayıcısına ihtiyacınız var. Bazen böyle pygmentize kullanıyorum

pygmentize file.cpp | less

veya

pygmentize file.cpp | more

Etrafta başka vurgulayıcılar da var.

Bu oldukça hızlı. Ateşlemenin sakıncası vimyoksa, içeride olsaydı size sözdizimi vurgulama verebilecek bir salt okunur mod var vim.

view file.cpp

veya alternatif olarak, churnd'un cevabına bakınız.


5

Bu, yine bir kaç önemli geliştirmeyle yapılmış bir başka pygments tabanlı cevaptır:

  • bozulmaz lesspipeveya lessfilefiltreler
  • çoklu girişlerle çalışır less
  • komut dosyası türünü shebang başlığından doğru şekilde ayrıştırır
  • Pygments tarafından yazılmış tüm 434 dosya türlerinde çalışır.
  • renk şeması, ortam değişkeni olarak parametrelendirildi

Pygments ve Gawk'u yükleyin

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

Ortam Değişkenlerini Ayarla

Olup olmadığını kontrol edin lesspipeveya lessfilezaten etkin:

echo $LESSOPEN

Orada başvuruda bulunulan programlardan birini görmüyorsanız lesspipe, yüklü olduğundan emin olun (çoğu dağıtım onunla birlikte gelir).

Aşağıdakileri ekleyin ~/.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'

İstemiyorsanız lesspipe, evalifadeyi şu şekilde değiştirin :

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

Yaratmak, yapmak, tasarlamak, üretmek ~/.lessfilter

Aşağıdaki kodu ekleyin ve dosyayı çalıştırılabilir hale getirin: 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

Bu yaklaşımın tek dezavantajı Pygments'ın bir Python programı olmasıdır ve bu nedenle ilk kez bir kabuk oturumu sırasında "soğuk başlatma" gecikmesi vardır. Sonraki çağrılar çok daha hızlı.
Joe Coder

Güzel! Gerçekten kapsamlı.
Dario Seidl

4

GNU Source vurgulamasını kullanın ; Birlikte yükleyebilirsiniz aptEğer varsa, ya da başka bir kaynaktan yükleyin. Ardından , daha az kurulum için Source-highligh 'belgelerinin yardımı ile daha azına bir "giriş önişlemcisi" kurun :

Bu Konstantine Serebriany tarafından önerildi. Src-hilite-lesspipe.sh betiği source-highlight ile birlikte yüklenir. Aşağıdaki ortam değişkenlerini kullanabilirsiniz:

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

Bu şekilde, bir dosyayı taramak için daha az kullandığınızda, kaynak vurgulama tarafından işlenen kaynak bir dosyaysa, otomatik olarak vurgulanır.

Xavier-Emmanuel Vincent kısa süre önce alternatif bir ANSI renk düzeni sürümü sağladı, esc256.style: bazı terminaller 256 rengi işleyebilir. Xavier ayrıca, terminalinizin kaç rengi işleyebileceğini kontrol eden ve durumda 256 çeşidini kullanan bir komut dosyası sağlamıştır. Komut dosyasına source-highlight-esc.sh adı verilir ve diğer ikili dosyalar ile birlikte yüklenir.


3

Başka bir yanıtı genişletmek için, .lessfilter dosyasını birazcık değiştirerek uzantıları olmayan tüm komut dosyalarınız olmasa da en çok çalışmasını sağlayabilirsiniz:

#!/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

İki değişkeni hala .bashrc'ye eklemeniz gerekir:

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

Ve hala .lessfilter dosyasını çalıştırılabilir hale getirmeniz gerekecek:

$ chmod 700 ~/.lessfilter

Ayrıca debian paketinde pygments paketinin python-pygments olduğunu da eklemek istedim. Öncelikle onu bulmakta zorlandım çünkü “pigmentlerin” “pigmentler” olarak açıkça yazılmaması, bana paket yöneticisi tarafından "python-" ile eklenmiş bir paket olduğunun ipucunu vermedi.


2
2 yorum: 1) Gelişim için teşekkürler. 2) "En iyi cevabı oyladı" gibi ifadeler pek iyi değildir; bu değişebilir (aslında, bu cevaptan daha iyiyse, bu mesaj en üst cevap olabilir, bu noktada kafa karıştırıcı olur. Belki sadece "başka bir cevaba genişletmek" veya "captaincomic'in cevabını" mı söyleyebilirim?
cpast

2

Sen kullanarak düşünebiliriz mostrenk dostu için alternatiftir yarar lessve more.


bize bir örnek gösterebilir misin Burada denedim ve çıktı siyah ve beyazdı.
danilo

Girişiniz renkler içermelidir. İlk olarak, bir renkli görüntü numuneyi (örneğin, üretmek ccze -A </var/log/dpkg.log, ls -1 --color /var/log) daha sonra boru bu için most: ls -1 --color /var/log | most.
Onlyjob

evet, kullandı: git status | less --color,git status | most --color
Danilo

En çok, daha çok, daha az kullandım ve tüm araçlar siyah ve beyaz gösteriyor
danilo

Komutunuzun diğerlerine veya borularına geçmeden önce renkler ürettiğinden emin olun less. Terminal emülatörünüzün renk verebildiğinden emin olun. TERMOrtam değişkenini kontrol et . Daha fazla bilgi için: unix.stackexchange.com/questions/148/… Mümkün olduğunda Debian gibi modern GNU + Linux dağıtımlarını kullanın . Cevapları bulmak için arama motorunu kullanın (örn. Duckduckgo.com startpage.com ). Unutmayın ki yorumlar tartışma amaçlı değildir.
Onlyjob

2

Daha az deneyim geliştirmekle ilgili tam blog yazımdan yoğunlaştı: https://www.topbug.net/blog/2016/09/27/make-gnu-less-more-powerful/

Renkli man sayfaları için aşağıdakini .bashrcveya ekleyin .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

Sözdizimi vurgulama için, lesspipe.shkendiniz yazmak yerine, işlemek için güçlü bir bilgisayarı kullanma: https://github.com/wofr06/lesspipe


1

Bu basit ve zarif çözümü buldum. Çoğu makinede zaten varsayılan olarak olduğu gibi ekstra bir şey yüklemeniz gerekmez. Gibi vimçoğu makinelerde varsayılan olarak yüklenir, bu çalıştırmak için bir makro içerir vimgibiless

Bunu kullanmak için kullanabileceğiniz seçeneklerden bazıları takma ad oluşturmaktır: alias vless='vim -u /usr/share/vim/vim74/macros/less.vim'

veya sembolik bir link oluşturun: ln -s /usr/share/vim/vim74/macros/less.sh ~/bin/vless

O zaman sadece koş vless myfile.py

Buradaki bilgilerin çoğunu aldım


1
Ben alias lesser='/usr/share/vim/vim80/macros/less.sh'de ~/bash_aliases(Ubuntu 18.04 olarak). F ileri, b geri, d yarı aşağı, u yarı yukarı, q quit, vb gibi kısayolları kullanabilirsiniz ...
Daniel

0

Benim için en sezgisel ve yalındır çözüm, pygmentize
aşağıdaki satırları .bashrc dosyasına eklemekti.

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

Arayamazsanız pygmentize, hemen yükleyin

pip install pygments

ps. pygmentizeYürütülebilir ikili otururdu /usr/local/bin/veya aşağıdaki bilgileri de /home/username/.virtualenv/venvname/bin/ya da bir yere.


-2

Bunların hiçbiri benim için kutunun dışında çalışıyordu ve bu işi yapmanın kolay bir yolunu buldum, böylece paylaşacağımı düşündüm.

Sadece daha geniş bir tarihe erişmenizi ve kaydırmanızı sağlayan ve renkleri mükemmel şekilde koruyan tmux kullanın.


1
Tmux bir ekrandan birden fazla terminale izin vermiyor mu, daha az renk gösterimini nasıl değiştirir?
Xen2050

@ Xen2050 Her ne kadar bu cevap kaydırma moduna nasıl girileceğini açıklamamasına rağmen temiz bir çözüm olduğunu düşünüyorum (Ctrl-b + [)
siikamiika

-2

Çıktı metninin renk kontrol karakterleri olduğu sürece less -Ryapacaktır.


Bu (9 yıl öncesinden) başka bir cevabın söylediği şey. Diğer cevapları çoğaltan cevaplar kullanışlı değildir.
Kamil Maciorowski

Adil, ancak bu cevap, yalnızca renk kontrol karakterleriyle oluşturulmuş dosyalar üzerinde çalıştığını açıkça belirtmiyor.
Leonardo Raele
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.