ターミナルでの構文の強調表示


43

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

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

回答:


66

highlight同じ色のエスケープシーケンスをサポートする端末上xterm

highlight -O xterm256 your-file | less -R

ruby-rouge

rougify your-file | less -R

python-pygments

pygmentize your-file | less -R

GNUsource-highlight

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

付属vimmacros/less.shスクリプトの助けを借りてページャーとして使用することもできますvim(詳細については、以下を参照:h lessvimてください)。

私のシステムでは:

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

または、HTML出力をサポートする構文ハイライターを使用するelinksか、GNUのようにw3mページャー(または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

ハイライトはテキストをSVG / HTMLに変換できます。これは非常にエキサイティングです。
utopic eexpress

14

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

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

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


6

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

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

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


ありがとう!私が思うにlesspipe.sh、私が質問を投稿する前に私が...覚えてしようとしていたものです
アレクシス

2

私はシンプルさを楽しんでおり、nano text editorを使用しています。この場合、通常は次のように進めます。

魔女の構文のハイライトが利用可能であることを確認してください: ls -la /usr/share/nano/

次のコマンドを使用してnanorcファイルに含めるか、手動で実行してください

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

less私は見て与えることをお勧めこのページを


0

StéphaneChazelasの提案によると、highlightshow構文ハイライトを使用するbash関数を作成し、.bashrcなどに配置します。それは素晴らしく、速く、効果的です。

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

ハイライトサポート202言語構文形式。をご覧くださいhighlight --list-scripts=langs


0

パッケージe2ansiを使用できます。これはmore、やなどのページャーに構文強調表示のサポートを提供しますless

パッケージは、すべてのテキストエディターの母である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ます。幸いなことに、ソースから最新バージョンを直接ビルドするのは簡単です。


-2

構文強調表示と呼ばれます。

GNU Source-highlightは、ソースファイルを指定すると、構文が強調表示されたドキュメントを生成します。

lessfilter以下のスクリプトを使用するか、次のlessように自動的に呼び出すことができます。

export LESSOPEN="| /path/to/lessfilter %s"
export LESS=' -R '

私はこの記事を見つけて、次のように始めました。

#!/bin/sh
file -b -L "$1" | grep -q text &&
  /usr/share/source-highlight/src-hilite-lesspipe.sh "$1"

src-hilite-lesspipe.sh同梱されてsource-highlightいますが、すべてのディストリビューションに含まれているわけではありません)


4
「この記事に行くと、著者はコマンドに大文字を使用しているため、Macを使用している必要があります」:少し混乱しているのではないかと思いますexport。このコマンド lessは環境変数のフラグを使用するLESSため、答えには多少の作業が必要です。
アレクシス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.