Читаючи файл з "менше" або "більше", як я можу отримати вміст у кольорах?


415

Коли я читаю файл в Linux з командою lessабо more, як я можу отримати вміст у кольорах?


5
Це здається пов'язаним: superuser.com/questions/36022/less-and-grep-color - чи допомагає це?
Джонік

7
Назва цього питання є дуже оманливою. Багато людей, що перебувають на цій сторінці, очікують вирішення проблеми з розмальовками, яку ви отримаєте, коли перебираєте команду з кольоровим виходом у less: кольори втрачаються. (Відповіді на це "питання про трубопроводи" включають less -Rі unbufferт.д.) Але власне питання стосується відкриття файлу ! - Неоднозначність полягає насамперед у назві запитання, але навіть, крім того, питання ІМХО все ще занадто широке: "прочитати файл" може стосуватися будь-якого файлу (ймовірно, простого тексту). (ну, "отримати вміст у кольорах", мабуть, мається на увазі підсвічування синтаксису.)
myrdd

Мені потрібно виправити себе, лише 3 (або 4) з 14 відповідей не відповідають актуальному питанню ОП: відповіді ChristopheD , Puneet і Onlyjob ; а може й jbbr . Тим не менше, два з цих відповідей є частиною трьох найвищих голосів.
myrdd

@myrdd "підсвічування синтаксису" є відповідним терміном, то ... (запитує про показ кольорів, а не додавання кольорів?) також less -Rбуде працювати і на файлах, наприкладls --color=always > /tmp/file && less -R /tmp/file
Герт ван ден Берг

1
@myrdd Це може мати сенс закрити питання як "незрозуміло, про що задається", оскільки питання, які задають будь-який із двох, швидше за все, будуть позначені як дублікати цього ... (І відповіді на будь-який з двох можуть бути оскаржені ґрунтуючись на тому, як виборця трактує це ...) (У моєму випадку використання був файл журналу, який (дратує) в ньому кольорові коди втечі)
Герт ван ден Берг

Відповіді:


149

Ви можете використовувати потужність пігментізувати менше - автоматично! (Не потрібно труби вручну.)

Встановіть pygmentsразом із менеджером пакунків або піп-файлом (можливо, зателефонованим python-pygments) або отримайте тут http://pygments.org/download/ .

Напишіть файл ~/.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

У вашому .bashrcдоп

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

Крім того, потрібно виконати ~/.lessfilterвиконуваний файл, запустивши

chmod u+x ~/.lessfilter

Тестували на Debian.

Ви отримуєте ідею. Звичайно, це може бути покращено, приймаючи більше розширень або розбираючи шебанг для інших перекладачів, ніж bash. Дивіться деякі інші відповіді на це.

Ідея виникла зі старої публікації в блозі від виробників Pygments , але оригінальної публікації вже не існує.


6
Якщо ви хочете мати забарвлення файлів вихідного коду, вам також потрібно зробити ~ / .lessfilter виконуваним chmod u+x ~/.lessfilter. Вам також потрібно встановити pygmentize ( pygments.org/download ).
Сергій Белозеров

Хто-небудь може підтвердити, що це працює, оскільки це не впливає на мене, коли я виконую таку команду, якls -l | less
puk

7
@puk ти можеш зробити щось на кшталт ls --color=always -l | less -R. Очевидно, що багато , щоб надрукувати , але ви могли б псевдонім його що - щось на зразок ll. Тобто, якщо ви не хочете використовувати зайві бібліотеки.
PhilT

2
додав у відповідь коментар @ Сергія Бієлозьорова.
andrybak

2
Мою редагування було відхилено, тому, мабуть, я надішлю її як коментар: Не перевіряйте вихідні коди команд опосередковано. Можна використовувати if grep -q "#\!/bin/bash" "$1"( -qпридушує стандартний вихід). Ви можете переспрямувати стандартну помилку за допомогою 2>/dev/null.
Том Фенек

503

Спробуйте наступне:

less -R

від man less:

-r або --raw-control-chars

Викликає відображення "сирих" контрольних символів. (...)

-R або --RAW-CONTROL-CHARS

Мовляв -r, але лише послідовності аварійних кольорів ANSI виводяться у "сирому" вигляді. (...)


