web-dev-qa-db-ja.com

端末での構文の強調表示

多くのプログラミング指向のエディターは、ソースコードを色分けします。端末で表示するためにソースコードを色付けするコマンドはありますか?

emacs -nw(新しいウィンドウをポップアップする代わりにターミナルで開く)でファイルを開くことはできますが、less(またはそれが機能する)のように機能するものを探していますwithless -R、入力でカラーエスケープシーケンスを通過します)。

43
alexis

highlight と同じ色のエスケープシーケンスをサポートする端末で xterm を使用:

highlight -O xterm256 your-file | less -R

Ruby-rouge を使用:

rougify your-file | less -R

python-pygments を使用:

pygmentize your-file | less -R

GNU source-highlight の場合:

source-highlight -f esc256 -i your-file | less -R

vimに同梱されているmacros/less.shスクリプトを使用して、vimをポケットベルとして使用することもできます(詳細については、vim内の:h lessを参照してください)。

私のシステムでは:

sh /usr/share/vim/vim74/macros/less.sh your-file

または、 GNU w3mのように、HTML出力をサポートする構文強調表示機能を使用し、elinksまたはelinks -dump -dump-color-mode 3 | less -Rをページャー(またはsource-highlight)として使用することもできます。

source-highlight -o STDOUT -i your-file | elinks -dump -dump-color-mode 3 | less -R
67

GNU source-highlight と組み合わせ less -R このため。シェルの初期化ファイルに次の行を追加します(~/.bashrc、 例えば):

cless(){
 LESSOPEN='| source-highlight --failsafe --out-format=esc256 -o STDOUT -i %s 2>/dev/null ' less -R "$@"
}

これにより、使用する言語に応じて自動的にソースコードに色が付けられます。色付けできない場合は、入力で直接lessが起動されます。

14
terdon

より一般的にlessの色に興味がある場合は、lesspipe.sh。たとえば、 http://freecode.com/projects/lesspipe を参照してください。

lesspipe.shは、lessのmanページで説明されているページャーlessの入力フィルターです。スクリプトはksh互換のシェル(bash、zshなど)の下で実行され、バイナリコンテンツを含むファイル、圧縮ファイル、アーカイブ、およびアーカイブに含まれるファイルを表示するために少ないリソースを使用できます。

また、テキストエディターと同様に、シェルスクリプト、Perlスクリプトなどに色を付けますが、「前処理」プログラムを使用せずに色付けを行います。

6
DaveEmme

私はシンプルさを楽しんでおり、nanoテキストエディターを使用しています。この場合、通常は次のように進めます。

魔女構文ハイライトが利用可能かどうかを確認してください:ls -la /usr/share/nano/

次のコマンドを使用して、または手動で実行することにより、nanorcファイルにそれを含めます

echo 'include /usr/share/nano/sh.nanorc' >> ~/.nanorc

lessをご覧になることをお勧めします このページ

2
lese

StéphaneChazelasの提案に従って、highlight show構文ハイライトを使用するbash関数を作成し、それを.bashrcなどに入れます。それは素晴らしく、速くて効果的です。

s(){ highlight --force -O ansi $1 | /usr/bin/less -R; }

ハイライトのサポート202言語構文形式。見る highlight --list-scripts=langs

0
utopic eexpress

morelessなどのポケットベルの構文強調表示サポートを提供するパッケージ e2ansi を使用できます。

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

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

Example

構成

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

これを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は、追加のファイルタイプを設定します。例えば:

Pipe example

Emacsを使用する理由

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

役立つリンク

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

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

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

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

0
Lindydancer