色付きの出力を提供するツールがあります。
dwdiff -c File1 File2 # Word level diff
grep --color=always # we all know this guy
...
問題は次のとおりです:任意のプログラムのカラー出力をカラーhtmlファイルに変換する方法
他の出力形式も適しているかもしれません(LaTeXは素晴らしいでしょう)。 HTMLは他の形式に変換するのが簡単なので、良い出発点だと思います。
(端末のカラーコードを保持する方法については、回答に従ってください: https://unix.stackexchange.com/a/10832/9689... | unbuffer command_with_colours arg1 arg2 | ...
-ツール nbuffer は expect の一部です)
この質問 への答えは、おそらくあなたが望むものです。
それはあなたが探している変換を行うこれらのツールにリンクしています:
Perlパッケージ HTML :: FromANSI
aha 、C言語プログラム( github repo )
AnsiEsc.vim プラグインを使用してvim
を試し、エスケープコードを介してANSIカラーを表示してから、標準出力にvim -
にリダイレクトできます(:syntax on
)。次に、vimコマンドでファイルをHTMLに変換します::TOhtml
。生成されたHTMLファイルは、カラー出力されているはずです。
ソースコードを非インタラクティブにhtmlに変換するには、次のコマンドを試してください:
vim -E -s -c "let g:html_no_progress=1" -c "syntax on" -c "set ft=c" -c "runtime syntax/2html.vim" -cwqa myfile.c
出典::help g:html_no_progress
(:help TOhtml
の一部)。
注:-
の代わりにmyfile.c
を使用して、コードを標準入力から変換できます。
Vimを使用できます。これは、diff出力をHTMLに変換するために使用するスクリプトの一部です。
vim -n \
-c ':%s%^+ %+++ ' \
-c ':%s%^- %--- ' \
-c ':%s%^ % ' \
-c ':set nu' \
-c ':let html_use_css=1' \
-c ':so $VIMRUNTIME/syntax/2html.vim' \
-c ':wq' -c ':qa!' $input > /dev/null 2> /dev/null
この後、sedを実行してCSSとタイトルを変更し、希望どおりの名前に変更します。
*編集:色を取得するには、構文の強調表示をオンにする必要があることを述べました。私はそれを私の.vimrcで行いますが、ここに追加したい場合は、次のような別の行になります
-c ':syntax on' \
パイプで連結された出力が色を持たないことを前提に記述されたコマンド(一部のテストフレームワークなど)を使用している場合は、スクリプトユーティリティを使用して最初にansi出力を保存すると便利です。次に、これをahaまたは前述のその他のユーティリティにプッシュできます。
pdate:module HTML :: FromANSI from CPAN ..を使用してPerl
メソッドを追加しました。インストールするには、ディレクトリに抽出するだけです。そして、そのディレクトリからroot:Perl -MCPAN -e 'install HTML::FromANSI'
として実行します。あなたの要求に合う特定の機能は、ansi2html
と呼ばれるスクリプトです。興味深いことに、ファイル名にk
を重ねた後もelisp-Shellスクリプトと同じように色が失われています...使用例は次のとおりです。
ls -l --color=always /bin/*k* |
grep --color=always "k\|x\|2010" |
ansi2html >/tmp/example.html
firefox /tmp/example.html
これはhtml出力です。 Firefoxで見られるように:
emacselisp-Shell script ...を使用したメソッドの例を次に示しますhtmlizeと呼ばれます... Emacsはランニング。
もともとは黒い背景でテストしましたが、何らかの理由で、白い背景はERASE_LINEと思われる導入済みのエスケープコード\e[K
の1つではうまく機能しないことに気付きました(Erase端末出力の現在の行)。このエスケープコードを削除する行を追加しました。白い背景で動作するようになりました。
次の例は、ls
からの色強調表示の出力をgrep
にパイプして、さらに色を強調表示しています。
ls -l --color=always /bin/*k* |
grep --color=always "k\|x\|2010" >/tmp/example
htmlize /tmp/example
firefox /tmp/example.html
これはelsip-Shell
スクリプトです。
#!/bin/sh
":"; exec /usr/bin/emacs -Q --script "$0" -- "$@" # -*-emacs-LISP-*-
(require 'ansi-color) (require 'htmlize)
(find-file (setq path-in (cadr argv)))
(ansi-color-apply-on-region (point-min) (point-max))
(switch-to-buffer (buffer-name (htmlize-buffer)))
(write-file (concat path-in ".html"))
以下は、Firefoxでのhtml出力のサンプルです...時間がある場合は、オーバーレイするANSIコードの問題を詳しく調べます。赤のk
sが緑のファイル名と重なっていますが、grepのテスト正規表現を急いで選択したためです(おそらく\e[K
が影響しています...
これは@ user17591ソリューションのフォローアップです-vimスクリプト:
#!/usr/bin/vim -ns
:%s%^+ %+++
:%s%^- %---
:%s%^ %
:set nu
:let html_use_css=1
:so $VIMRUNTIME/syntax/2html.vim
:wq
:qa!
それをchmodして
使用法: htmlvim file
(file.htmlを生成するため)