web-dev-qa-db-ja.com

Lessによる構文ハイライトの方法

lessで見ることができるファイルを構文ハイライトする方法はありますか?

実際に私はxmlファイルを開くためにこのコマンドを使用しています(そして時々それらのシリーズ)

less htmleditors/htmleditors_config.xml

または

less [multiple files]

私はLessを使い続けたい(そのプログラムをよりよく学ぶため、そして次のナビゲーションへの私の知識を使うために)

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

130

GNUのsource-highlight を使うことができます、 here (パスは異なるかもしれません。下記参照):

 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
    
120
brandstaetter

両方の前の答えのベスト:あなたはより少ない内からシステムデフォルトエディタを呼び出すことができます、を押すことによって v

91
JiM
pygmentize somefile.ex | less -R

または

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

Pygmentizeは Pygments Pythonシンタックスハイライト の一部として提供されています。

32
user31752

私はあなたがテキストエディタを使うべきだと思います。私は自分自身を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や他のエディタを調べることもできますが、Ipersonallyvimを好むでしょう)

16

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

Vimには、less.vimスクリプトが付属しています。このスクリプトは、フルカラーの構文強調表示を使用して、lessの代替品として非常にうまく機能します。それはlessキーバインドを使います(やめるには 'q'を押してください)。

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

screenshot of https://github.com/huyz/less.vim

15
huyz

私もこれを探していて、Vimを使って別の解決策を見つけました: http://ubuntu-tutorials.com/2008/07/14/ use-vim-as-a-syntax-high -ighting-ページャ/

投稿はかなり古くなっているので、より最近のディストリビューションではvim 7.2が出荷され、.bashrcは次のようになります。

10
Lorenzo

新しいパッケージ e2ansi を発表して嬉しいです。これはmorename__やlessname__のようなページャの構文強調表示をサポートします。

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

以下は、lessname__およびe2ansiを使用してファイルを表示した結果です。

Example

設定

このパッケージは、Emacsをバッチモードで起動し、ファイルを開き、構文を強調表示し、そしてANSIシーケンスを使って結果をレンダリングするコマンドラインツールe2ansi-catを提供します。

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

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

上記の設定では、lessname__は元の端末ウィンドウの内容を復元しますが、morename__はプロンプトの後に新しい内容を出力するだけです。

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

パイプでのlessname__の使用

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

Pipe example

なぜEmacsを使うの?

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

便利なリンク

  • e2ansiMelpa で配布されており、標準のEmacsパッケージシステムを使ってインストールすることができます。
  • e2ansiGitHub でホストされています。
  • Emacs Wikiのe2ansiページ
  • lessNAME _ のホーム。

オペレーティングシステムの注意事項

  • MS Windowsでは、コンソールはANSIシーケンスをネイティブにサポートしません。幸い、lessname__アプリケーションはそれらをレンダリングすることができます。私は、MS Windows用のlessname__の最近のバイナリ配布を知らないし、提供されているビルドファイルは使いにくいです。幸い、 CMake を使ってlessname__を作るのは簡単です。詳しくは this text をご覧ください。

  • OS Xは昔のバージョンのlessname__を配布しています。幸い、ソースから直接最新版を構築するのは簡単です。

8
Lindydancer

GNU Source-highlight がインストールされている場合は、次のコマンドを使用して単一ファイルの構文を強調表示できます。

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

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に追加してください)

  • リブート

2
TeNGiL

source-highlightには、.shにある/usr/share/source-highlight/*.shスクリプトがあります。 /usr/binhcatという名前のシンボリックリンクを作成しました。

それは端末(コンソール)で強調表示された出力を示します - 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

私は highlight を見つけました:

  • 複数のカラースキームと256色をサポート
  • STDIN上で動作します(source-highlightとは異なります)
  • pygmentizeよりはるかに速いです

Screenshot

これは私がhighlight-less-wrapperと呼ぶスクリプトで、lessを設定してそれを自動的に使う方法についての.bashrcの説明を含んでいます。

#!/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
0
Tom Hale

マックでは、あなただけのview filenameをタイプすることができます、lessのような同様のことをします。

0
Alan Dong

私は同じ質問をし、私は聞いて着陸し、すべての答えを読みました、そして以下は私がlessまたはmostを使うたびに構文の強調表示をするためにやっとしたことです:

Sudo apt install source-highlight

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

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
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
joeytwiddle

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