17
Це корисно, коли сам файл містить коди евакуації, які потрібно буде відобразити.
Nitrodist

1
Раніше я знав про менше -r, але шукав у файлі за допомогою "/", постійно виводив неправильні рядки. -R, здається, робить кращу роботу. Дякую за пораду.
Амос Шапіра

54
Слід зазначити, що більшість програм використовують isatty(2)syscall, щоб перевірити, чи є їх стандартний вихід термінальним, і зазвичай вимикають кольоровий вихід, якщо його немає. Якщо будь-яка труба менша, isattyповернеться 0. Щоб перевірити, чи працює це, спробуйтеecho -e '\x1b[32;1mtest\x1b[m' | less -r
mic_e

11
Ця відповідь не відрізняється тим, що насправді щось робить тест.
Майкл Вольф

18
Ви також можете ввести, -Rколи ви вже відкрили lessдля досягнення цього.
Scz

138

Відповідь я отримав в іншому дописі: Менше і греп: Отримання кольорових результатів при використанні труби від grep до менше

Коли ви просто запускаєте, grep --colorце означає, grep --color=autoщо виявляє, чи є вихід термінальним, і якщо це дозволяє кольори. Однак, коли він виявляє трубу, він забарвлює забарвлення. Наступна команда:

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

Завжди вмикатиме забарвлення та змінювати автоматичне виявлення, а кольорове виділення ви отримаєте менше.

Попередження: Не ставте --color=alwaysйого псевдонімом, він іноді порушує речі. Ось чому є --color=autoваріант.


6
Приємно, дякую. За винятком того, що мені також потрібно використовувати -Rяк варіант less.
naught101

10
Я вважаю grep -R, що для визначення рекурсивного пошуку. less -Rнеобхідний для того, lessщоб правильно виплюнути кольори назад. grep --color=always [grep cmds] | less -Rпрацює для мене на OS X 10.7.3!
Стівен Лу

@ naught101 @Steven Lu Відредаговано, хоча здається, що деяким людям, можливо, не потрібно користуватися less -R(за словами автора оригінальної публікації, все одно).
jtpereyda

2
Чи є в будь-якому випадку, щоб греп знав просто трубу менше -R команду, а потім просто розфарбувати? Отже, нам не доведеться весь час ставити --color = завжди і менше -R.
A-letubby

1
Це, безумовно, найпростіша відповідь. Дякую!
Danny Staple

37

Використовуйте viewзамість less. Він відкриває файл vimу режимі лише для читання.

Це практично кольоровий less: пейджер, де можна здійснювати пошук /(і більше). Єдиний недолік - це те, що ви не можете вийти, qале вам це потрібно:q

Крім того, ви отримуєте таке ж забарвлення, як vim(оскільки ви фактично використовуєте vim).


Як щодо продуктивності великих файлів? Підсвічування синтаксису Vim, як відомо, є повільним на величезних файлах.
pihentagy

Я не знаю, яке значення для "великого", але відкриття файлу ~ 10000 рядків моментально, пошук всередині включений.
Ріккардо Галлі

1
Я схвалив (я не знав про це view), але ще одним недоліком є ​​те, що j / k / up / down не моментально прокручується, оскільки є курсор.
Тайлер Колліер

7
Зауважте, що вам може знадобитися додати view -під час трубопроводу
user45909

6
vimє редактором, який завантажує повний файл у пам'ять, тоді lessяк пейджер, завантажуючи файл лише частково в пам'ять. Ви знаєте різницю з величезними файлами.
sjas

16

Щоб сказати менше, щоб показати кольори, назвіть це з -R:

less -R

На жаль, деякі програми виявляють, що їх stdout не є терміналом і вимикає кольори - наприклад, pacman (Arch Linux Manager).

У цих випадках можливе використання unbuffer:

unbuffer <command> | less -R

Приклад використання pacman

unbuffer pacman -Ss firefox | less -R

unbufferКоманда зазвичай є частиною пакета expect(Arch Linux, Debian / Ubuntu) або expect-dev(старих версій Debian / Ubuntu).

Щоб відповісти на запитання для повноти:

Як вже відповіли інші, pygmentizeчудово підходить для розфарбовування вихідного коду. Це не вимагає unbuffer. Найпростіший дзвінок:

pygmentize someSource.cpp | less -R

