.vimrcの設定

20061015 一部修正
20061106 色つけ
20061215 スーパーpre記法 シンタックス・ハイライト

" 日本語の設定
set encoding=utf-8
"set fenc=utf-8
"set fencs=ucs-bom,utf-8,iso-2022-jp,euc-jp,cp932
set fencs=ucs-bom,utf-8,iso-2022-jp,euc-jp,cp932

" 非互換モード
set nocompatible

" カラーテーマを変更
colorscheme mycolor

" シンタックスカラー表示を有効にする
syntax on

" 行番号を表示する
set number

" 入力したコマンドをステータスラインに表示
set showcmd

" 位置情報を表示
set ruler

" ステータスラインを表示
set laststatus=2
set statusline=%<%f\ %m%r%h%w%{'['.&fenc.']['.&ff.']'}%=%l,%c%V%8P

" ファイルタイプごとのプラグインを有効にする
filetype plugin on
filetype indent on

" 自動インデント
set smartindent

" 対応する括弧を強調表示
set showmatch

" 長い行を折り返さない
set nowrap

" バックスペースの挙動
set backspace=indent,eol,start

" タブが対応する空白の数
set tabstop=4
set shiftwidth=4
set softtabstop=0

" タブではなく適切な数の空白を使う
set expandtab

" インクリメンタルサーチ
set incsearch

" 前回開いた編集個所を表示する
au BufWritePost * mkview
autocmd BufReadPost * loadview

" 上下から、指定した行数に達したら自動スクロール
set scrolloff=5

" 強化されたコマンドライン補完を使用
set wildmenu

" バッファを保存しないで他のファイルを開けるようにする
set hidden

" コマンドモードで Emacs キーバインド
cmap <C-A> <Home>
cmap <C-F> <Right>
cmap <C-B> <Left>
cmap <C-D> <Delete>
cmap <Esc>b <S-Left>
cmap <Esc>f <S-Right>

" rubycomplete.vim
autocmd FileType ruby,eruby set omnifunc=rubycomplete#Complete
autocmd FileType ruby,eruby let g:rubycomplete_buffer_loading = 1
"autocmd FileType ruby,eruby let g:rubycomplete_rails = 1
autocmd FileType ruby,eruby let g:rubycomplete_classes_in_global = 1

" タブで、補完
imap <TAB> <C-X><C-O>

" ペースト時にオートインデントを無効に 
"set paste

autocmd BufNewFile *.h call IncludeGuard()
function! IncludeGuard()
  let gatename = substitute(toupper(expand("%:t")), "\\.", "_", "g")
  normal! gg
  execute "normal! i#ifndef " . gatename . "_INCLUDED"
  execute "normal! o#define " . gatename .  "_INCLUDED\<CR>\<CR>\<CR>\<CR>\<CR>"
  execute "normal! Go#endif   /* " . gatename . "_INCLUDED */"
  4
endfunction 

" vim -b : edit binary using xxd-format!
augroup Binary
  au!
  au BufReadPre  *.bin let &bin=1
  au BufReadPost *.bin if &bin | silent %!xxd -g 1
  au BufReadPost *.bin set ft=xxd | endif
  au BufWritePre *.bin if &bin | %!xxd -r
  au BufWritePre *.bin endif
  au BufWritePost *.bin if &bin | silent %!xxd -g 1
  au BufWritePost *.bin set nomod | endif
augroup END

" #!で始まるファイルを保存時に実行権限を付与する
autocmd BufWritePost * :call AddExecmod()
function AddExecmod()
  let line = getline(1)
  if strpart(line, 0, 2) == "#!"
    call system("chmod +x ". expand("%"))
  endif
endfunction