:make
や:!ls
などのコマンドを実行しようとすると、出力がまったく異なる画面/ビューに表示され、編集中のファイルはこのプロセス中に表示されません。とにかく、ファイルを表示して編集することはできますが、実行したコマンドはおそらく下部のウィンドウ、おそらくクイックフィックスウィンドウで実行できますか?
Vim 8またはneovimを使用している場合は、次のことを試してみてください。
http://github.com/skywind3000/asyncrun.vim 、
はるかに優れたユーザーエクスペリエンスを備えたvim-dispatchの優れた代替品。
使いやすく、:AsyncRunでバックグラウンドコマンドを開始するだけです(古い「!」コマンドと同じように)。
コマンドはバックグラウンドで実行され、プロセス全体が終了するのを待つ必要はありません。
出力はクイックフィックスウィンドウに表示され、エラーはエラーフォーマットと照合されます。
エラー出力をすぐに調べることも、実行中にvimで作業を続けることもできます。
vim-dispatch プラグインを非同期ビルド(make)に使用できます。
または、シェルコマンドの結果をクイックフィックスウィンドウにするだけの場合は、ex-modeで使用できます。
:cexpr system('ls -alh') | copen
さらに良いことに、これをあなたに追加してください.vimrc
command -nargs=+ Run :cexpr system('<args>') | copen
元モードで実行します。
:Run ls -alh
その動作は完全に正常です。 CLI Vimにはターミナルエミュレータが付属しておらず、決してありません。 GUI Vimにはダム端末エミュレーターが付属していますが、それはあなたが「ずっと昔から覚えている」ことだと思います。
別のVimウィンドウでコマンドを実行するためのプラグインが必要です。 ConqueTerm は現時点で覚えている唯一の名前ですが、他にも1つか2つあると思います。
Romainlが言ったように、これは正常な動作です。 Vimは出力を保存せず、外部コマンドの実行中にのみ表示されるポケットベルのように機能します。コマンド出力をスクラッチVimバッファー(:r !ls
)、前述のConqueのようなプラグインを使用するか、のようなターミナルマルチプレクサを使用してVimの外部でシェルウィンドウを分割します/ screenまたはtmux。
vimウィンドウを分割することはあなたのために働きますか?
次に、ファイルを編集するためだけにウィンドウを使用し、:makeを介して実行するために2番目のウィンドウを使用できます。
あなたはex-mode
を探しているかもしれません。通常モードでQ
と入力すると、ウィンドウの下部にコマンドプロンプトスタイルのバッファが表示されます。
詳細はこちら: http://vimdoc.sourceforge.net/htmldoc/intro.html#Ex-mode