16

コマンドプロンプトで、

vimdiff file1 file2

2つのファイルが並んで開いているvimインスタンスを取得します。ファイル内のテキストが次のようになっていると仮定します(file1が左側、file2が右側)。

╔═══════╤═══════╗
║foo    │-------║
║bar    │bar    ║
║grue   │-------║
║~      │~      ║
║~      │~      ║
╚═══════╧═══════╝

ここで、カーソルが「foo」の「f」にあり、file1の最初の行をfile2の最初の行にコピーしたいとします。

これを行う1つの方法は、 v $ yで行を選択してヤンク(コピー)し、Ctrl + wlを使用してカーソルをfile2の最初の行に移動し、pと入力してコピーした行を貼り付けることです。これを実行して、結局は本当にやりたくないと判断した場合は、uを押して、file2で実行した貼り付けコマンドを元に戻すことができます。

これを行う別の方法は、diffputコマンドdpを使用することです。ただし、これを行った後、それを行うつもりがないと判断した場合、カーソルがまだfile1にあり、uコマンドがfile1への最新の変更を元に戻すため、 uを押すだけで元に戻すことはできません file2への最近の変更。したがって、代わりにCtrl+wlまたはCtrl+wwを使用してカーソルをfile2のウィンドウに移動し、u押す必要があります。

したがって、私の質問は、上記のようにdpを使用した後、カーソルを他のファイルのウィンドウに移動せずに元に戻す簡単な方法はありますか?

4

3 に答える 3

13

これに対するコマンドは実際にはありませんが、独自にマップすることはできます。以下をvimrcに入れてから、duを使用してdiffundosを実行します。

nmap du :wincmd w<cr>:normal u<cr>:wincmd w<cr>
于 2009-06-03T18:15:33.253 に答える
13

ワークフローの進め方によって異なりますが、私は通常、diffを他のファイルに配置doするのではなく、ファイルにdiffを取得するために使用しますdp。そうすれば、通常どおり+uを使用できます。ctrlr

差分ナビゲーションコマンドはどちらのファイルでも同じように機能するので、これで問題ありません。

次の差分:]c

前の差分:[c

于 2011-11-24T00:25:11.897 に答える
1

vimdiffファイルを比較するときは、またはを使用するのが好きvim -dです。で変更をコピーする方法vimdiffは次のとおりです。

]c               - advance to the next block with differences
[c               - reverse search for the previous block with differences
do (diff obtain) - bring changes from the other file to the current file
dp (diff put)    - send changes from the current file to the other file

これは次のように機能します。

:diffget the same with do
:diffput the same with dp
于 2016-10-19T07:02:15.143 に答える