vimdiff の設定と使い方

これから仕事で vimdiff を使いそうなので情報収集。

cygwin だと vimdiff 単体では Setup.exe の検索には引っかからないけれど vim を入れると vimdiff もついてくる。

~/.vimrc 設定

set nocompatible

" 画面表示の設定

set number         " 行番号を表示する
set cursorline     " カーソル行の背景色を変える
"set cursorcolumn   " カーソル位置のカラムの背景色を変える
set laststatus=2   " ステータス行を常に表示
set cmdheight=2    " メッセージ表示欄を2行確保
set showmatch      " 対応する括弧を強調表示
set helpheight=999 " ヘルプを画面いっぱいに開く
"set list           " 不可視文字を表示
" 不可視文字の表示記号指定
"set listchars=tab:?\ ,eol:?,extends:?,precedes:?

" カーソル移動関連の設定

set backspace=indent,eol,start " Backspaceキーの影響範囲に制限を設けない
set whichwrap=b,s,h,l,<,>,[,]  " 行頭行末の左右移動で行をまたぐ
set scrolloff=8                " 上下8行の視界を確保
set sidescrolloff=16           " 左右スクロール時の視界を確保
set sidescroll=1               " 左右スクロールは一文字づつ行う

" ファイル処理関連の設定

set confirm    " 保存されていないファイルがあるときは終了前に保存確認
set hidden     " 保存されていないファイルがあるときでも別のファイルを開くことが出来る
set autoread   "外部でファイルに変更がされた場合は読みなおす
set nobackup   " ファイル保存時にバックアップファイルを作らない
set noswapfile " ファイル編集中にスワップファイルを作らない

" 検索/置換の設定

set hlsearch   " 検索文字列をハイライトする
set incsearch  " インクリメンタルサーチを行う
set ignorecase " 大文字と小文字を区別しない
set smartcase  " 大文字と小文字が混在した言葉で検索を行った場合に限り、大文字と小文字を区別する
set wrapscan   " 最後尾まで検索を終えたら次の検索で先頭に移る
set gdefault   " 置換の時 g オプションをデフォルトで有効にする

" タブ/インデントの設定

"set expandtab     " タブ入力を複数の空白入力に置き換える
set tabstop=4     " 画面上でタブ文字が占める幅
set shiftwidth=4  " 自動インデントでずれる幅
set softtabstop=4 " 連続した空白に対してタブキーやバックスペースキーでカーソルが動く幅
set autoindent    " 改行時に前の行のインデントを継続する
set smartindent   " 改行時に入力された行の末尾に合わせて次の行のインデントを増減する

" 動作環境との統合関連の設定

" OSのクリップボードをレジスタ指定無しで Yank, Put 出来るようにする
set clipboard=unnamed,unnamedplus
" マウスの入力を受け付ける
set mouse=a
" Windows でもパスの区切り文字を / にする
set shellslash
" インサートモードから抜けると自動的にIMEをオフにする
"set iminsert=2

" コマンドラインの設定

" コマンドラインモードでTABキーによるファイル名補完を有効にする
set wildmenu wildmode=list:longest,full " コマンドラインの履歴を10000件保存する
set history=10000

" ビープの設定

"ビープ音すべてを無効にする
set visualbell t_vb=
set noerrorbells "エラーメッセージの表示時にビープを鳴らさない


" vimdiffの色設定
highlight DiffAdd    cterm=bold ctermfg=10 ctermbg=22
highlight DiffDelete cterm=bold ctermfg=10 ctermbg=52
highlight DiffChange cterm=bold ctermfg=10 ctermbg=17
highlight DiffText   cterm=bold ctermfg=10 ctermbg=21

設定ネタ元

http://vimblog.hatenablog.com/entry/vimrc_set_recommended_options http://qiita.com/takaakikasai/items/b46a0b8c94e476e57e31

操作

vimdiff a.c b.c


[ c                 前の差分
] c                 次の差分

do                  他の窓の今の差分を、自分のほうへ取り込む(obtain)
dp                  自分の窓の今の差分を、他の窓へ押し込む(put)

ctrl+w w            窓を移動
ctrl+w ctrl+w       〃

ctrl+w h            左の窓のファイルへ移動
ctrl+w j            下の窓のファイルへ移動
ctrl+w k            上の窓のファイルへ移動
ctrl+w l            右の窓のファイルへ移動

ctrl+w H            ファイルの位置を左窓へ+横分割に変更
ctrl+w J            ファイルの位置を下窓へ+縦分割に変更
ctrl+w K            ファイルの位置を上窓へ+縦分割に変更
ctrl+w L            ファイルの位置を右窓へ+横分割に変更

ctrl+w [num] <      窓の仕切りを num 個左へ
ctrl+w [num] >      窓の仕切りを num 個右へ
ctrl+w [num] +      窓の仕切りを num 個上へ
ctrl+w [num] -      窓の仕切りを num 個下へ
ctrl+w =            窓の仕切りを戻す

:wqa                変更を全部ファイルに書き込んで修了
:qa!                変更を全部破棄して修了

操作ネタ元

https://ogatism.jp/vi_split_vimdiff/