2
Для використання unbufferна Ubuntu,sudo apt install expect
wisbucky

Ця відповідь потребує більше результатів.
Томас Дігнан

Я намагався передати dmesg вихід, щоб перевірити помилки завантаження, але кольори не спрацювали, якщо я не використовую unbuffer, що бентежить чорт у мене: unbuffer dmesg | less -Rпрацює як очікувалося.
pbhj

15

pygmentizeпідтримує -gможливість автоматичного відгадування використовуваного лексема, що корисно для файлів, зчитуваних STDINбез перевірки будь-якого типу розширення.

Використовуючи це, вам потрібно лише встановити наступні 2 експорту у вашому .bashrcбез додаткових сценаріїв:

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

4
Лаконічний і ефективний. Я вважаю за краще визначати псевдонім, бо іноді менше - краще. Отже: alias lesc = 'LESS = "- R" LESSOPEN = "| pygmentize -g% s" менше "
Tiago

9

Ви не сказали, що повинен означати цей колір, наприклад, якими мають бути кольори для текстового файлу?

Якщо ви хочете виділити синтаксис для вихідного коду, вам потрібно виділити вихідний код. Я іноді вживаю пігментизу так

pygmentize file.cpp | less

або

pygmentize file.cpp | more

Навколо є інші підсвічування.

Це досить швидко. Якщо ви не проти запускати, vimіснує режим лише для читання, який може виділити підсвічування синтаксису, якщо він у вас є vim.

view file.cpp

або альтернативно див. відповідь Чурда.


5

Це ще одна відповідь, заснована на фрагментах , з кількома основними вдосконаленнями:

  • не ламається lesspipeі не lessfileфільтрується
  • працює з декількома входами до less
  • правильно аналізує тип сценарію із заголовка shebang
  • працює для всіх 434 типів файлів, які можна використовувати за допомогою Pygments
  • кольорова схема параметризована як змінна середовище

Встановіть Pygments та Gawk

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

Встановити змінні середовища

Перевірте , чи правильно чи lesspipeабо lessfileвже включено:

echo $LESSOPEN

Якщо ви не бачите жодної програми, на яку посилається там, переконайтеся, що lesspipeвона встановлена ​​(більшість дистрибутивів із нею).

Додайте до ~/.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'

Якщо ви не хочете lesspipe, замініть evalзаяву на:

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

Створіть ~/.lessfilter

Додайте наступний код і зробіть файл виконуваним: 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

Єдиним недоліком цього підходу є те, що Pygmens - це програма Python, і тому при першому використанні під час сеансу оболонки спостерігається затримка "холодного початку". Подальші виклики набагато швидше.
Джо Кодер,

Приємно! Дійсно всебічно.
Даріо Сейдл

4

Використовуйте підсвітку джерела GNU ; ви можете встановити його, aptякщо у вас є, або іншим чином встановити його з джерела. Потім встановіть "вхідний препроцесор" менше, за допомогою документації "Виділення джерела" для налаштування з меншою кількістю :

Це запропонував Костянтин Серебраний. Сценарій src-hilite-lesspipe.sh буде встановлений разом із виділенням джерела. Ви можете використовувати такі змінні середовища:

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

Таким чином, якщо ви використовуєте менше для перегляду файлу, якщо це вихідний файл, який обробляється джерелом-підсвічуванням, він буде автоматично виділятися.

Xavier-Emmanuel Vincent нещодавно запропонував альтернативну версію кольорової гами ANSI, esc256.style: деякі термінали можуть працювати з 256 кольорами. Xavier також надав сценарій, який перевіряє, скільки кольорів може обробити ваш термінал, і у випадку, коли використовується варіант 256. Сценарій називається source-highlight-esc.sh і він буде встановлений разом з іншими бінарними файлами.


3

Щоб розширити ще одну відповідь, ви можете змусити її працювати більшість, якщо не всі ваші сценарії, у яких немає розширень, змінивши файл .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"
        ;;
    *)
        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

Вам потрібно буде додати дві змінні до .bashrc:

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

І вам все одно потрібно зробити .lessfilter виконуваним:

$ chmod 700 ~/.lessfilter

