この記事では、Vimでプラグインを使わずに「ファイル間の差分をマージする」ためのコマンドやキー操作について、ご紹介します。
[解答] diff 機能でマージする
こちらの前提として、次の記事をご覧ください。
複数のファイルを diff 機能で比較している状態にした上で、以降のキー操作やコマンドを実行していく必要があります。
Vimコマンド1. :diffget
(ノーマルモード) :diffget または :diffg
diff機能で表示している現在のバッファについて、カーソルのある個所をもう一方のバッファから差分をマージ(上書き)します。
上のアニメーションを見てわかる通り、連続した行だと一括でマージできます。
diff で今のバッファに get (取得)すると覚えるとよいでしょう。
Vimキーバインド1. do
(ノーマルモード)
do
先の :diffget と同じ機能を実現するキーバインドです。
“diff obtain” の略だそうです。get ではなく obtain (得る)ですね。 dg ではない点には要注意です。
Vimコマンド2. :diffput
(ノーマルモード) :diffput または :diffpu
diff機能で表示している現在のバッファから、 カーソルのある個所をもう一方のバッファへ差分を全てマージ(上書き)します。
上のアニメーションを見てわかる通り、連続した行だと一括でマージできます。
Vimキーバインド2. dp
(ノーマルモード)
dp
先の :diffput と同じ機能を実現するキーバインドです。
“diff put” の略で、こちらは先の :diffput と共通なので覚えやすいですよね。
これらは、次の差分箇所を移動するキー操作と合わせて使うことで、より便利に使うことができます。
キー操作 | 移動 |
[c | 前(上)の差分箇所へ移動する |
]c | 次(下)の差分箇所へ移動する |
必ず一緒に覚えてしまいましょう。
応用:パッチファイルをマージする
次のコマンドでパッチファイルを、現在のバッファにマージすることができます。
(ノーマルモード) :diffpatch パッチファイルのファイルパス または :diffp パッチファイルのファイルパス
この機能はあまり利用機会が多くはないと思いますが、このような便利な機能があるのも Vim の魅力ですね。
このVimコマンドの補足情報
- 利用頻度
- 便利さ
- 覚え易さ
関連する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力を伸ばしたいと考えるなら、絶対に避けては通れない書籍でしょう。