web-dev-qa-db-ja.com

猫に色を出力させるオプションはありますか?

シンタックスハイライト付きのCソースコードファイルを出力したい場合、catを使用できますか?

19
Jichao

A GNU package、 source-highlight は、トリックを実行しているようです(ただし、catを使用していません-John Tが指摘しているように、これは次の場合には不可能です)。特にcat)。Ubuntuのapt-getを介して利用可能であり、Boost正規表現ライブラリが必要です。両方が利用可能かどうかをパッケージマネージャーで確認してください。両方が利用可能でない場合は、Webから取得できます。GNU =以前にリンクされたページにはBoostへのリンクがあると思います。

インストール後、パスにccatという新しいスクリプトを作成しました。スクリプトは次のようになります。

#!/bin/bash
src-hilite-lesspipe.sh $1

特別なことは何もありません。source-highlightで含まれているlessスクリプトを単純化するだけです。このように呼ばれると、猫のように振る舞います。

ただし、含まれているlessスクリプトは、Niceスクリプトとしても使用できます。以下を。bashrcに追加しました:

export LESSOPEN="| /path/to/src-hilite-lesspipe.sh %s"
export LESS=' -R '

そのスクリプトは、ソースハイライトのオンラインマニュアルにも含まれています。

Catを完全に無視したい場合は、catにエイリアスしてsrc-hilite-lesspipe.sh $ 1を呼び出すことができると思いますが、それは望ましくない場合があります。

18
rgm

catのような構文で強調表示されたコードを出力するために、 http://scott.sherrillmix.com/blog/programmer/syntax-)の指示に従って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'
9
michaelvobrien

これを解決するために、私は 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を実行してhighlightをインストールできます。それ以外の場合は、他のほとんどのパッケージマネージャーで利用可能であり、ダウンロードできます ここ

また、構文が強調表示されたファイルをhtmlとして印刷し、ブラウザーで開いて印刷する関数を作成しました(OSXのopenコマンドに依存します)。

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
}

楽しい!

3
Kevin

いいえ、猫には構文強調機能はありません。構文が強調表示されたソースコードを表示したい場合は、vimまたは選択したエディター(構文が強調表示されている)にポップします。このように、長いファイルの場合は、を使用して出力をページングすることもできます。 CtrlF (フォワード)および CtrlB (後方)。

1
John T