neovim + diffchar.vim에서 git 충돌 제거시 단어의 차이도 볼 수있게합니다.

개요



git의 병합 툴을 neovim으로 하고 있었지만, 디폴트인 채로는 단어마다의 차이가 표시되지 않기 때문에, csv등의 병합시에 컨플릭트한 부분을 일부러 다른 diff 툴을 사용해 차이를 확인하는 등의 번거로운 작업이 발생했습니다.



이것이 불편했기 때문에, diffchar.vim (을)를 사용해, 단어 마다의 차분을 내도록(듯이) 했다.

환경



오 S



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 [email protected]

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 버전 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
[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 모드에 넣지 않고 표시 할 수 있습니다.

결과



단어별 차이가 표시됩니다!


참고


  • Mac에서 충돌시 단어 차이도 내는 병합 도구 "DiffMerge"
  • Git의 difftool 및 mergetool 명령이 Neovim을 사용하도록 설정해 보았습니다.

  • 2018/9/9 추가



    여기 에서 @rickhowe 님에게
    cmd = nvim -d \"$LOCAL\" \"$REMOTE\" \"$MERGED\" -c '2 wincmd l | wincmd J | wincmd k'
    

    그렇다면, $MERGED 의 페인도 diff 모드로 비교되어 버리므로, 좋지 않다고 하는 것으로 개량안을 받았으므로 그쪽의 커멘드로 변경했습니다.
    감사합니다.

    좋은 웹페이지 즐겨찾기