JSONとYAMLを吐き出すコマンドラインプログラムがあります。デフォルトでは、ピリオド(pygmentize)が利用可能かどうかを検出し、ピリオドがあれば出力を渡して素敵なカラー出力を得ます。ただし、このプログラムが実行されるほとんどのコンピュータでは、デフォルトでpygmentsがインストールされません。しかし、ほとんどのコンピュータはemacsまたはvimのいずれかを持っていますが、そうしています。これらのエディタの1つにANSIエスケープシーケンスを使用してテキストをハイライト表示して出力する方法はありますか?emacsやvimの構文ハイライターをコマンドラインプログラムに利用していますか?
答えて
Emacsには、htmlfontify
という機能があり、フォント化されたバッファをHTMLに変換します。小さなelispスクリプトを使用してこれをバッチモードで使用して、ファイルをHTMLとしてレンダリングすることができます。例:
emacs -q --batch --file myfile.rb --eval '(progn (require (quote htmlfontify)) (htmlfontify-buffer) (set-buffer-modified-p t) (save-buffer))'
ありがとうございます。申し訳ありませんが、私はターミナルに出力しているので、私はANSIのエスケープシーケンスでそれを必要とすることを明確にしていません。私のEmacsLisp-fuは厳しく制限されていますが、あなたは私に遊び方の指針を与えてくれました。 –
Emacs(cp。ataylorの答え)と同様に、Vimは完全な構文強調表示を持つバッファをHTMLにレンダリングすることができます。 :help 2html.vim
を参照してください。おそらく、バッファの構文を通るプラグインのコードの多くを再利用し、ANSIエスケープシーケンスにレンダリングするように変更することができますが、すべてのレンダリングロジックを自分で再実装する必要があります。
Vimをページャーとして使用するプラグインがいくつかありますが、Vimを使用してANSIエスケープシーケンスでバッファーを出力することはできません。結局のところ、Vimは端末の制御権を保持したいと思って、終了時にそれをクリアします。
私はVimの外に専用の別のソリューションを探すことをお勧めしますが、それはあなたがそれをインストールする必要があるということです。あなたが@IngoKarkatアドバイスに従うとANSIエスケープシーケンスをサポートするために、標準のプラグインを書き換えしたくない場合は
あなたは私のformatvimプラグインを使用することができ、それは
Format format csi to /path/to/file
を使用してANSIエスケープシーケンスにレンダリングをサポートしています。当初、私のプラグインは、新しいフォーマットを簡単に追加できるように、さまざまなフォーマットのサポートのための標準2htmlターゲティングの書き直しでした(ANSIエスケープシーケンスサポートを追加するのに30分を費やしましたが、主にこれらのシーケンスの仕様を読んでいました)。類似点を挙げる。大きなファイルの場合やvimの1つのインスタンスを使用していくつかのファイルをレンダリングする場合(ウォームアップ(「コンパイル」およびキャッシュ・フィル)段階がさらに実行のメリットによってマスクされるとき)は、より高速に動作することが知られています。
エディタはすでにエディタの画面キャプチャをするのは簡単ですが、ansiものを行うことができますか?
script -qc "stty rows 10000
emacs -nw -visit YOURFILE.YAML -eval '(redisplay t)' -f kill-emacs
resize"
(再表示のみGNU FSF Emacsのために必要とされる)
今あなたは、画面上の記録処理が見えたくない場合、あなたはそれをラップすることができ、キャプチャ
perl -p0E 's/\A(?s:.*)\e\[27m\r\n
\e\[A\n((?s).*?)
(?:\e\[K\n)+
\e.*\e\[27m\r$(?s:.*)\Z/$1/mx' < typescript
をクリーンアップperlのIO :: Ptyのようなもので隠された端末で
素敵なトリック!しかし、手にして問題のために少し過剰です。ありがとう。 –
Matthew Wozniskiは、Vimでこれを行うスクリプトvimcat.shを書いています。彼のバージョンはhttps://github.com/godlygeek/vim-files/blob/master/macros/vimcat.shです。私はそれにいくつかの変更を加えました(メモリが提供されていれば、その変更によってMac OS Xシステム上で動くことができました; /dev/fd/9
の代用が/proc/self/fd/9
の目的であったことを知っています)。私の要点をhttps://gist.github.com/4090959に見てください。
Vimの強調表示によって背景が変更された場合、両方のバージョンのスクリプトでデフォルトの背景色に戻すことができないと思います。
- 1. の行構文ハイライター?
- 2. Pythonの構文ハイライター
- 3. C++ビルダーの構文ハイライター
- 4. コマンドラインプログラムの周りにemacsラッパーモードを構築するためのレシピ?
- 5. オープンソースWPF SQL構文ハイライター?
- 6. Githubが使用するjavascript構文ハイライターは何ですか?
- 7. 私はカスタム言語で動作する構文ハイライターを探しています
- 8. 構文IntelliJ IDEAのDiffファイルのハイライター
- 9. 構文HTML5で動作するハイライターですか?
- 10. NetBeansの場合は、ヒストラ構文ハイライターまたはプラグインがありますか?
- 11. EmacsのVim
- 12. Vimスクリプトを使用して、オプションのVim機能が利用可能かどうかを確認します。
- 13. alex gorbatchevの構文ハイライターにエラーメッセージが表示される
- 14. emacsはグローバル文字列キャッシュを使用していますか?
- 15. EmacsでCoffeeScriptの色の構文を改善しましたか?
- 16. 初心者プログラマーにvim/emacsをお勧めしますか?
- 17. 後/構文ファイルのvimキーワード構文を無効にする
- 18. ファブリックコンポーザー構文ハイライター - プリキッズドックの参照が無効
- 19. 行番号付きHTMLのカスタム構文ハイライター
- 20. VIM XML構文ハイライトエラー
- 21. Propelのクエリのバグや悪い点を再利用していますか?
- 22. Vimの構文ファイル... "contains"を理解しようとしています
- 23. emacsのpdf-tools用のVimホットキー?
- 24. FFMPEGはまだCUDAやその他のハードウェアアクセラレーションを利用していますか?
- 25. 構文Vimで.gitignoreを強調表示しますか?
- 26. VimファジーファインダーはEmacsのようですか?
- 27. Vimの構文は単語のみに一致します
- 28. Vimの構文ファイルは
- 29. Vimの永続構文ハイライト
- 30. UNIX/vim - 構文エラーを確認してください
私はちょうどcoderayについて知りました。それはルビーベースであり、コマンドラインプログラムはpygraphizeよりはるかに高速です。 –
もう一つのオプションは[GNU Source-highlight](http://www.gnu.org/software/src-highlite/source-highlight.html)です。私はこれを使って[less](http://superuser.com/a/71593/79870)で色を取得します。 –
@RandyMorris:そうですね、それにはCPANモジュールがあります(私のプログラムはPerlベースです)。唯一の問題は、依存関係がかなり大きいことです(CPANモジュールを構築するソースハイライトとそのdevライブラリをインストールすると約100MBのDebianパッケージが取得されます)。 –