vimでtail -fにカラー出力を表示させる方法は?


9

この質問で、ジルは答えました

さらに別の可能性はtail -fEmacsシェルバッファーで実行し、Emacsの構文カラーリング機能を使用することです。

私はvimユーザーなので、これをemacsではなくvimで実行したいと思います。 んvimのは、この機能を持っていますか?


2
Emacsとは異なり、Vimは単なるテキストエディターです...しかし、Vimに役立つプラグインがあります。
jasonwryan 2012年

トリックを実行する可能性があるvimpagerプラグインもあります
bsd

1
テキストエディタである必要がありますか?あなただけの色のテキストに必要がある場合は、Clideを使用することができます
golimar

さらに、vim用のTailBundleがあります。
jofel

ここに同様の質問があります。ソリューションは、マルチテイルの使用とそれを構成する方法を説明しています。
ログオフ

回答:


2

マルチスレッドプラグインを作成して、PythonまたはVimがサポートし、スレッドを持っているその他のスクリプトで、リアルタイムでバッファーを変更できます。

しかし、これは私の知る限りターミナルでのみ機能します。少なくともX11では、GUIが別のスレッドによって変更された場合、GUIバージョンはクラッシュします。

他のプログラムを受け入れる場合、grccczeはストリームをカラー化できます。


0

私はそれが短くて、多くのハッキングや外部スクリプトなしで好きです。必要に応じて、ex(whimin vim)からこのonelinerを実行できます(または、ログファイルが開かれるときは、各コマンドをvimrcに配置します)。

:set autoread | au CursorHold * checktime | call feedkeys("lh")

さらに:set syntax=logtalk、ログに色を付けることができます

(ファイルの終わりに(ほぼ)ジャンプしたい場合は、フィードキーで「lh」の代わりに「G」を使用してください)

説明:

  • autoread:外部から変更されたときにファイルを読み取ります(ただし、それ自体では機能しません。内部タイマーなどはありません。vimがexのコマンドのようなアクションを実行したときにのみファイルを読み取ります :!
  • CursorHold * checktime:で指定された時間updatetime(デフォルトでは4000ミリ秒)の間、ユーザーがカーソルを動かさなかった場合checktime、ファイルの外部からの変更をチェックします
  • call feedkeys("lh"):カーソルが右、左に1回移動します。そして、何も起こりません(...つまり、CursorHoldトリガーされます。つまり、ループがあることを意味します)。

を使用しているときにスクロールを停止するにはcall feedkeys("G")、次を実行します:set noautoread-今vimはファイルが変更されたことを通知し、変更を読み取りたいかどうかを尋ねます)

たとえば、screen / tmuxを使用せずにsshセッションで作業している場合など、(tail -fの代わりに)vimでログファイルを監視するのが好きです。さらに、必要に応じてログファイルから直接コピーしたり、出力を直接保存したりできます。vimでできることは何でも:)

*この回答から(PhanHaiQuangによる回答flukusによるコメントを参照

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.