[from now] 2013/12/01 23:33:32

diff --git a/vim/.vimrc b/vim/.vimrc
index 330231d..20cab3b 100755
--- a/vim/.vimrc
+++ b/vim/.vimrc
@@ -202,7 +202,8 @@ endif

 "{{{ ========== VimScripts ============================================================
 " Restore last cursor position when open a file"{{{
-au MyAutoCmd BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g`\"" | endif"}}}
+au MyAutoCmd BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g`\"" | endif
+"}}}

 " highlight Zenkaku space"{{{
 function! ZenkakuSpace()
@@ -212,10 +213,12 @@ endfunction

 if has('syntax')
   autocmd MyAutoCmd VimEnter,BufEnter * call ZenkakuSpace()
-endif"}}}
+endif
+"}}}

 " autochdir"{{{
-au MyAutoCmd BufEnter * execute ":silent! lcd " . escape(expand("%:p:h"), ' ')"}}}
+au MyAutoCmd BufEnter * execute ":silent! lcd " . escape(expand("%:p:h"), ' ')
+"}}}

 " ctags
 " set tags+=tags;
@@ -233,6 +236,14 @@ function! s:mkdir(dir)"{{{
         call mkdir(a:dir, "p")
     endif
 endfunction"}}}
+
+function! s:Str2byte(str)"{{{
+  return map(range(len(a:str)), 'char2nr(a:str[v:val])')
+endfunction"}}}
+
+function! s:Byte2hex(bytes)"{{{
+  return join(map(copy(a:bytes), 'printf("%02X", v:val)'), '')
+endfunction"}}}
 "===================================================================================}}}

 "{{{ ========== System ================================================================
@@ -240,260 +251,90 @@ endfunction"}}}
 let $MY_BACKUP_DIR = $MY_VIMRUNTIME . '/back'
 call s:mkdir($MY_BACKUP_DIR)

-" undo
 if version >= 703
     set undofile
     set undodir=$MY_BACKUP_DIR
 endif
-" encoding
-set encoding=utf-8
-" クリップボードをデフォルトのレジスタとして指定。後にYankRingを使うので
-" 'unnamedplus'が存在しているかどうかで設定を分ける必要がある
-  set clipboard& clipboard+=unnamedplus
-" 新しく開く代わりにすでに開いてあるバッファを開く
+set encoding=utf-8 " encoding
+set clipboard+=unnamed
 set switchbuf=useopen
-"8進数を無効にする。<C-a>,<C-x>に影響する
-set nrformats-=octal
-"キーコードやマッピングされたキー列が完了するのを待つ時間(ミリ秒)
+set nrformats-=octal " disable octal
 set timeoutlen=3500
-"編集結果非保存のバッファから、新しいバッファを開くときに警告を出さない
 set hidden
-"ヒストリの保存数
 set history=100000
-"日本語の行の連結時には空白を入力しない
 set formatoptions+=mM
-" 改行時にコメントしない
-autocmd MyAutoCmd FileType *
-      \ setl formatoptions-=ro | setl formatoptions+=mM
 set textwidth=0
-"Visual blockモードでフリーカーソルを有効にする
 set virtualedit=block
-"カーソルキーで行末／行頭の移動可能に設定
 set whichwrap=b,s,[,],<,>
-"バックスペースでインデントや改行を削除できるようにする
 set backspace=indent,eol,start
-"□や○の文字があってもカーソル位置がずれないようにする
 set ambiwidth=double
-"コマンドライン補完するときに強化されたものを使う
 set wildmenu
 set wildmode=list,full
-"マウスを有効にする
 if has('mouse')
-  set mouse=a
+    set mouse=a
 endif
-"自動で読み込み直す
 set autoread
-" Check timestamp more for 'autoread'.
-autocmd MyAutoCmd WinEnter * checktime
+au MyAutoCmd WinEnter * checktime
 "===================================================================================}}}

 "{{{ ========== Search ================================================================
-"検索の時に大文字小文字を区別しない
-"ただし大文字小文字の両方が含まれている場合は大文字小文字を区別する
 set ignorecase
 set smartcase
-"検索時にファイルの最後まで行ったら最初に戻る
 set wrapscan
-"インクリメンタルサーチ
 set incsearch
-" Ignore case on insert completion.
-set infercase
-"検索文字の強調表示
+set infercase " Ignore case on insert completion.
 set hlsearch
-"highlight消去
-"nnoremap <ESC><ESC> :<C-u>noh<CR>
-"<C-p> <C-n>でそれぞれ過去の検索から補完
 cnoremap <C-p> <Up>
 cnoremap <C-n> <Down>
-"w,bの移動で認識する文字
-"vimgrep をデフォルトのgrepとする場合internal
 set grepprg=grep\ -nH
-"vimgrepで自動でcw
 " https://sites.google.com/site/hymd3a/vim/vimgrep
-autocmd MyAutoCmd QuickfixCmdPost make,grep,vimgrep if len(getqflist()) != 0 | copen | endif
+au MyAutoCmd QuickfixCmdPost make,grep,vimgrep if len(getqflist()) != 0 | copen | endif
 "===================================================================================}}}

 "{{{ ========== Appearance ============================================================
-"スプラッシュ(起動時のメッセージ)を表示しない
-"set shortmess+=I
-"エラー時の音とビジュアルベルの抑制(gvimは.gvimrcで設定)
+" no sound
 set noerrorbells
 set novisualbell
 set visualbell t_vb=
-"マクロ実行中などの画面再描画を行わない
-"set lazyredraw
-"Windowsでディレクトリパスの区切り文字表示に / を使えるようにする
-"set noshellslash
 set shellslash
-"行番号表示
 set number
-if version >= 703
-  "相対行番号表示(7.3)
-  "set relativenumber
-endif
-"括弧の対応表示時間
 set showmatch matchtime=3
-"タブ幅を設定する
 set tabstop=4
 set shiftwidth=4
 set softtabstop=0
 set expandtab
-"タブ文字、行末など不可視文字を表示する
 set list
-"listで表示される文字のフォーマットを指定する
-"set listchars=tab:\ \ ,eol:\ ,trail:-
 if s:is_windows
   set listchars=tab:>_,trail:-,extends:>,precedes:<
 else
   set listchars=tab:»-,trail:-,extends:»,precedes:«,nbsp:%
 endif
-"バックアップファイルディレクトリ指定
 set backupdir=$MY_BACKUP_DIR
-"スワップファイルディレクトリ指定
 set directory=$MY_BACKUP_DIR
-"自動的にインデントする
 set autoindent
-"Cインデントの設定
 set cinoptions+=:0
-"タイトルを表示
 set title
-"コマンドラインの高さ (gvimはgvimrcで指定)
 set cmdheight=2
 set laststatus=2
-"コマンドをステータス行に表示
 set showcmd
-"画面最後の行をできる限り表示する
 set display=lastline
-"折り畳みをマークで可能にする
 set foldmethod=marker
-" ハイライトを有効にする
+set t_Co=256
 if &t_Co > 2 || has('gui_running')
   syntax on
 endif
-"検索結果を見やすく
 highlight Search ctermbg=1

-"色テーマ設定
-"256色表示設定
-set t_Co=256
-"gvimの色テーマは.gvimrcで指定する
+" color
 set background=dark
 colorscheme hybrid
-let g:molokai_original = 1
-let g:rehash256 = 1
-let g:solarized_termcolors = 256
-" 輝度を高くする
-let g:solarized_visibility = "high"
-" コントラストを高くする
-let g:solarized_contrast = "high"
-"===================================================================================}}}
-
-"{{{ ========== StatusLine ============================================================
-"ステータスラインに文字コード等表示
-"iconvが使用可能の場合、カーソル上の文字コードをエンコードに応じた表示にするFencB()を使用
-""""""""""""""""""""""""""""""
-if has('iconv')
-  set statusline=%<     " 行が長すぎるときに切り詰める位置
-  set statusline+=[%n]  " バッファ番号
-  set statusline+=%m    " %m 修正フラグ
-  set statusline+=%r    " %r 読み込み専用フラグ
-  set statusline+=%h    " %h ヘルプバッファフラグ
-  set statusline+=%w    " %w プレビューウィンドウフラグ
-  set statusline+=%{'['.(&fenc!=''?&fenc:&enc).':'.&ff.']'}  " fencとffを表示
-  set statusline+=%y    " バッファ内のファイルのタイプ
-  set statusline+=\     " 空白スペース
-  if winwidth(0) >= 130
-    set statusline+=%F    " バッファ内のファイルのフルパス
-  else
-    set statusline+=%t    " ファイル名のみ
-  endif
-  set statusline+=%=    " 左寄せ項目と右寄せ項目の区切り
-  set statusline+=%{fugitive#statusline()}  " Gitのブランチ名を表示
-  set statusline+=\ \   " 空白スペース2個
-  set statusline+=[0x%{FencB()}]  "文字コード表示"
-  set statusline+=%1l   " 何行目にカーソルがあるか
-  set statusline+=/
-  set statusline+=%L    " バッファ内の総行数
-  set statusline+=,
-  set statusline+=%c    " 何列目にカーソルがあるか
-  set statusline+=%V    " 画面上の何列目にカーソルがあるか
-  set statusline+=\ \   " 空白スペース2個
-  set statusline+=%P    " ファイル内の何％の位置にあるか
-else
-  set statusline=%<     " 行が長すぎるときに切り詰める位置
-  set statusline+=[%n]  " バッファ番号
-  set statusline+=%m    " %m 修正フラグ
-  set statusline+=%r    " %r 読み込み専用フラグ
-  set statusline+=%h    " %h ヘルプバッファフラグ
-  set statusline+=%w    " %w プレビューウィンドウフラグ
-  set statusline+=%{'['.(&fenc!=''?&fenc:&enc).':'.&ff.']'}  " fencとffを表示
-  set statusline+=%y    " バッファ内のファイルのタイプ
-  set statusline+=\     " 空白スペース
-  if winwidth(0) >= 130
-    set statusline+=%F    " バッファ内のファイルのフルパス
-  else
-    set statusline+=%t    " ファイル名のみ
-  endif
-  set statusline+=%=    " 左寄せ項目と右寄せ項目の区切り
-  set statusline+=%{fugitive#statusline()}  " Gitのブランチ名を表示
-  set statusline+=\ \   " 空白スペース2個
-  set statusline+=%1l   " 何行目にカーソルがあるか
-  set statusline+=/
-  set statusline+=%L    " バッファ内の総行数
-  set statusline+=,
-  set statusline+=%c    " 何列目にカーソルがあるか
-  set statusline+=%V    " 画面上の何列目にカーソルがあるか
-  set statusline+=\ \   " 空白スペース2個
-  set statusline+=%P    " ファイル内の何％の位置にあるか
-endif
-
-"FencB() : カーソル上の文字コードをエンコードに応じた表示にする
-function! FencB()
-  let c = matchstr(getline('.'), '.', col('.') - 1)
-  let c = iconv(c, &enc, &fenc)
-  return s:Byte2hex(s:Str2byte(c))
-endfunction
-
-function! s:Str2byte(str)
-  return map(range(len(a:str)), 'char2nr(a:str[v:val])')
-endfunction
-
-function! s:Byte2hex(bytes)
-  return join(map(copy(a:bytes), 'printf("%02X", v:val)'), '')
-endfunction
 "===================================================================================}}}

 "{{{ ========== diff/patch ============================================================
-"diffの設定
-if s:is_windows
-  set diffexpr=MyDiff()
-  function! MyDiff()
-    let opt = '-a --binary '
-    if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif
-    if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif
-    let arg1 = v:fname_in
-    if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif
-    let arg2 = v:fname_new
-    if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif
-    let arg3 = v:fname_out
-    if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif
-    let eq = ''
-    if $VIMRUNTIME =~ ' '
-      if &sh =~ '\<cmd'
-        let cmd = '""' . $VIMRUNTIME . '\diff"'
-        let eq = '"'
-      else
-        let cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '\diff"'
-      endif
-    else
-      let cmd = $VIMRUNTIME . '\diff'
-    endif
-    silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3 . eq
-  endfunction
-endif
-
-"現バッファの差分表示(変更箇所の表示)
+" diff original"{{{
 command! DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis | wincmd p | diffthis
+"}}}
+
 "ファイルまたはバッファ番号を指定して差分表示。#なら裏バッファと比較
 command! -nargs=? -complete=file Diff if '<args>'=='' |
       \ browse vertical diffsplit|else| vertical diffsplit <args>|endif