Також я хотів додати, що під debian пакет пігментів називається python-pygments. Спершу у мене виникли проблеми з тим, як явно неправильно написати "пігменти" як "пігменти" не було мені натяком на те, що це пакет, який менеджером пакунків може бути префікс "python-".


2
2 коментарі: 1) Дякую за покращення. 2) Фрази на кшталт "найкраща відповідь з голосом" не великі; що може змінитися (насправді, якщо це краще , ніж відповідь, цей пост може стати найкращою відповіддю, в який момент це буде просто ввести в оману Може просто сказати «щоб розширити на інший відповідь» або «відповідь captaincomic в».?
cpast

2

Ви можете розглянути можливість використання mostутиліти , яка є кольором чистою альтернативою для lessі more.


чи можете ви показати нам один приклад? Я спробував тут, і вихід був чорно-білим.
danilo

Вхід повинен містити кольори. Спочатку виробляють colorised зразок (наприклад ccze -A </var/log/dpkg.log, ls -1 --color /var/log) , то це труби до most: ls -1 --color /var/log | most.
Тількиробота

да, я використовував: git status | less --color,git status | most --color
Данило

Я використовував більшість, більше, менше, і всі інструменти показують чорно-білі
danilo

Переконайтеся, що ваша команда створює кольори перед тим, як переходити до lessінших або інших. Переконайтеся, що емулятор терміналу може виводити кольори. Перевірте TERMзмінну середовища. Детальніше читайте на unix.stackexchange.com/questions/148/… Коли можливо, використовуйте сучасний дистрибутив GNU + Linux, як Debian . Використовуйте пошукову систему (наприклад, duckduckgo.com startpage.com ), щоб знайти відповіді. Пам'ятайте, що коментарі не для обговорення.
Тількиробота

2

Зведений з моєї повної публікації в блозі про покращення меншого досвіду: https://www.topbug.net/blog/2016/09/27/make-gnu-less-more-moreful/

Для кольорових вручень додайте наступне до свого .bashrcабо .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

Для виділення синтаксису, використовуючи існуючий потужний lesspipe.shдля обробки, а не писати свій власний: https://github.com/wofr06/lesspipe


1

Я знайшов це просте елегантне рішення. Вам не доведеться встановлювати нічого додаткового, оскільки воно вже є за замовчуванням на більшості машин. Як vimвстановлюється за умовчанням на більшості машин, вона включає в себе макрос для запуску vimякless

Деякі варіанти його використання - це створення псевдоніма: alias vless='vim -u /usr/share/vim/vim74/macros/less.vim'

або створити символічне посилання: ln -s /usr/share/vim/vim74/macros/less.sh ~/bin/vless

Тоді ти просто біжиш vless myfile.py

Я отримав більшу частину інформації тут


1
У мене alias lesser='/usr/share/vim/vim80/macros/less.sh'в ~/bash_aliases(в Ubuntu 18.04). Можна використовувати ярлики, такі як f вперед, b назад, d половина вниз, u половина вгору, q вийти тощо ...
Даніель

0

Для мене найбільш інтуїтивно зрозумілим і прямим рішенням було pygmentize
додавання рядків нижче до .bashrc

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

Якщо ви не можете зателефонувати pygmentize, просто встановіть, як

pip install pygments

пс. pygmentizeВиконуваний двійковий файл буде сидіти /usr/local/bin/або в вашому /home/username/.virtualenv/venvname/bin/або де - небудь.


-2

Жоден із них не працював для мене, і я придумав простий спосіб зробити цю роботу, тому я подумав, що поділюсь.

Просто використовуйте tmux, який дозволяє отримувати доступ та прокручувати більшу історію та прекрасно зберігати кольори.


1
Не дозволяє tmux допускати декілька терміналів з одного екрана, як це зменшує менше відображення кольорів?
Xen2050

@ Xen2050 Я думаю, що це акуратне рішення, хоча ця відповідь не пояснює, як увійти в режим прокрутки (Ctrl-b + [)
siikamiika

-2

Поки текст у вихідному тексті має кольорові контрольні символи, less -Rце робитиме.


Про це говорить ще одна відповідь (з 9 років тому). Відповіді, які дублюють інші відповіді, не корисні.
Каміль Маціоровський

Справедливо, але ця відповідь не робить явним, що він працює лише на файлах, створених із символами керування кольором.
Леонардо Раель
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.