Vim のブログ

テキストエディター Vim の魅力、使い方のコツを初心者にも分かりやすく伝えていきたいと思います。

Vim のカスタマイズ 〜autocmd で自動処理の実例〜

autocmd による自動処理 の便利な実例を幾つか紹介したいと思います。利用したいスクリプトを.vimrc に書き加えてください。

ファイルを開いた時に、前回のセッション終了時のカーソル位置を復元する

function! s:RestoreCursorPostion()
  if line("'\"") <= line("$")
    normal! g`"
    return 1
  endif
endfunction
" ファイルを開いた時に、以前のカーソル位置を復元する
augroup vimrc_restore_cursor_position
  autocmd!
  autocmd BufWinEnter * call s:RestoreCursorPostion()
augroup END

複数ウィンドウを開いているときにアクティブなウィンドウに限りカーソル行を強調する

" アクティブウィンドウに限りカーソル行(列)を強調する
augroup vimrc_set_cursorline_only_active_window
  autocmd!
  autocmd VimEnter,BufWinEnter,WinEnter * setlocal cursorline
  autocmd WinLeave * setlocal nocursorline
augroup END

インサートモードに入った時にカーソル行の色を変更する

色は、vim-powerline というプラグインのステータスバーの色に合わせています。お好みの色に合わせて ctermbg と guibg の値をカスタマイズしてください。

" インサートモードに入った時にカーソル行(列)の色を変更する
augroup vimrc_change_cursorline_color
  autocmd!
  " インサートモードに入った時にカーソル行の色をブルーグリーンにする
  autocmd InsertEnter * highlight CursorLine ctermbg=24 guibg=#005f87 | highlight CursorColumn ctermbg=24 guibg=#005f87
  " インサートモードを抜けた時にカーソル行の色を黒に近いダークグレーにする
  autocmd InsertLeave * highlight CursorLine ctermbg=236 guibg=#303030 | highlight CursorColumn ctermbg=236 guibg=#303030
augroup END

参考にしたページ