この記事では、Vimでプラグインを使わずに「ファイル間の差分を表示する」ためのコマンドについて、ご紹介します。
[解答] diff 機能を活用する
外部コマンドを使用する必要はありません。標準機能で十分実現することができます。
コマンド vimdiff
(コマンドプロンプト/シェル) vimdiff ファイルパス1 ファイルパス2 (ファイルパス3 ファイルパス4) gvimdiff ファイルパス1 ファイルパス2 (ファイルパス3 ファイルパス4)
コマンドプロンプトまたはシェルから直接ファイルを開いて、最大4つまでファイルを比較することができます。


Linuxなどでは diff コマンドが有名ですが、vimのキー操作で扱え、よりグラフィカルなのが魅力ですね。
colorscheme などの配色によりますが、差分箇所の行には明示的には表示されます。とても分かりやすく使えます。
ちなみに、次のコマンドでも同じ動作をします。
(コマンドプロンプト/シェル) vim -d ファイルパス1 ファイルパス2 (ファイルパス3 ファイルパス4) gvim -d ファイルパス1 ファイルパス2 (ファイルパス3 ファイルパス4) neovim -d ファイルパス1 ファイルパス2 (ファイルパス3 ファイルパス4)
neovim-qt.exe には -d オプションは実装されていないようです。
また次のように -o オプションを指定することで、水平分割することも可能です。
(コマンドプロンプト/シェル) vim -o ファイルパス1 ファイルパス2 (ファイルパス3 ファイルパス4) gvim -o ファイルパス1 ファイルパス2 (ファイルパス3 ファイルパス4) neovim -o ファイルパス1 ファイルパス2 (ファイルパス3 ファイルパス4)

Vimコマンド1. diffsplit でファイル間の差分を比較する
(ノーマルモード) :diffsplit 比較対象ファイルパス または :diffs 比較対象ファイルパス
このコマンドを使うと、今開いているファイル(バッファ)と指定したファイルを比較することができます。

ただ、ファイルの比較というと、先に紹介したように垂直分割した状態で比較する方が視認しやすいと思います。これは次のように実行すると、上手くファイルの比較ができます。
(ノーマルモード) :vertical diffsplit 比較対象ファイルパス または :vertical diffs 比較対象ファイルパス または :vert diffs 比較対象ファイルパス

Kaoriya版Vimでは、次のコマンドが実装されています。このコマンドによって、より短いコマンドで実行できます。
(ノーマルモード) :VDsplit 比較対象ファイルパス
なお、差分箇所を移動するには次のキー操作を使うことができます。
キー操作 | 移動 |
[c | 前(上)の差分箇所へ移動する |
]c | 次(下)の差分箇所へ移動する |
また次のようにすると、diffモードを終了できます。
:diffoff
このVimコマンドの補足情報
- 利用頻度[star rate=3]
- 便利さ[star rate=4]
- 覚え易さ[star rate=3]
関連するVimヘルプ
Vimからは、下記のコマンドでヘルプを確認できます。
:help diff :help vimdiff :help gvimdiff :help diff-mode
ヘルプで検索するときは、通常は大文字小文字は識別されませんので、どちらでも構いません。
Vim力を上げる参考書籍
Vim力を上げるにはこれらの書籍が欠かせませんね。
[temp id=3]