.vimrc

藤岡さんとの話でzshとscreenの設定ってな話が出たので自分設定を晒します。色んなところからかき集めた設定です。最初、vimの:TOhtmlで出したけど見づらかったのでsyntaxhighlightはなしで。というわけで、まずは.vimrcから(おい)

source $VIMRUNTIME/macros/matchit.vim
set enc=utf-8
set fenc=utf-8
set fencs=utf-8,iso-2022-jp,euc-jp,cp932
set hlsearch
set incsearch
set number
set expandtab
set tabstop=2
set shiftwidth=2
set showcmd
set showmatch
set laststatus=2
set autowriteall
filetype on
filetype indent on
filetype plugin on
syntax on
colorscheme darkblue

"文字コードの自動認識"
if &encoding !=# 'utf-8'
  set encoding=japan
  set fileencoding=japan
endif
if has('iconv')
  let s:enc_euc = 'euc-jp'
  let s:enc_jis = 'iso-2022-jp'
  " iconvがeucJP-msに対応しているかをチェック
  if iconv("\x87\x64\x87\x6a", 'cp932', 'eucjp-ms') ==# "\xad\xc5\xad\xcb"
    let s:enc_euc = 'eucjp-ms'
    let s:enc_jis = 'iso-2022-jp-3'
  " iconvがJISX0213に対応しているかをチェック
  elseif iconv("\x87\x64\x87\x6a", 'cp932', 'euc-jisx0213') ==# "\xad\xc5\xad\xcb"
    let s:enc_euc = 'euc-jisx0213'
    let s:enc_jis = 'iso-2022-jp-3'
  endif
  " fileencodingsを構築
  if &encoding ==# 'utf-8'
    let s:fileencodings_default = &fileencodings
    let &fileencodings = s:enc_jis .','. s:enc_euc .',cp932'
    let &fileencodings = &fileencodings .','. s:fileencodings_default
    unlet s:fileencodings_default
  else
    let &fileencodings = &fileencodings .','. s:enc_jis
    set fileencodings+=utf-8,ucs-2le,ucs-2
    if &encoding =~# '^\(euc-jp\|euc-jisx0213\|eucjp-ms\)$'
      set fileencodings+=cp932
      set fileencodings-=euc-jp
      set fileencodings-=euc-jisx0213
      set fileencodings-=eucjp-ms
      let &encoding = s:enc_euc
      let &fileencoding = s:enc_euc
    else
      let &fileencodings = &fileencodings .','. s:enc_euc
    endif
  endif
  " 定数を処分
  unlet s:enc_euc
  unlet s:enc_jis
endif

"changelogスタンプフォーマット
let g:changelog_username = "user_name"

"ステータスライン
set statusline=%<%f\ %m%r%h%w%{'['.(&fenc!=''?&fenc:&enc).']['.&ff.']'}%=%l,%c%V%8P
set tags=tags

"自動保存
function! AutoUp()
  if expand('%') =~ g:svbfre && !&readonly && &buftype == ''
    silent update
  endif
endfunction

autocmd CursorHold * call AutoUp()
set updatetime=500
let g:svbfre = '.\+'

"MRU_Settings
let MRU_Max_Entries=20

" Lusty Explorer
nmap <SPACE> :BufferExplorer<CR>
nmap <unique> <silent> ef :FilesystemExplorer<CR>

" Allargs.vim
" ex)
" :Allargs %s/foo/bar/ge|update
" 使う時。foo を bar に置換しまくる。
" :Allargs %s/foo/bar/ge|update
" eオプションをつけないと foo
"が無いというメッセージがのんびり表示されて、いつま
" でたっても置換が終わらないので気をつけよう(それに気づかずに密かにハマった)
" コマンドは | で連続で実行できて、update
"は変更のあったバッファだけを保存。と。
" カレントの *.cpp を置換する場合は予め、
" :ar *.cpp
" ってやっとくと全部読み込まれる。
" 確認するには
" :ar
function! Allargs(command)
  let i = 0
  while i < argc()
    if filereadable(argv(i))
      execute "e " . argv(i)
      execute a:command
    endif
    let i = i + 1
  endwhile
endfunction
command! -nargs=+ -complete=command Allargs call Allargs(<q-args>)

"------------------------------------------------------------------------
" rails
 au BufNewFile,BufRead *.svg	set ft=xml fenc=utf-8
 au BufNewFile,BufRead *.rxml	set ft=ruby fenc=utf-8

"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

"括弧の自動補完
"inoremap { {}<LEFT>
"inoremap [ []<LEFT>
"inoremap ( ()<LEFT>
"inoremap " ""<LEFT>
"inoremap ' ''<LEFT>
"vnoremap { "zdi^V{<C-R>z}<ESC>
"vnoremap [ "zdi^V[<C-R>z]<ESC>
"vnoremap ( "zdi^V(<C-R>z)<ESC>
"vnoremap " "zdi^V"<C-R>z^V"<ESC>
"vnoremap ' "zdi'<C-R>z'<ESC>

"OpenURL
command -bar -nargs=1 OpenURL :!open <args>

あまり特殊な事はしてないかと。自動保存は便利です。しくじった状態も保存されるんじゃと心配になるかもしれませんが、その場合はどんどんundoしてけばいいですし、いざとなったらsvnで戻せばいいだけです。一番最後、OpenURLのコメント以下は、Rails.vimで:Rpreviewする時に使います。勉強会でvimからFireFox開いてたのはこれです。あと、括弧の自動補完はなんかRails.vimと相性悪かったのでコメントしてます。後で調べようと思って積ん読になってたり。眠いので、.screenrcと.zshrcはまた明日。
追記しました。コメントアウトしてるところですが、制御文字の^Vがまんまコピって化けちゃってました。インサートモードでCtrl+vを2回押して入力してください。