Как выделить синтаксис с помощью Less

51598
Jesper Rønn-Jensen

Есть ли способ синтаксического выделения файла, который я вижу в Less?

на самом деле я использую эту команду, чтобы открыть файл XML (а иногда и серию из них)

less htmleditors/htmleditors_config.xml 

или же

less [multiple files] 

Я хотел бы остаться в Меньше (чтобы лучше изучить эту программу и использовать мои знания: n и: p для следующей / предыдущей навигации)

Но ему также нужна какая-то базовая подсветка синтаксиса - по крайней мере, показывать комментарии по-другому. Вы знаете какой-нибудь способ сделать это?

123

15 ответов на вопрос

114
brandstaetter

Вы можете использовать GNU source-highlight, как показано здесь :

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

Начиная с Debian Stretch и Fedora 25, имена пакетов и пути к скриптам различаются. 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 
Я получаю следующее сообщение об ошибке при запуске `less ~ / .zshrc`. Ошибка: `src-hilite-lesspipe.sh: строка 9: источник-подсветка: команда не найдена`. Я запускаю это на MacOSX. JJD 12 лет назад 0
@JJD Вы установили источник-подсветка? Max Nanasy 12 лет назад 2
OSX: `brew install source-highlight`; `export LESSOPEN =" | /usr/local/bin/src-hilite-lesspipe.sh% s "`. Обратите внимание на изменение пути. Gregg Lind 10 лет назад 13
В Debian: `sudo apt-get install source-highlight`,` export LESSOPEN = "| /usr/share/source-highlight/src-hilite-lesspipe.sh% s" `,` export LESS = '-R' ` Morgan Courbet 10 лет назад 21
small caveat: source-highlight в настоящее время не поддерживает уценку. dhulihan 8 лет назад 2
также `alias more = 'more -R'` или `more` перестанут работать. Brian 7 лет назад 0
Как писал @dhulihan, источник-подсветка не поддерживает уценку. Но [highlight] (http://www.andre-simon.de/doku/highlight/en/highlight.php) поддерживает уценку и многое другое. OSX: `brew install highlight`; `export LESSOPEN =" | / usr / local / bin / highlight --out-format = xterm265% s "` ronen 7 лет назад 0
Обратите внимание, что пакет Debian на самом деле немного сломан: сам скрипт находится в `libsource-highlight-common`, но вызывает` source-highlight` из одноименного пакета, но не объявляет зависимость от него (разделяя, как они сейчас, они кажется, на самом деле образуют круговую зависимость). Alois Mahdal 7 лет назад 0
Для установок Raspbian используйте `export LESSOPEN =" | /usr/bin/source-highlight-esc.sh% s "`. steviethecat 6 лет назад 0
После установки и установки env var я все равно не получаю раскраски синтаксиса под меньшим, если только я не установил переменные env в `.bashrc`, странно, что установка его в` / etc / profile.d / less.sh` не работает; vars читаются, и я вижу их загруженными (добавлен `echo` в` / etc / profile`, чтобы увидеть, какие файлы загружены). Кто-то, чтобы помочь? Это оболочка входа с замазкой. WesternGun 6 лет назад 0
Для `source-highlight` требуется файл (именованный канал не будет работать) для подсветки синтаксиса, поэтому что-то вроде` pipe | меньше не сработает. Для решения см. [Этот ответ] (https://superuser.com/a/1332042/365890). Tom Hale 6 лет назад 0
Можно ли как-то совместить это с по умолчанию lesspipe (.sh)? AstroFloyd 6 лет назад 0
85
Mxx

Лучший из двух предыдущих ответов: вы можете вызвать системный редактор по умолчанию изнутри, нажав v.

Вот Это Да! Это удивительно полезно! dancek 12 лет назад 2
Проклятия, которые открыли Нано на моей коробке с Ubuntu! jamesc 11 лет назад 12
Затем установите $ EDITOR или $ VISUAL на vim (или emacs, или gedit, или joe, или ed, или mined, или ...). Daniel H 11 лет назад 5
@jamesc К вашему сведению, вы можете включить подсветку синтаксиса в Nano, [здесь] (http://askubuntu.com/a/90026/425899) как. Captain Man 8 лет назад 0
@CaptainMan Нету Нету Нету! Я изменил значение по умолчанию обратно на vim, как сказал Дэниел Х : D jamesc 8 лет назад 0
31
Razvan Stefanescu
pygmentize somefile.ex | less -R 

или же

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

Pygmentize входит в состав подсветки синтаксиса Python Python .

`pygmentize` также работает с вещами` LESSOPEN`, упомянутыми в других ответах здесь. Nathan 10 лет назад 3
Чтобы получить `pygmentize`, вам нужен Python, а затем вы можете установить` pygmentize` с помощью `pip install pygments`. wkschwartz 9 лет назад 2
Чтобы получить `less` для использования` pygmentize` для подсветки синтаксиса, используйте: `which pygmentize 2> / dev / null> & 2 && export LESSOPEN =" | pygmentize -g -f terminal256% s "`. `-g`, чтобы заставить его работать с каналами (` less <(файлы diff -u file1) `). Он доступен в пакете `community / pygmentize` для` arch linux` и в `python-pygments` для` debian`. x-yuri 9 лет назад 3
Мне нравится вывод `pygmentize`, но он оказался слишком медленным. Я придумал [этот ответ] (https://superuser.com/a/1332042/365890), который быстрее и все же хорошенький с 256 цветами. Tom Hale 6 лет назад 0
15
sixtyfootersdude

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

Вот некоторые из преимуществ использования текстового редактора (в частности, vim):

  • подсветку синтаксиса
  • мощные команды движения
  • находить
  • перейти к определенному месту в файле (называется меткой)
  • сворачивание (полезно, когда вы просто хотите увидеть функцию заглушек)

Чтобы открыть файл в режиме только для чтения, используйте это:

vim -R <file name> 

Вот основное руководство по навигации:

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 

Вот ссылка для получения дополнительной информации:

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

Напомним, что если вы будете использовать Unix, vim довольно фундаментален. Я слышал, что изучение vim похоже на обучение печатанию. Это следующий наиболее полезный инструмент для программирования.

(Чтобы избежать войн редакторов, вы также можете посмотреть на emacs или другой редактор, однако я лично предпочитаю vim)

Я второй это. Vim запускается так же быстро, как и меньше, и многие сочетания клавиш (например, поиск, следующая страница, предыдущая страница) идентичны. Jeremy W. Sherman 13 лет назад 1
Просто FYI, во многих системах `view` является псевдонимом для` vim -R`. Andrew Ferrier 12 лет назад 8
13
huyz

Как уже говорили другие, вы можете использовать силу vim. Но важно то, что вы можете сделать это, не научившись использовать vi / vim.

Vim поставляется со less.vimсценарием, который работает довольно хорошо, заменяя меньше, с подсветкой синтаксиса. Он использует lessсочетания клавиш (просто нажмите «q», чтобы выйти).

У него было несколько проблем, поэтому я его улучшил. У меня есть скриншот на http://huyz.us/2011/a-less-like-pager-with-color-syntax-highlighting/

Потрясающие! Но так как я не смог сразу найти скрипт, я хотел бы поделиться командой для его поиска: `find / usr / share / vim -name 'less.sh'`, которая взята из этого гиста: https: // gist.github.com/chauncey-garrett/9773770 yoshi 9 лет назад 2
Чтобы добавить комментарий @ yoshi, чтобы быстро добавить команду `vimless` (следуя номенклатуре` vimdiff`), выполните: `ln -s $ (find / usr / share / vim -name 'less.sh') / usr / местные / бен / vimless` waldyrious 7 лет назад 0
Ссылка 404! acgtyrant 6 лет назад 0
9
Lorenzo

I was also searching for this and found another solution using Vim: http://ubuntu-tutorials.com/2008/07/14/use-vim-as-a-syntax-highlighting-pager/

The post is rather old, so now on more recent distros vim 7.2 is shipped and the .bashrc will read: alias vless='vim -u /usr/share/vim/vim72/macros/less.vim'

MacVim поставляется со сценарием оболочки, который вы можете использовать напрямую, расположенный в: /Applications/MacVim.app/Contents/Resources/vim/runtime/macros/less.sh Nick 12 лет назад 1
Эта функция задокументирована в самом Vim в разделе [`: help less`] (http://vimhelp.appspot.com/various.txt.html#less) joeytwiddle 6 лет назад 0
7
Lindydancer

I'm glad to announce a new package, e2ansi, that provides syntax highlighting support for pagers like more and less.

The package use the mother of all text editors, Emacs, to perform the actual syntax highlighting. As an added bonus, all other conversions normally performed by Emacs -- like uncompressing files -- is also performed.

Example

The following is the result of viewing a file using less and e2ansi:

Example

Configuration

The package provides a command-line tool e2ansi-cat that starts Emacs in batch mode, opens files, syntax highlight them, and renders the result using ANSI sequences.

You can integrate this into less by setting the following variables to, for example (the location of your init file may vary):

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

In the configuration above, less restores the original terminal window content whereas more simply output new content after the prompt.

Note: If you use an old version of less, it might not support the || or the - syntax, in which case you may need to use simply LESSOPEN=|/usr/local/emacs ....

Using less in pipes

The "-" character in LESSOPEN indicates that the input filter should also be used when piping text into less. In this case, Emacs can only rely on text itself (and not a file name). Fortunately, Emacs provides a system for this. In addition, the provided file file e2ansi-magic.el sets up additional file types. For example:

Pipe example

Why use Emacs?

  • Emacs has support for virtually all programming languages and structured text formats. In most cases, the syntax highlighting support is excellent.
  • You can easily add support for more languages and formats, or modify existing packages to suit you needs.
  • Emacs support color themes. When using e2ansi, the colors in the theme is preserved when viewing a file in less. You can pick a suitable color theme from a number of sources, or design your own.
  • If you use Emacs as your editor of choice, you will get the same highlighting in the editor as you get when viewing a file using less (minus limitations in ANSI sequence format and the terminal window).
  • less will take advantage of Emacs features that perform automatic conversion, for example uncompressing files. In fact, you can teach Emacs to perform any kind of conversion like automatically convert a binary file to human readable form using an external tool.
  • You can view files located on other machines by using Emacs' syntax for remote access like /USER@HOST:FILENAME.

Useful links

  • e2ansi is distributed on Melpa and can be installed using the standard Emacs package system
  • e2ansi is hosted on GitHub
  • The e2ansi page on the Emacs Wiki
  • The home of less.

Operating system notes

  • On MS Windows, the console does not natively support ANSI sequences. Fortunately, the less application is capable of rendering them. I am not aware of any contemporary binary distribution of less for MS Windows and the provided build files is hard to use. Fortunately, it's easy to build less using CMake, see this text for details.

  • OS X distributes an ancient version of less. Fortunately, it's easy to build a modern version directly from the source.

Для OS X я бы рекомендовал использовать менеджер пакетов * brew * [http://brew.sh/] с * brew dupes * [https://github.com/Homebrew/homebrew-dupes] для установки до версии таких вещей, как «меньше». drevicko 8 лет назад 0
"питание от emacs" - запуск целой виртуальной машины только для просмотра файла? ;-) и +1 Alois Mahdal 7 лет назад 0
6
Oliver

Если у вас установлен GNU Source-highlight, вы можете использовать следующую команду, чтобы выделить синтаксис одного файла:

$ src-hilite-lesspipe.sh yourfile.xml | less -R 
Может ли `src-hilite-lesspipe.sh` получать данные также и по каналу? waldyrious 7 лет назад 0
2
Vitalie Ghelbert

source-highlightимеет .shсценарий, расположенный в /usr/share/source-highlight/*.sh. Я создал символическую ссылку на него с именем hcatв /usr/bin.

Показывает выделенный вывод в терминале (консоли) - hcatподсвечивается кат.

Как:

[me@this]<bash><~> 43  21:23 Fri Apr 19 > sudo apt-get install source-highlight  [me@this]<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*  [me@this]<bash><~> 29  21:04 Fri Apr 19 > sudo su root@this:/home/me# cd /usr/bin/ root@this:/usr/bin# ln -s /usr/share/source-highlight/src-hilite-lesspipe.sh hcat  [me@this]<bash><~> 36  21:07 Fri Apr 19 > hcat test.xml 
2
TeNGiL

Используя OS X 10.9 (Maverick), это поможет:

  • brew install source-highlight (при условии, что brew установлен - http://brew.sh )
  • sudo nano /etc/launchd.conf

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

    (Добавить в /etc/launchd.conf)

  • перезагружать