Lessを使用して構文を強調表示する方法


133

Lessに表示されるファイルを構文強調表示する方法はありますか?

実際、私はこのコマンドを使用してxmlファイル(および場合によっては一連のファイル)を開きます

less htmleditors/htmleditors_config.xml

または

less [multiple files]

Lessにとどまりたい(そのプログラムをより良く学び、次の/前のナビゲーションのために:nと:pの知識を使いたい)

ただし、何らかの基本的な構文の強調表示も必要です。少なくとも、コメントを異なる方法で表示します。あなたはそれを行う方法を知っていますか?

回答:


123

ここに示すように、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: line 9: source-highlight: command not found。これをMacOSXで実行します。
-JJD

2
@JJD source-highlightをインストールしましたか?
マックスナナシー

13
OSX: brew install source-highlight; export LESSOPEN="| /usr/local/bin/src-hilite-lesspipe.sh %s"。パスの変更に注意してください。
グレッグリンド14

23
Debianの場合:sudo apt-get install source-highlightexport LESSOPEN="| /usr/share/source-highlight/src-hilite-lesspipe.sh %s"export LESS=' -R '
モルガン・クールベ

3
小さな警告:source-highlightは現在、マークダウンをサポートしていません。
ドゥリハン16

97

過去の両方の回答のベスト:を押して、lessからシステムのデフォルトエディターを起動できますv


3
うわー!これは驚くほど便利です!
dancek

13
UbuntuボックスでNanoを開いた呪い!
ジェームズ

5
次に$ EDITORまたは$ VISUALをvim(またはemacs、またはgedit、またはjoe、またはed、またはmined、または...)に設定します。
ダニエルH

@jamescはFYI、あなたがナノで構文の強調表示を有効にすることができ、ここでの方法です。
キャプテンマン

@CaptainManいやいやいや!ダニエルHが言ったように、デフォルトをvimに戻します!:D
jamesc

33
pygmentize somefile.ex | less -R

または

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

Pygmentizeは、Pygments Python構文highliterの一部として提供されます


3
pygmentizeLESSOPENここの他の回答で言及されているものでも動作します。
ネイサン14

2
取得するにpygmentizeは、Pythonを必要とし、その後、インストールすることができますpygmentizepip install pygments
wkschwartz

3
取得するにless使用するpygmentizeシンタックスハイライトの使用のために:which pygmentize 2> /dev/null >&2 && export LESSOPEN="| pygmentize -g -f terminal256 %s"-gパイプ(less <(diff -u file1 files))で動作するようにします。それはで利用できるcommunity/pygmentizeため、パッケージarch linuxとで、python-pygmentsためdebian
x-yuri

の出力は気に入っていますがpygmentize、遅すぎることがわかりました。私はこの答えを思いついたがそれはより高速であり、それでも256色である。
トム・ヘイル

16

テキストエディタを使用する必要があると思います。私は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を好みます)


1
2番目にこれ。Vimはできるだけ早く起動し、キーボードショートカットの多く(検索、次のページ、前のページなど)は同じです。
ジェレミーW.シャーマン

10
多くのシステムで、ちょうどFYIはのviewエイリアスですvim -R
アンドリューフェリエ

15

他の人が言ったように、vimの力を使うことができます。しかし、重要なことは、vi / vimの使用方法を学ぶことなくそうすることができるということです。

Vimには、less.vimフルカラーの構文の強調表示を備えた、より少ないものの代わりとして非常にうまく機能するスクリプトが付属しています。lessキーバインドを使用します(終了するには 'q'を押します)。

いくつかの問題があったので、改善しました。これは私のブログ投稿のスクリーンショットです(アーカイブ2013-04-09; オリジナルスロー503):

https://github.com/huyz/less.vimのスクリーンショット


2
驚くばかり!:しかし、私はすぐにスクリプトを見つけることができなかったように私はそれを見つけるためのコマンドを共有したいと思いfind /usr/share/vim -name 'less.sh'、この主旨から取られる:gist.github.com/chauncey-garrett/9773770
nuala

