3

問題: ファイル "tmp.rb" が変更されている場合、コマンド "e tmp.rb" が失敗します。

次の両方の条件で成功するコマンドを探しています。

  • 「tmp.rb」がバッファリストにない場合、ファイルがロードされます。
  • 「tmp.rb」が既にバッファリストにあり、変更されている場合、バッファは(現在のウィンドウで)ロードされます。

明確化: 誤解を招き申し訳ありません。e tmp.rb実際、変更された「tmp.rb」が現在のウィンドウにロードされていない限り、単一のコマンドで両方が達成されます。この状況e tmp.rbでは、エラーが発生せず、b tmp.rb. おそらく、この小さな懸念により、バッファやウィンドウなどに関するスクリプト作成がもう少し簡単になります。

4

3 に答える 3

1

:edit誤って変更を上書きしないように、バッファがすでにロードおよび変更されている場合、コマンドは失敗します。オーバーライドする場合は、:edit!代わりにを使用してください。多くのVimコマンドでは、追加されたbang(!)がコマンドを強制します。または、Vimに確認を求めたい場合は、を使用します:confirm edit

于 2012-12-15T14:14:12.063 に答える
0

質問のタイトルは「OR」ですが、本文は「AND」です。

通常、Vim のコマンドは非常に正確です。複数の相互に排他的な処理を実行するあいまいなコマンドを目にすることはめったにありません。挿入モードに入るために使用できるキーの数( iaIAsScCoO) は、この完璧な例です。

状況ごとに適切なコマンドを使用する必要があります。

:e tmp.rb
:b tmp.rb

プラグインのインストールを気にしない場合は、CtrlP:CtrlPMixedがその優れた抽象化に役立つ場合があります。

于 2012-12-15T14:45:07.277 に答える
0

問題を再現できませんでした。

あなたの問題を再現するために私がすることは

  1. tmp.rb を vim で開き、何か書いて保存します。
  2. 他のシェルでは、

    $ echo > tmp.rb
    
  3. :evim でorを入力e: tmp.rbすると、問題なくファイルが再度開かれます。

他のプログラムが同時に tmp.rb にアクセスしている場合、この他のプログラムはファイルをロックしている可能性があり、そのために説明した問題が発生しています。

于 2012-12-15T13:56:57.520 に答える