Vimdiffで差分セクションを展開/折りたたむ方法は?


295

私は今日vimdiffを使い始めて、Windowsベースのdiffエディターで当たり前にしてきたことのいくつかを実行したいと思っています(diffセクションを展開/折りたたむ、ファイルを完全に展開する/上に3つのコンテキスト行がある差分のみ、または以下など)。私は現在、次のコマンドだけを知っています:

キーボードショートカット:

  • do -他のウィンドウから現在のウィンドウへの変更を取得します。

  • dp -現在のウ​​ィンドウから他のウィンドウに変更を入れます。

  • ]c -次の変更にジャンプします。

  • [c -前の変更にジャンプします。

  • CTRL+ Ww-別の分割ウィンドウに切り替えます(少し後でキーを離した場合に備えて、CTRL+ WCTRL+ Wも同じことを行いCTRLます)。

同様の機能を複製できるように、誰かが私を正しい方向に向けることができますか?

たとえば、diffの周りの行を展開/折りたたみできると便利です。


2
変更の長いリストを追加/元に戻すショートカットについては、stackoverflow.com
q / 6093746/212942


1
「vimdiff」をググると、質問が4年以上後に閉じられ、トップ3の投稿になるので面白いです。
TCSGrad 2015年

回答:


241

あなたが言及したものを除いて、私は以下を比較するときにのみ頻繁に使用します:

  • :diffupdate :diffu->差分を再計算します。いくつかの変更を行った後、vimが最小限の変更を示さなくなった場合に役立ちます。vimdiff内でファイルが変更されている場合にのみ機能することに注意してください。それ以外の場合は、次を使用します。
    • :e vimdiffの外でファイルが変更されている場合は、ファイルをリロードします。
  • :set noscrollbind->両方のバッファの同時スクロールを一時的に無効にし、で再度有効にしてスクロールします:set scrollbind

あなたが要求したことのほとんどは折りたたみです:vimユーザーマニュアルの折りたたみに関する章。差分の外で私は時々使用します:

  • zo ->折りたたみを開きます。
  • zc ->折りたたみを閉じます。

しかし、あなたはおそらく次のことでより良く役立つでしょう:

  • zr ->折りたたみレベルを下げます。
  • zm ->折りたたみレベルをもう1つください。

あるいは:

  • zR ->折りたたみを完全に減らす、と私は言いました!。
  • zM ->ほとんどを折る!。

あなたが要求した他のことは、n行の折りたたみを使用してdiffセクションを介して、オプションのvimリファレンスマニュアルのセクションにあります

  • set diffopt=<TAB>、次に更新または追加しcontext:nます。

また、diffのユーザーマニュアルセクションも参照してください


確かに非常に包括的な!私はあなたが言ったリンクをチェックしますが、私がより多くの返信を得るかどうか確認するために質問を数日開いたままにします(週末に投稿したので、多くの人がアクティブではありませんでした)。
TCSGrad 2011年

ちなみに、vimdiffをマージ/ 3方向の解決などに使用できるかどうかをご存知ですか?それは本当に素晴らしいでしょう!!
TCSGrad 2011年

1
@ shan23(gitのための)3ウェイマージするため、チェックこれを行います。svnにもコメントがあります。ただし、4つのバッファがある場合でもコマンドを理解しようとします(do / dpは機能しません)。
クォーニア語2012年

以下のために:set noscrollbind有効にすることもしなければならない:set nocursorbindデフォルトではありませんが使用します。したがって、両方のオプションを調整する必要があります。
流血の

4

大文字小文字を無視するようにvimdiffを設定する

vim diffを開始した

 gvim -d main.sql backup.sql &

不愉快なことに、1つのファイルにMySQLキーワードが小文字であり、他の大文字が事実上1行おきに違いを示していることがわかります。

:set diffopt+=icase

これにより画面が動的に更新され、簡単にオフに切り替えることができます


これは良いヒントですが、これが現在の質問(vimdiffでdiffセクションを展開および縮小する方法)にどのように関連しているかはわかりません。
Paul Stelian


0

前述のctrl + w、wは、ペイン間を移動するために使用できます。

これで、特定の変更を単独で選択して、次のように他のペインに貼り付けることができます。ここで、たとえば、コードの一部をペイン1からペイン2に変更し、カーソルがペイン1にあるかのように、

  • Shift-vを使用して行を強調表示し、上または下のキーを使用して必要なコードを選択し、以下のステップ3から続行して、変更を他のペインに貼り付けます。

  • ビジュアルモードを使用して変更する

    1「v」をクリックすると、ビジュアルモードに移動します。2上または下のキーを使用して、必要なコードを選択します。3「Esc」のエスケープキーをクリックします。 ctrl + w、w 'でペイン2に移動します6「p」をクリックして変更を必要な場所に貼り付けます


1
指定したもの全体(最初の行を除く)はvim自体の機能であり、言うまでもなくvimdiffではありません。
TCSGrad 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.