現在の~/.vimrc

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"  ここから自分で追加したもの
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"set autoindent                   "新しい行のインデントを現在行と同じにする
set wildmode=list:longest        "vimのコマンドを補完
set nu                           "行番号表示
set showcmd                      "コマンドを表示
set hlsearch                     "検索文字をハイライト
"タブ可視化
set list
set listchars=tab:>>

"------------------------------------------------------------------------------------"
" 各種プログラムで構文チェク(:make)をCtr+c Ctr+cで行えるようにする
" 表示されたQuickFixはウィンドウを移動しなくても
" :cn および :cp で移動可能
"------------------------------------------------------------------------------------"
" Perl構文チェック
autocmd FileType perl compiler perl
autocmd FileType perl map <c-c><c-c> :make<cr> :cw<cr><cr>

" PHP構文チェック
au BufRead,BufNewFile *.php set makeprg=php\ -l\ %
au BufRead,BufNewFile *.php set errorformat=%m\ in\ %f\ on\ line\ %l
autocmd FileType php map <c-c><c-c> :make<cr> :cw<cr><cr>

" Ruby構文チェック
au BufRead,BufNewFile *.rb set makeprg=ruby\ -c\ %
au BufRead,BufNewFile *.rb set errorformat=%m\ in\ %f\ on\ line\ %l
autocmd FileType rb map <c-c><c-c> :make<cr> :cw<cr><cr>

" HTML構文チェック
autocmd FileType xhtml,html :compiler tidy
autocmd FileType xhtml,html :setlocal makeprg=tidy\ -raw\ -quiet\ -errors\ --gnu-emacs\ yes\ \"%\"
autocmd FileType xhtml,html map <c-c><c-c> :make<cr> :cw<cr><cr>

"------------------------------------------------------------------------------------"
"foldmethod(折りたたみの設定)
"------------------------------------------------------------------------------------"
set foldmethod=indent
set foldlevel=100 "Don't autofold anything

"------------------------------------------------------------------------------------"
" シンタックスハイライト
"------------------------------------------------------------------------------------"
syntax on
if has("gui_running")
  "colorscheme pyte
  "colorscheme newspaper
  colorscheme wombat
else
  "colorscheme xoria256
  colorscheme twilight256
endif

"php用
let php_sql_query=1
let php_htmlInStrings=1

"------------------------------------------------------------------------------------"
" 親をたどってtagsを探す
"------------------------------------------------------------------------------------"
set tags=tags;

"------------------------------------------------------------------------------------"
" omni補完
"------------------------------------------------------------------------------------"
autocmd FileType php set omnifunc=phpcomplete#CompletePHP
autocmd FileType javascript set omnifunc=javascriptcomplete#CompleteJS
autocmd FileType html set omnifunc=htmlcomplete#CompleteTags
autocmd FileType xhtml set omnifunc=htmlcomplete#CompleteTags
autocmd FileType css set omnifunc=csscomplete#CompleteCSS

"------------------------------------------------------------------------------------"
" キーバインド
"------------------------------------------------------------------------------------"
" omni補完 キーバインド変更
imap <C-f> <C-x><C-o>

" ヤンクで検索
map qqq@ /<C-r>"<CR>
" コマンド履歴
map qqq: q:
" 検索履歴
map qqq/ q/

if has("gui_running")
  map <C-k> :tabprevious<CR>
  map <C-j> :tabnext<CR>
endif

"------------------------------------------------------------------------------------"
" 自作コマンド
"------------------------------------------------------------------------------------"
command Setphp set filetype=php
command Setjavascript set filetype=javascript
command Sethtml set filetype=html

" y や dした後にfcなどすればよい
" copy to clipboard
if has("unix") && match(system("uname"),'Darwin') != -1 " mac
  " http://www.mail-archive.com/vim-latex-devel@lists.sourceforge.net/msg00773.html
  nnoremap fc :call system("pbcopy", @")<CR>
  nnoremap fp :r! pbpaste<CR>
elseif has('win32unix') " cygwin
  nnoremap fc :call system("putclip", @")<CR>
  nnoremap fp :r! getclip<CR>
endif

"------------------------------------------------------------------------------------"
" タブ幅の設定
"------------------------------------------------------------------------------------"
" expandtabはタブをスペースに変える
"set expandtab
set tabstop=2
set softtabstop=2
set shiftwidth=2

"------------------------------------------------------------------------------------"
"ステータスライン
"------------------------------------------------------------------------------------"
set laststatus=2                  "ステータスラインを常に表示

function! GetB()
  let c = matchstr(getline('.'), '.', col('.') - 1)
  let c = iconv(c, &enc, &fenc)
  return String2Hex(c)
endfunction
" :help eval-examples
" The function Nr2Hex() returns the Hex string of a number.
func! Nr2Hex(nr)
  let n = a:nr
  let r = ""
  while n
    let r = '0123456789ABCDEF'[n % 16] . r
    let n = n / 16
  endwhile
  return r
endfunc
" The function String2Hex() converts each character in a string to a two
" character Hex string.
func! String2Hex(str)
  let out = ''
  let ix = 0
  while ix < strlen(a:str)
    let out = out . Nr2Hex(char2nr(a:str[ix]))
    let ix = ix + 1
  endwhile
  return out
endfunc

"ステータスラインに文字コードと改行文字を表示する
" set statusline=%<[%n]%m%r%h%w%{'['.(&fenc!=''?&fenc:&enc).':'.&ff.']['.&ft.']'}\ %F%=%l,%c%V%8P
if winwidth(0) >= 120
  set statusline=%<[%n]%m%r%h%w%{'['.(&fenc!=''?&fenc:&enc).':'.&ff.']'}%y\ %F%=[%{GetB()}]\ %l,%c%V%8P
else
  set statusline=%<[%n]%m%r%h%w%{'['.(&fenc!=''?&fenc:&enc).':'.&ff.']'}%y\ %f%=[%{GetB()}]\ %l,%c%V%8P
endif

"set statusline=%{GetB()}

"------------------------------------------------------------------------------------"
" netrw
"------------------------------------------------------------------------------------"
" netrwは常にtree view
let g:netrw_liststyle = 3
" CVSと.で始まるファイルは表示しない
let g:netrw_list_hide = 'CVS,\(^\|\s\s\)\zs\.\S\+'
" 'v'でファイルを開くときは右側に開く。(デフォルトが左側なので入れ替え)
let g:netrw_altv = 1
" 'o'でファイルを開くときは下側に開く。(デフォルトが上側なので入れ替え)
let g:netrw_alto = 1

"------------------------------------------------------------------------------------"
"初期メッセージ
"------------------------------------------------------------------------------------"
if has("gui_running")
  set shortmess+=I
endif

"------------------------------------------------------------------------------------"
" end
"------------------------------------------------------------------------------------"