vimlessvimdiffln -s $(find /usr/share/vim -name 'less.sh') /usr/local/bin/vimless
@yoshi

リンクは404です!
担当者

@acgtyrantは今修正する必要があります。インターネットアーカイブにはありがたいことにそれがあります。
bb010g

10

私もこれを探していて、Vimを使用して別のソリューションを見つけました:http : //ubuntu-tutorials.com/2008/07/14/use-vim-as-a-syntax-highlighting-pager/

投稿はかなり古いので、より最近のディストリビューションではvim 7.2が出荷され、.bashrcは次のようになります。alias vless = 'vim -u /usr/share/vim/vim72/macros/less.vim'


1
/Applications/MacVim.app/Contents/Resources/vim/runtime/macros/less.sh:MacVimの場所にある、あなたが直接使用できるシェルスクリプトが付属しています
ニック・

1
この機能はVim自体で文書化されています:help less
-joeytwiddle

8

やなどのページャーに構文強調表示のサポートを提供する新しいパッケージe2ansiを発表できてうれしいです。moreless

パッケージは、すべてのテキストエディターの母であるEmacsを使用して、実際の構文強調表示を実行します。追加のボーナスとして、Emacsによって通常実行される他のすべての変換(ファイルの圧縮解除など)も実行されます。

以下はlessand を使用し てファイルを表示した結果ですe2ansi

例

設定

パッケージには、e2ansi-catバッチモードでEmacsを起動し、ファイルを開いて構文を強調表示し、ANSIシーケンスを使用して結果をレンダリングするコマンドラインツールが用意されています。

lessたとえば、次の変数を設定してこれを統合できます(initファイルの場所は異なる場合があります)。

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

上記の構成でlessは、元のターミナルウィンドウのコンテンツを復元moreしますが、プロンプトの後に新しいコンテンツを出力するだけです。

注:の古いバージョンを使用している場合less||またはの-構文をサポートしていない可能性があり ます。その場合、単にを使用する必要がある場合があります LESSOPEN=|/usr/local/emacs ...

lessパイプで使用する

の「-」文字は、LESSOPENテキストをにパイプするときに入力フィルターも使用する必要があることを示しますless。この場合、Emacsはテキスト自体のみに依存できます(ファイル名ではありません)。幸いなことに、Emacsはこのためのシステムを提供します。さらに、提供されたファイルファイル e2ansi-magic.elは追加のファイルタイプを設定します。例えば:

パイプの例

Emacsを使用する理由

  • Emacsは、ほぼすべてのプログラミング言語と構造化テキスト形式をサポートしています。ほとんどの場合、構文強調表示のサポートは優れています。
  • より多くの言語と形式のサポートを簡単に追加したり、必要に応じて既存のパッケージを変更したりできます。
  • Emacsはカラーテーマをサポートしています。を使用する場合e2ansi、でファイルを表示するときにテーマの色が保持されますless。さまざまなソースから適切なカラーテーマを選択するか、独自にデザインすることができます。
  • 選択したエディターとしてEmacsを使用する場合、エディターを使用してファイルを表示するときと同じ強調表示が得られます less(ANSIシーケンス形式とターミナルウィンドウのマイナスの制限)。
  • lessファイルの解凍など、自動変換を実行するEmacs機能を利用します。実際、外部ツールを使用してバイナリファイルを人間が読める形式に自動的に変換するなど、あらゆる種類の変換を実行するようEmacsに教えることができます。
  • Emacsのようなリモートアクセス用の構文を使用して、他のマシンにあるファイルを表示できます/USER@HOST:FILENAME

便利なリンク

  • e2ansiMelpaで配布され、標準のEmacsパッケージシステムを使用してインストールできます。
  • e2ansiGitHubでホストされています
  • Emacs Wikie2ansiページ
  • の家less

