3

私のセットアップでは、vim (具体的にはグラフィカル モードの MacVim) を使用してソース ファイルを編集してから、vimdiff (再びグラフィカル モード) を使用して (mercurial) リポジトリの差分を作成します。差分を実行すると、vim で次のエラーが表示されることがあります。

スワップファイル "~/nn/src/imm/model/injector_node/.values_table.py.swp" は既に存在します!

これを修正するにはどうすればよいですか? vim に swp ファイルの作成を停止するように命令したり、vimdiff にそれらを無視したり、swp ファイルを別の場所に書き込むように命令したりできますか?

4

3 に答える 3

7

はい、(たぶん)、そしてはい。

スワップ ファイルをオフにするには:

set nobackup
set nowritebackup
set noswapfile

スワップ ファイルの場所を変更するには (私の好み):

" Set the directory of the swap file
" The // indicates that the swap name should be globally unique
set directory=~/.vim/tmp//,/tmp

tmpここでは、 の下のディレクトリに設定し.vimます。:h 'directory'オプションの各部分が何を表しているかについては、 を参照してください。

Vimdiff にスワップ ファイルを無視させることについては、よくわかりません。しかし、Mercurial で差分をチェックしているときに、同じファイルが MacVim で既に開かれているため、エラーが発生している可能性があります。差分を実行する前にファイルを閉じるだけであれば、問題ありません。

于 2012-06-29T04:10:08.573 に答える
4

別のアプローチをお勧めします: Mercurial コマンドライン インターフェイスを使用してファイル間の違いを表示する代わりに、VCS サポートを追加する vim プラグインの 1 つを使用します。この場合、何も閉じたり、スワップ ファイルを操作したりする必要はありません。

たとえば、私のaurum<leader>aDでは、 (mapped to ) を使用し:AuVimDiffて、現在開いているバッファーとリポジトリ内のそのバージョンの違いを表示し<Leader>Xてから、通常の表示に戻すことができます (何も編集していない場合は、開いた/閉じた折り畳みを復元することもできます)。let g:aurum_vimdiffusewin=1垂直または水平 (「diffopt」に応じて) 同じサイズの分割を使用すると、スクリプトは隣接するウィンドウの 1 つを再利用します。

を使用<leader>agDすると、リポジトリ内のすべてのファイルに対するすべての変更を、vimdiff 分割の複数のタブで表示できます (追加および削除されたファイルを除く): にマップされ:AuVimDiff fullます。私の知る限り、この機能はほとんどユニークです。同じ仕事をする mercurial 用のスクリプトがいくつかありますが、他の VCS プラグインとは統合されていません。もう一度、<leader>Xすべてのタブを閉じます。すでに開いているバッファは閉じられませんが、他のバッファは閉じられます。

私がお勧めする別のプラグインはVCSCommandです。

于 2012-06-29T17:44:05.280 に答える
1

この質問が1年以上前のものであることは知っていますが、gitの素晴らしい逃亡者プラグインに触発された、mercurialをvimに統合するプラグインであるlawrenciumをお勧めします。これらは、いくつかの単純なコマンドを使用して、実行していること (および他の多くの CVS のこと) をはるかに簡単にします。彼らはこれを言うために私にお金を払いませんでした。プラグインは本当に良いです!

于 2013-09-02T09:45:17.680 に答える