2

で調達しているvimスクリプトがあり--cmd "source path/to/file.vim"ます。完全なコマンドはもう少し長く、最後のコマンドは vim を終了することです。

vim --cmd 'source path/to/file1.vim' [... source other files] --cmd ':q'

これらのファイルでは、.vim でメッセージを vim に出力する処理を行っていますechomsg。これらのメッセージを にキャプチャしたいstdout

問題は、この処理の一部が で少しスリープする必要があることですsleep。ただし、実行するsleepと、vim は画面を再描画します。その結果、最初にエコーされたメッセージは、この画面の再描画で部分的にクリアされます。

Vim を終了すると、メッセージがシェルで正しく順番に出力されていることがわかりますが、断続的な再描画により表示が乱れます。

私が思いついた回避策の 1 つはwritefile、stdout を使用する代わりにメッセージをファイルに書き込むために使用することですが、その後、進行状況を表示する機能が失われます。

エコーされたメッセージをvimscriptからstdoutにキャプチャするより良い方法はありますか? これらは進行状況メッセージであるため、発生したメッセージを表示したいと思います。

ありがとう。

4

1 に答える 1