オペレーティングシステムのメモ

  • MS Windowsでは、コンソールはANSIシーケンスをネイティブにサポートしていません。幸いなことに、lessアプリケーションはそれらをレンダリングできます。私はless、MS Windows用の現代的なバイナリ配布を知りません。提供されたビルドファイルは使いにくいです。幸い、CMakeless使用して簡単にビルドできます。詳細については、このテキストを参照してください。

  • OS Xはの古いバージョンを配布していlessます。幸いなことに、ソースから最新バージョンを直接ビルドするのは簡単です。


OS Xの場合、パッケージマネージャーbrew [ brew.sh/]brew dupes [ github.com/Homebrew/homebrew-dupes]を使用して、などの最新バージョンをインストールすることをお勧めしますless
drevicko

「powered by emacs」-ファイルを見るためだけにVM全体を実行しますか?;-)および+1
Alois Mahdal

6

あなたが持っている場合はGNUソース・ハイライトがインストールさは、単一のファイルの構文を強調するために、次のコマンドを使用することができます。

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

src-hilite-lesspipe.shパイプ経由でも入力を受信できますか?
ワルディアス16

2

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

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に追加)

  • リブート


0

Macでは、と入力するだけでview filename、以下のような同様の操作を実行できます。


1
OSXでは、デフォルトでview filename起動vimするだけです-わずかに異なるキーバインディングless(詳細については、この質問に対する他の回答を参照してください)。
drevicko

0

GNUのsource-highlightdev-util/source-highlightsabayon / gentooのパッケージ)をインストールした後、これらのenvを/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

lesspipeそれは他の機能を持っているので、私は交換したくない。連結は機能しませんでした。


0

あなたがしたい場合は、あなたがVimの中で使うの強調表示と同じ構文が、何らかの理由であなたが使用することを好むless:あなたのポケットベルなどを、あなたは、このスクリプトを使用することができますhttps://github.com/rkitover/vimpagerを

基本的な使用法は次のとおりです。

vimpager file.txt

または

vimcat file.ext | less -R

使用でき-cない追加コマンドを渡すことができます.vimrc(たとえば、異なるカラースキームを選択する)。私が使用する完全なコマンドは次のとおりです。

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

注意:Vimの起動時にEnterキーを押すように求められた場合、プロンプトは表示されませんが、Enterキーを押すまで何も起こりません!上記のcmdheightトリックはそれを軽減するのに役立ちます。


0

私はhighlightどれを見つけました:

  • 複数の配色と256色をサポート
  • STDINで動作します(とは異なりますsource-highlight
  • よりずっと速い pygmentize

スクリーンショット

ここに私が呼び出すスクリプトがあり、それを自動的に使用するためのセットアップ方法に関する指示highlight-less-wrapperが含まれています。.bashrcless

#!/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 "$@"; 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

「Githubは現在Mordor Corpの一部であるため、Gitリポジトリのハイライトは動きました」興味はありましたが、90年代ではなく、開発者が成長する必要があります。
ウルダ

0

私は、同じ質問を持っていたと私は聞くに上陸し、すべての答えを読んで、次は私が最終的に私が使う毎回構文強調持つことが何をしたかであるlessかをmost

sudo apt install source-highlight

それから私は行き、私のlessandのエイリアスを作成しましたmost(ZSHを使用していますが、.bashrcbashを使用している場合はファイルのエイリアスを追加できます)。

vim ~/.zshrc

vimの中で動けなくなるかもしれない人のために:プレスは、iあなたがプレスをやっているとき、編集モードに移動するにはEsc、その後:、その後x、最後に Enter変更を保存します

そして、Debianベースのディストリビューション(Debian、Ubuntu、Mintなど)に次の行を貼り付けます。

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'

または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'

覚えておいてください、端末を閉じて、必ずエイリアスが作成されていることを確認するために、再度、それを開くために。

今、あなたは色を楽しむことができます:

most yourFile.xml
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.