今日のLinuxディストリビューションには、ユーザーが圧縮ファイルやPDFファイルなどを簡単にスキャンできるデフォルトLESSOPEN
設定があります。/usr/bin/lesspipe
ここで、Lessに構文強調を追加できることを確認したいと思います。これは簡単です。強調されたソース。私はそれを使用し、LESSOPEN="| /usr/bin/source-highlight -i %s -q -f esc"
素晴らしい動作します。
しかし、今の質問は次のようになります。 lesspipeとsource-highlightの動作をどのように取得できますか?単に1つずつ追加することは機能しません。
$ export LESSOPEN="| /usr/bin/lesspipe %s | /usr/bin/source-highlight -i %s -q -f esc"
$ less foo
Invalid LESSOPEN variable
それも言えないからあまり驚くこともない。
複雑なスクリプトを書かなくても設定できますか?最良のシナリオは、接続を行うことです。つまり、圧縮ファイルに構文強調表示を提供することです。
答え1
初期パイプの後ろの変数のコマンドは、LESSOPEN
環境変数が表すシェルによって実行され、SHELL
標準出力に必要なコンテンツを生成する必要があります。
lesspipe
標準入力から読み出し、標準出力に書き込む他のコマンドに入力として出力を渡すことができます。ただし、標準入力で読み取るには、source-highlight
強調表示する言語を教える必要があるため、source-highlight
この方法は機能しません。
lesspipe
ファイル形式が認識されないと何も印刷されないため、元のファイルを読むという意味で解釈されにくいです。お持ちの場合ifne
~からJoey Hessのmoreutils、これを使用してこれらの状況を検出し、代替をsource-highlight
試すことができます。元のファイル名を変数に保存する必要がある場合は、2回使用できます。
LESSOPEN='|file=%s; /usr/bin/lesspipe "$file" | /usr/bin/ifne -n /usr/bin/source-highlight -i "$file" -o STDOUT 2>/dev/null'
-r
色があまり頻繁にレンダリングされないようにするには、開始後にまたはを入力する必要があります。-R
$LESS
-r
-R
less