yukke::note

technical note

/usr/bin/lessでもファイルをカラーでprettyにprintしたい

問題

  • pagerならlvでもlessでもなんでもよいが、ソースコードや構造化されたファイル形式 (XMLCSVなど)は、白黒よりもattributeやvalue、stringかintによって色が代わって表示されると中身を把握しやすい。
  • しかしながら、標準のlessやlvにさまざまな形式に対応したシンタックスハイライト機能はない。

どうするか

  • pygmentize (http://pygments.org/)というソフトウェアがあるのでこれを使うと、いい感じにシンタックスハイライトしてくれる。
  • pip install pygmentizepip install pygments-style-solarizedしてsolarized themeも入れておく。
  • こんな感じにxmlがpretty printされる。見やすい。

f:id:soh3914:20141014151452p:plain

さらにひと味

  • pygmentize便利なんだけど、いちいちコマンドから入力するのはめんどくさいので以下のような雑なシェル関数を定義する。
  • これを~/.zshrcなどに追記しておくと、コマンドラインから$ pp sample.xmlをすると、solarizeddarkでいい感じにハイライトされた見やすいXMLになる。しかもless -Sにpipeされてるので大きなファイルを見ても安心。
  • 便利なので、使うとよいです。