vimが外部コマンドを実行中に表示されているvimのステータス行を変更したいと思います。 私はvimからのテキスト行を "!"を使っていくつかの外部プログラムにパイプするvimスクリプトを持っています。実行後、vimはコマンドの出力が行を置き換えるのを待つ。待っている間、ステータスラインに外部コマンドのステータスを表示したいと思います。 これは可能ですか?コマンドを実行中にvimのステータス行を変更する
1
A
答えて
1
私は一時グローバル変数を使用してこれを解決します。ここでは、それが存在する場合は、変数g:temp_var
の値を返す単純な関数は、それ以外の場合は空の文字列を返し、次のとおりです。
function! TemporaryStatus()
if exists("g:temp_var")
return g:temp_var
else
return ""
endif
endfunction
あなたはこのように、この関数の戻り値を使用するようにステータスラインを設定することができます。
set statusline=%!TemporaryStatus()
次に、slow externalコマンドを呼び出すときは、(表示したいメッセージを使って)あらかじめテンポラリ変数を設定してから、unlet
を設定してください。 redraw!
コマンドは必ずVimが表示を更新(したがって、ステータスラインにg:temp_var
の更新された値を使用しています)を作成するために必要であることを
...
let g:temp_var = "I am calling a slow external command"
redraw!
call SlowExternalCommand()
unlet g:temp_var
redraw!
...
注:たとえば。もちろん
EDIT
このように、それをエコーし、その後表示をクリアすることでメッセージを表示するためにはるかに簡単になります。メッセージは、上に表示されます
...
redraw!
echo "I am calling a slow external command"
call SlowExternalCommand()
redraw!
...
この方法ステータスラインではなくVimコマンドライン。上で定義した関数は必要ありません。
関連する問題
- 1. vim外部コマンドでステータス行を更新
- 2. ステータス変更時にのみループ内でコマンドを実行
- 3. vimでコマンドを実行
- 4. vimのステータス行を読む
- 5. vimでcutコマンドを実行して現在のファイルを変更する方法
- 6. 実行中にコンテキストクラスローダーを変更する
- 7. システムによって実行コマンドのステータス()
- 8. 変更後に実行するコマンド
- 9. クエリの実行中に変更する
- 10. エラー:コマンドの実行中に
- 11. AsyncTaskのステータスは常に実行中
- 12. makefileの中でコマンドを実行する
- 13. Vim:シェルの代わりにエディタでコマンドを実行する
- 14. この設定でvim internal globalコマンドを実行するには?
- 15. vimでこのコマンドを実行するには
- 16. コマンド実行中に 'PushSharp'
- 17. Pythonファイルを実行した後にbashで実行されるVimコマンド
- 18. SQLコマンド実行中のエラー
- 19. java実行中のLinuxコマンド
- 20. bash:コマンド実行時のタブタイトルの変更
- 21. vimコマンドを静かに実行してからvimでエコーする
- 22. Arduinoの実行中に変数を変更する
- 23. vimコマンドを実行するためのバッチファイルの記述方法
- 24. cmakeの環境を変更するコマンドを実行する
- 25. 実行中にphpコマンドをキャッチ
- 26. moodleステータスが '進行中'に変更されていません
- 27. GreaseMonkey - 実行中に変数を変更する
- 28. 実行時にTableAdapterコマンドを変更する
- 29. 実行中のプロセスの環境変数を変更する
- 30. Vim:選択されたテキストをvimコマンドとして実行する方法
です。しかし私が必要とするのは更新されたステータスラインです。例えば。 5%10%15%(プログレス情報自体は外部コマンドによって生成され、パイプやファイルに書き込むことができますが、そこから読み込むことができます)。しかし、重要な問題は、ステータス行が外部コマンドを実行している間に更新を許可するかどうかです。 – highsciguy
これを '!'を使って行うことはできません。恐れ入ります。 '!'はシステムコール中にVimを一時停止します。あなたはVimを停止しないと主張する '!start'(':help:!start'参照)を試してみることができます。それがうまくいけば、コマンド実行中に 'g:temp_var'を更新することができます。 –
これはおそらく、私はファイルにコマンドの出力を挿入することができないことを意味しますか? – highsciguy