[Vim問題] ファイル間の差分をマージする方法は?

この記事は約3分で読めます。

この記事では、Vimでプラグインを使わずに「ファイル間の差分をマージする」ためのコマンドやキー操作について、ご紹介します。

[解答] diff 機能でマージする

こちらの前提として、次の記事をご覧ください。

[Vim問題] Vimでファイル間の差分を表示する方法は?
Vimでプラグインを使わずに「ファイル間の差分を表示する」ためのコマンドとは...

複数のファイルを diff 機能で比較している状態にした上で、以降のキー操作やコマンドを実行していく必要があります。

Vimコマンド1. :diffget

(ノーマルモード)
:diffget
または
:diffg

diff機能で表示している現在のバッファについて、カーソルのある個所をもう一方のバッファから差分をマージ(上書き)します。

:diffgetで差分をマージ
:diffgetで差分をマージ

上のアニメーションを見てわかる通り、連続した行だと一括でマージできます。

diff で今のバッファに get (取得)すると覚えるとよいでしょう。

Vimキーバインド1. do

(ノーマルモード)
do
doで差分をマージ
doで差分をマージ

先の :diffget と同じ機能を実現するキーバインドです。

“diff obtain” の略だそうです。get ではなく obtain (得る)ですね。 dg ではない点には要注意です。

Vimコマンド2. :diffput

(ノーマルモード)
:diffput
または
:diffpu

diff機能で表示している現在のバッファから、 カーソルのある個所をもう一方のバッファへ差分を全てマージ(上書き)します。

:diffputで差分をマージ
:diffputで差分をマージ

上のアニメーションを見てわかる通り、連続した行だと一括でマージできます。

Vimキーバインド2. dp

(ノーマルモード)
dp
dpで差分をマージ
dpで差分をマージ

先の :diffput と同じ機能を実現するキーバインドです。

“diff put” の略で、こちらは先の :diffput と共通なので覚えやすいですよね。

これらは、次の差分箇所を移動するキー操作と合わせて使うことで、より便利に使うことができます。

キー操作移動
[c前(上)の差分箇所へ移動する
]c次(下)の差分箇所へ移動する

必ず一緒に覚えてしまいましょう。

応用:パッチファイルをマージする

次のコマンドでパッチファイルを、現在のバッファにマージすることができます。

(ノーマルモード)
:diffpatch パッチファイルのファイルパス
または
:diffp パッチファイルのファイルパス

この機能はあまり利用機会が多くはないと思いますが、このような便利な機能があるのも Vim の魅力ですね。

このVimコマンドの補足情報

  • 利用頻度3.0
  • 便利さ4.0
  • 覚え易さ3.0

関連するVimヘルプ

Vimからは、下記のコマンドでヘルプを確認できます。

:help :diffpu
:help :diffput
:help do
:help :diffgu
:help :diffput
:help dp

ヘルプで検索するときは、通常は大文字小文字は識別されませんので、どちらでも構いません。

Vim力を上げてくれる参考書籍

こちらの書籍を読めば、Vim力を上げること間違いありません。


Vim/neovim関連の書籍で、もっとも評判が良くてバイブルと呼んでる人もいる一冊です。Vim/neovimのバージョンに依存しない沢山のTips形式で、その表題通りに「思考のスピードで編集」できるようになるノウハウが詰まっています。その高い評価は Amazon のレビューからも分かる通りです。Vimmer なら必ず一度は読んでおいて間違いありません。


こちらもVim関連の書籍で評価が高い書籍の一冊です。vim-jpで見かける上級Vimmer(Vimサポーターズ)の皆様による、Vimを実践で使ったノウハウからプラグイン関連の情報が詰まっています。日本の Vim界隈を知る上でも是非一読しておきたい一冊です。

Vim/neovim の設定ファイルやプラグインなど、Vim script に関するノウハウがいくつも詰まった一冊です。日本で Vim Script をここまで深く解説している唯一の書籍と言えます。Vim力を伸ばしたいと考えるなら、絶対に避けては通れない書籍でしょう。

タイトルとURLをコピーしました