回答:
GNUパッケージsource-highlightがこのトリックを実行しているようです(catは使用していませんが、John Tが指摘しているように、これはcatでは特に不可能です)。Ubuntuのapt-getを介して利用でき、Boost regexライブラリが必要です。パッケージマネージャーを使用して、両方が利用可能かどうかを確認してください。そうでない場合は、Webから入手できます。以前にリンクされたGNUページにはBoostへのリンクがあります。
インストール後、パスにccatという新しいスクリプトを作成しました。スクリプトは次のようになります。
#!/bin/bash
src-hilite-lesspipe.sh $1
派手なことは何もありません。source -highlightに含まれる少ないスクリプトを単純化するだけです。この方法で呼び出されると、猫のように機能します。
ただし、付属の少ないスクリプトは、使用するのに適したスクリプトです。以下を.bashrcに追加しました:
export LESSOPEN="| /path/to/src-hilite-lesspipe.sh %s"
export LESS=' -R '
このスクリプトは、source-highlightのオンラインマニュアルにも含まれています。
catを完全に無視したい場合は、src-hilite-lesspipe.sh $ 1を呼び出すためにcatをエイリアスすることもできますが、それは望ましくないかもしれません。
$1
:)で終わる1行のbashスクリプトのエイリアスを好みます。
brew install source-highlight
ます。yamlを色付けできません:(
のような構文で強調表示されたコードを出力するには、http://scott.sherrillmix.com/blog/programmer/syntax-highlighting-in-terminal/の指示に従ってコマンドcat
を作成しました。ccat
#!/bin/bash
if [ ! -t 0 ];then
file=/dev/stdin
elif [ -f $1 ];then
file=$1
else
echo "Usage: $0 code.c"
echo "or e.g. head code.c|$0"
exit 1
fi
pygmentize -f terminal -g $file
のような構文で強調表示されたコードを出力less
するには、vimを代わりに使用します。
alias less='/usr/share/vim/vim72/macros/less.sh'
.functions
としてcolorize(){...}
これを解決するために、highlightを使用しました。構文の強調表示を使用してファイルを印刷しようとする関数を作成しましたが、失敗した場合は単にcatを使用してファイルを印刷します。シンタックスハイライトテーマを好きなものに変更できます。
function hl { # Overrides the cat command to use syntax highlighting
# Highlight with 'moria' theme to terminal, and suppress errors
highlight $1 -s moria -O xterm256 2> /dev/null
if (($? != 0)); then # If the command had errors
cat $1 # Just cat the file out instead
fi
}
Macを使用していてHomebrewを使用している場合(強くお勧めします!)、を実行してハイライトをインストールできますbrew install highlight
。それ以外の場合は、他のほとんどのパッケージマネージャーで利用可能であり、ここからダウンロードできます。
また、構文を強調表示したファイルをhtmlとして印刷し、ブラウザーで開いて印刷する機能を作成しました(open
OS Xのコマンドに依存します)。
function hlprint {
# Print with line numbers and 'moria' theme
highlight $1 -l -o print.html -s moria
open print.html # Open in browser
sleep 5 # Give the browser time to open
rm print.html highlight.css # Remove output files
}
楽しい!
bat
ostechnix.com/を