web-dev-qa-db-ja.com

Vimは同じウィンドウでbashコマンド/ makeを実行します

:make:!lsなどのコマンドを実行しようとすると、出力がまったく異なる画面/ビューに表示され、編集中のファイルはこのプロセス中に表示されません。とにかく、ファイルを表示して編集することはできますが、実行したコマンドはおそらく下部のウィンドウ、おそらくクイックフィックスウィンドウで実行できますか?

5
woodstok

Vim 8またはneovimを使用している場合は、次のことを試してみてください。

http://github.com/skywind3000/asyncrun.vim

はるかに優れたユーザーエクスペリエンスを備えたvim-dispatchの優れた代替品。

enter image description here

  • 使いやすく、:AsyncRunでバックグラウンドコマンドを開始するだけです(古い「!」コマンドと同じように)。

  • コマンドはバックグラウンドで実行され、プロセス全体が終了するのを待つ必要はありません。

  • 出力はクイックフィックスウィンドウに表示され、エラーはエラーフォーマットと照合されます。

  • エラー出力をすぐに調べることも、実行中にvimで作業を続けることもできます。

  • 編集に集中している間、ベルを鳴らすか音を鳴らして、ジョブが終了したことを通知します。
  • Vim、neovim、gvim、macvimで対応するユーザーエクスペリエンスを提供します。
3
skywind3000

vim-dispatch プラグインを非同期ビルド(make)に使用できます。

または、シェルコマンドの結果をクイックフィックスウィンドウにするだけの場合は、ex-modeで使用できます。

:cexpr system('ls -alh') | copen

さらに良いことに、これをあなたに追加してください.vimrc

command -nargs=+ Run :cexpr system('<args>') | copen

元モードで実行します。

:Run ls -alh
3
ajkaanbal

その動作は完全に正常です。 CLI Vimにはターミナルエミュレータが付属しておらず、決してありません。 GUI Vimにはダム端末エミュレーターが付属していますが、それはあなたが「ずっと昔から覚えている」ことだと思います。

別のVimウィンドウでコマンドを実行するためのプラグインが必要です。 ConqueTerm は現時点で覚えている唯一の名前ですが、他にも1つか2つあると思います。

1
romainl

Romainlが言ったように、これは正常な動作です。 Vimは出力を保存せず、外部コマンドの実行中にのみ表示されるポケットベルのように機能します。コマンド出力をスクラッチVimバッファー(:r !ls)、前述のConqueのようなプラグインを使用するか、のようなターミナルマルチプレクサを使用してVimの外部でシェルウィンドウを分割します/ screenまたはtmux

1
Ingo Karkat

vimウィンドウを分割することはあなたのために働きますか?

  • :split-ウィンドウを水平方向に分割します
  • :vsplit-ウィンドウを垂直方向に分割します

次に、ファイルを編集するためだけにウィンドウを使用し、:makeを介して実行するために2番目のウィンドウを使用できます。

0
user203060

あなたはex-modeを探しているかもしれません。通常モードでQと入力すると、ウィンドウの下部にコマンドプロンプトスタイルのバッファが表示されます。

詳細はこちら: http://vimdoc.sourceforge.net/htmldoc/intro.html#Ex-mode

0
robbyphillips