" vim: set ts=4 sw=4 sts=0: " vim: set noexpandtab "----------------------------------------------------------------------------- " Vim 7.x 用の設定。 " " 基本は以下の URL を參照にした。 " http://www.kawaz.jp/pukiwiki/?vim#hb6f6961 " "----------------------------------------------------------------------------- " 文字コード関連 " http://www.kawaz.jp/pukiwiki/?vim#cb691f26 " 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 " 日本語を含まない場合は fileencoding に encoding を使うようにする if has('autocmd') function! AU_ReCheck_FENC() if &fileencoding =~# 'iso-2022-jp' && search("[^\x01-\x7e]", 'n') == 0 let &fileencoding=&encoding endif endfunction autocmd BufReadPost * call AU_ReCheck_FENC() endif " 改行コードの自動認識 set fileformats=unix,dos,mac " □とか○の文字があってもカーソル位置がずれないようにする if exists('&ambiwidth') set ambiwidth=double endif "----------------------------------------------------------------------------- " 編集関連 " "ファイルタイプの自動識別を有効にする (':help incompatible-7' を参照) "filetype on filetype plugin indent on "オートインデントする set autoindent "BS が改行、autoindent を超えて動作する set backspace=eol,indent "C プログラムの自動インデントを無効にする(smartindent の為) set nocindent "モードラインの有効行を10する set modeline set modelines=10 "「賢い」インデントする set smartindent "----------------------------------------------------------------------------- "バイナリ編集(xxd)モード(vim -b での起動、もしくは *.bin で発動します) " http://www.kawaz.jp/pukiwiki/?vim#ib970976 " http://jarp.does.notwork.org/diary/200606a.html#200606021 " augroup BinaryXXD autocmd! autocmd BufReadPre *.bin let &binary =1 autocmd BufReadPost * if &binary | silent %!xxd -g 1 autocmd BufReadPost * set ft=xxd | endif autocmd BufWritePre * if &binary | %!xxd -r | endif autocmd BufWritePost * if &binary | silent %!xxd -g 1 autocmd BufWritePost * set nomod | endif augroup END " 行末の空白を目立たせる。 " http://d.hatena.ne.jp/tasukuchan/20070816/1187246177 if has('autocmd') highlight WhitespaceEOL ctermbg=red guibg=red match WhitespaceEOL /\s\+$/ autocmd WinEnter * match WhitespaceEOL /\s\+$/ endif "----------------------------------------------------------------------------- " 検索関連 " "検索文字列が小文字の場合は大文字小文字を区別なく検索する set ignorecase "検索文字列に大文字が含まれている場合は区別して検索する set smartcase "検索時に最後まで行ったら最初に戻る set wrapscan "検索文字列入力時に順次対象文字列にヒットさせない set noincsearch " grep で ack を使ふ " http://blog.blueblack.net/item_160 " http://d.hatena.ne.jp/secondlife/20080311/1205205348 "set grepprg=ack\ --perl set grepprg=ack if has("autocmd") autocmd QuickfixCmdPost grep cw endif "----------------------------------------------------------------------------- " 装飾関連 " "シンタックスハイライトを有効にする if has("syntax") syntax on endif "行番号を表示しない set nonumber "タブの左側にカーソル表示 " http://hatena.g.hatena.ne.jp/hatenatech/20060515/1147682761 set listchars=tab:\ \ set list "タブ幅を設定する set noexpandtab set tabstop=4 set shiftwidth=4 set softtabstop=0 "入力中のコマンドをステータスに表示する set showcmd "括弧入力時の対応する括弧を表示 set showmatch "検索結果文字列のハイライトを有効にする set hlsearch "ステータスラインを常に表示 set laststatus=2 "ステータスラインに文字コードと改行文字を表示する set statusline=%<%f\ %m%r%h%w%{'['.(&fenc!=''?&fenc:&enc).']['.&ff.']'}%=%l,%c%V%8P "----------------------------------------------------------------------------- " マップ定義 " "バッファ移動用キーマップ " QuickBuf を入れたのでコメントアウト。 " F2: 前のバッファ " F3: 次のバッファ " F4: バッファ削除 "map :bp "map :bn map :bw "表示行単位で行移動する nnoremap j gj nnoremap k gk "フレームサイズを怠惰に変更する map + map - "----------------------------------------------------------- " perl-support.vim " let g:Perl_PerlcriticSeverity = 1 ""----------------------------------------------------------- "" Perltidy (Perl Hacks #7) "" http://perltidy.sourceforge.net/ "" "map ,pt :%! perltidy "map ,ptv :%'<, '>! perltidy "----------------------------------------------------------- " PythonTidy " http://cheeseshop.python.org/pypi/PythonTidy/ " map ,yt :%! pythontidy map ,ytv :%'<, '>! pythontidy "----------------------------------------------------------- " Cscope " http://cscope.sourceforge.net/ " http://blog.miraclelinux.com/penguin/2007/02/vi_7fa6.html " if has("cscope") set csprg=/usr/bin/cscope set csto=0 set cst set nocsverb " add any database in current directory if filereadable("cscope.out") cs add cscope.out " else add database pointed to by environment elseif $CSCOPE_DB != "" cs add $CSCOPE_DB endif set csverb map g :cs find 3 =expand("") map g :cs find 0 =expand("") endif "----------------------------------------------------------------------------- " QuickBuf : Very small, clean but quick and POWERFUL buffer manager! " http://www.vim.org/scripts/script.php?script_id=1910 " http://nanasi.jp/articles/vim/qbuf_vim.html " let g:qb_hotkey="" "----------------------------------------------------------------------------- " vtreeexplorer : tree based file explorer - the original " http://www.vim.org/scripts/script.php?script_id=184 " http://d.hatena.ne.jp/obys/20061119/1163939621 let g:treeExplVertical=1 "----------------------------------------------------------------------------- " 以降、ファイルタイプ別の編集設定。 "----------------------------------------------------------------------------- "----------------------------------------------------------------------------- " For C (':h ft-c-omni' を参照) " if has('autocmd') autocmd FileType c set omnifunc=ccomplete#Complete endif "----------------------------------------------------------------------------- " For CSS (':h ft-css-omni' を参照) " if has('autocmd') autocmd FileType css set omnifunc=csscomplete#CompleteCSS endif "----------------------------------------------------------------------------- " For JavaScript (':h ft-javascript-omni' を参照) " if has('autocmd') autocmd FileType javascript set omnifunc=javascriptcomplete#CompleteJS endif "----------------------------------------------------------------------------- " For PHP (':h ft-php-omni' を参照) " if has('autocmd') autocmd! BufRead,BufNewFile *.inc set filetype=php autocmd FileType php set omnifunc=phpcomplete#CompletePHP " Exuberant ctags 5.7j1 が UTF-8 のソースでは " うまく動かないのでコメントアウト。 " autocmd FileType php nmap " \ :!ctags -f %:p:h/tags " \ -R " \ --jcode=utf8 " \ --exclude=*.js " \ --exclude=*.css " \ --exclude=*.htm " \ --exclude=.snapshot " \ --langmap="php:+.inc" " \ -h ".php.inc" " \ --totals=yes " \ --tag-relative=yes " \ --PHP-kinds=+cf-v %:p:h " autocmd FileType php set tags=./tags,tags endif "----------------------------------------------------------------------------- " For Perl " if has('autocmd') autocmd! BufRead,BufNewFile *.cgi set filetype=perl autocmd! BufRead,BufNewFile *.tdy set filetype=perl autocmd FileType perl set expandtab autocmd FileType perl set smarttab endif "----------------------------------------------------------------------------- " For Python " if has('autocmd') autocmd FileType python set expandtab autocmd FileType python set smarttab autocmd FileType python set omnifunc=pythoncomplete#Complete "" http://vim.sourceforge.net/scripts/script.php?script_id=30 "autocmd FileType python source $HOME/.vim/plugin/python.vim endif "----------------------------------------------------------------------------- " For Ruby (':h ft-ruby-omni' を参照) " if has('ruby') && has('autocmd') autocmd FileType ruby set omnifunc=rubycomplete#CompleteTags let g:rubycomplete_buffer_loading = 1 let g:rubycomplete_classes_in_global = 1 "let g:rubycomplete_rails = 1 endif "----------------------------------------------------------------------------- " For SQL (':h ft-sql-omni' を参照) " if has('autocmd') autocmd FileType sql set omnifunc=sqlcomplete#CompleteTags endif "----------------------------------------------------------------------------- " For XHTML (':h ft-xhtml-omni' を参照) " if has('autocmd') autocmd FileType html set expandtab autocmd FileType html set shiftwidth=2 autocmd FileType html set smarttab autocmd FileType html set softtabstop=2 autocmd FileType html set omnifunc=htmlcomplete#CompleteTags endif "----------------------------------------------------------------------------- " For XML (':h ft-xml-omni' を参照) " if has('autocmd') autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags endif "----------------------------------------------------------------------------- " For Other (':h ft-syntax-omni' を参照) " ※これが一番最後。 " if has("autocmd") && exists("+omnifunc") autocmd Filetype * \ if &omnifunc == "" | \ setlocal omnifunc=syntaxcomplete#Complete | \ endif endif