概要
gitのマージツールをneovimにしていたのだが、デフォルトのままだと単語ごとの差分が表示されないため、csvなどのマージの際にコンフリクトした箇所をわざわざ違うdiffツールを使って差分を確認するなどの面倒な作業が発生していた。
これが不便だったので、diffchar.vimを使って、単語ごとの差分を出すようにした。
環境
OS
macOS High Sierra 10.13.6
neovim
NVIM v0.2.2
Build type: Release
LuaJIT 2.0.5
Compilation: /usr/local/Homebrew/Library/Homebrew/shims/super/clang -Wconversion -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 -DNVIM_MSGPACK_HAS_FLOAT32 -DNVIM_UNIBI_HAS_VAR_FROM -DNDEBUG -DMIN_LOG_LEVEL=3 -Wall -Wextra -pedantic -Wno-unused-parameter -Wstrict-prototypes -std=gnu99 -Wimplicit-fallthrough -Wvla -fstack-protector-strong -fdiagnostics-color=auto -DINCLUDE_GENERATED_DECLARATIONS -I/tmp/neovim-20180209-92407-udkzoo/neovim-0.2.2/build/config -I/tmp/neovim-20180209-92407-udkzoo/neovim-0.2.2/src -I/usr/local/include -I/usr/local/include -I/usr/local/include -I/usr/local/include -I/usr/local/include -I/usr/local/include -I/usr/local/opt/gettext/include -I/usr/include -I/tmp/neovim-20180209-92407-udkzoo/neovim-0.2.2/build/src/nvim/auto -I/tmp/neovim-20180209-92407-udkzoo/neovim-0.2.2/build/include
Compiled by brew@HighSierra.local
Features: +acl +iconv +jemalloc +tui
See ":help feature-compile"
システム vimrc: "$VIM/sysinit.vim"
省略時の $VIM: "/usr/local/Cellar/neovim/0.2.2_1/share/nvim"
Run :checkhealth for more info
git
git version 2.17.0
導入手順
diffchar.vimをインストール
プラグインマネージャーを使うのが楽。
自分の場合はdeinを使用。
dein.toml
[[plugins]]
repo = 'rickhowe/diffchar.vim'
diffchar.vimの設定
ドキュメントを参考にdiff表示の設定。
自分は以下のように設定。
init.vim
let g:DiffUnit = 'Char' " any single character
let g:DiffColors = 3 " 16 colors in fixed order
gitconfigの設定
以下のコマンドでgitconfigを編集
git config --global --edit
.gitconfig
[merge]
tool = nvim
[mergetool "nvim"]
cmd = nvim -c '2wincmd w | diffthis | 3wincmd w | diffthis | 1wincmd w | wincmd J' -O $MERGED $LOCAL $REMOTE
$LOCAL
ペインと$REMOTE
ペインをdiffモードで比較し、$MERGED
ペインを下部に移動している。
まわりくどいように思えるが、こうすることで$MERGED
ペインをdiffモードに入れずに表示することができる。
結果
参考
2018/9/9追記
cmd = nvim -d \"$LOCAL\" \"$REMOTE\" \"$MERGED\" -c '2 wincmd l | wincmd J | wincmd k'
だと、$MERGED
のペインもdiffモードで比較されてしまうので、よくないとのことで改良案をいただいたのでそちらのコマンドに変更しました。
ありがとうございます。