現在の.vimrc
2011年10月5日Table of Contents
以前のエントリでも掲載してましたが、現在の.vimrc
" KYO's Tech thekyo.jp "" " 基本設定 " " バックアップファイル(***~)を作らない set nobk "" " 文字コード設定 " " ターミナルコンソールエンコーディング set termencoding=utf-8 set encoding=utf-8 " 改行コード[unix|dos|mac] set fileformat=unix set fileformats=unix,dos,mac " 内部エンコーディング set fileencoding=utf-8 set fileencodings=iso-2022-jp,utf-8,euc-jp,latin1 "" " タブ/インデント設定 " " 画面上でのタブ幅(tabstop/softtabstop) set ts=4 set sts=0 " タブをスペースに展開 set expandtab " 自動的にインデントする(shiftwidth/autoindent) set sw=4 " set autoindent " スマートインデント(smartindent or cindent) " set smartindent set cindent " バックスペースで、インデントや改行を削除(backspace) " 0: Vi互換 " 1: indent,eol " 2: indent,eol,start set bs=2 "" " 編集設定 " " 括弧入力時に、対応する括弧を表示 set showmatch " コマンドライン補完に強化されたものを利用する set wildmenu "set wildmenu=list:full " テキスト整形オプション set formatoptions=tcq " ステータスライン表示情報 "set statusline=%<%f\ %m%r%h%w%{'['.(&fenc!=''?&fenc:&enc).']['.&ff.']'}%=%l,%c%V%8P function GetStatusEx() let str = '' let str = str. '['. &fileformat. ']' if has('multi byte') && fileencoding != '' let str = '['. &fenc . ']'. str endif return str endfunction set statusline=%<%f\ %m%r%h%w%{'['.(&fenc!=''?&fenc:&enc).']['.&ff.']'}%=%l,%c%V%8P " テキスト挿入の自動折り返しを日本語対応 set formatoptions+=mM " 折り畳み set foldmethod=marker set foldmarker={{{,}}} set foldminlines=1 set foldnestmax=20 " テキストの最大幅 (0:自動改行しない) set textwidth=0 " 編集中でも他のファイルを開けるように設定 set hidden " 行番号を表示 set number " ルーラーを表示 set ruler " タブや改行を表示 (list:表示) set list " どの文字でタブや改行を表示するかを設定 "set listchars=tab:>-,extends:<,trail:-,eol:< " 長い行を折り返して表示 (nowrap:折り返さない) set wrap " 常にステータス行を表示 (詳細は:he laststatus) set laststatus=2 " コマンドラインの高さ (Windows用gvim使用時はgvimrcを編集すること) set cmdheight=2 " コマンドをステータス行に表示 set showcmd " タイトルを表示 set title " 画面を黒地に白にする (次行の先頭の " を削除すれば有効になる) colorscheme evening " シンタックスのハイライト syntax on " ビープ音 set visualbell " Tab、行末の半角スペースを明示的に表示 set list set listchars=tab:^\ ,trail:~ "" " 検索設定 " " インクリメントサーチ set incsearch " 水平サーチ set hlsearch " 検索時、大文字小文字を無視 set ignorecase " 大文字小文字の両方が含まれている場合、大文字と小文字を区別 set smartcase " 検索時、ファイル末尾から先頭へ戻る set wrapscan "" " dictionary " autocmd FileType php :set dictionary+=$HOME/.vim/dict/php.dict "" " 日本語エンコード " " 文字コードの自動認識 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 "" " 全角スペース表示 " function! ZenkakuSpace() "ZenkakuSpaceをカラーファイルで設定するなら次の行は削除 highlight ZenkakuSpace cterm=underline ctermfg=darkgrey gui=underline guifg=darkgrey "全角スペースを明示的に表示する。 silent! match ZenkakuSpace / / endfunction if has('syntax') augroup ZenkakuSpace autocmd! autocmd VimEnter,BufEnter * call ZenkakuSpace() augroup END endif "" " インサートモード時の色変更 " let g:hi_insert = 'highlight StatusLine guifg=darkblue guibg=darkyellow gui=none ctermfg=blue ctermbg=darkred cterm=none' if has('syntax') augroup InsertHook autocmd! autocmd InsertEnter * call s:StatusLine('Enter') autocmd InsertLeave * call s:StatusLine('Leave') augroup END endif let s:slhlcmd = '' function! s:StatusLine(mode) if a:mode == 'Enter' silent! let s:slhlcmd = 'highlight ' . s:GetHighlight('StatusLine') silent exec g:hi_insert else highlight clear StatusLine silent exec s:slhlcmd endif endfunction function! s:GetHighlight(hi) redir => hl exec 'highlight '.a:hi redir END let hl = substitute(hl, '[\r\n]', '', 'g') let hl = substitute(hl, 'xxx', '', '') return hl endfunction "" " pathogen " "pathogenでftdetectなどをロードさせるために一度ファイルタイプ判定をoffにする filetype off "pathogen.vimを使ってbundle配下のプラグインをpathに加える call pathogen#runtime_append_all_bundles() call pathogen#helptags() set helpfile=$VIMRUNTIME/doc/help.txt "ファイルタイプ設定をonにする filetype on "" " 現在のファイルをそのまま実行(ファイルが存在すること) " " @see http://subtech.g.hatena.ne.jp/secondlife/20060727/1153990447 " @usage ,e " function! ShebangExecute() let m = matchlist(getline(1), '#!\(.*\)') if(len(m) > 2) execute '!'. m[1] . ' %' else execute '!' &ft ' %' endif endfunction nmap ,e :call ShebangExecute()<CR> "" " php syntax check " " @see http://d.hatena.ne.jp/tell-k/20081224/1230185066 " @usage :make autocmd filetype php :set makeprg=php\ -l\ % autocmd filetype php :set errorformat=%m\ in\ %f\ on\ line\ %l "" " yanktmp.vim " " @usage sy map <silent> sy :call :call YanktmpYank()<CR> map <silent> sp :call :call YanktmpPaste_p()<CR> map <silent> sp :call :call YanktmpPaste_p()<CR> """ "" ポップアップメニューのカラーを設定 "" " highlight Pmenu ctermbg=4 " highlight PmenuSel ctermbg=1 " highlight PMenuSbar ctermbg=4 ""<TAB>で補完 "" {{{ Autocompletion using the TAB key "" This function determines, wether we are on the start of the line text (then tab indents) or "" if we want to try autocompletion " function! InsertTabWrapper() " let col = col('.') - 1 " if !col || getline('.')[col - 1] !~ '\k' " return "\<TAB>" " else " if pumvisible() " return "\<C-N>" " else " return "\<C-N>\<C-P>" " end " endif " endfunction "" Remap the tab key to select action with InsertTabWrapper " inoremap <tab> <c-r>=InsertTabWrapper()<cr> "" }}} Autocompletion using the TAB key "" " php-doc.vim " " @see ~/.vim/php-doc.vim inoremap <C-P> <ESC>:call PhpDocSingle()<CR>i nnoremap <C-P> :call PhpDocSingle()<CR> vnoremap <C-P> :call PhpDocRange()<CR> "" " vim-ref " " let g:ref_phpmanual_path = $HOME. '/public_html/repos/manual/php' "" " skel " augroup SkeletonAu autocmd! autocmd BufNewFile *.html 0r $HOME/.vim/skel.html autocmd BufNewFile *.pl 0r $HOME/.vim/skel.pl autocmd BufNewFile *.cgi 0r $HOME/.vim/skel.cgi autocmd BufNewFile *.pm 0r $HOME/.vim/skel.pm autocmd BufNewFile *.php 0r $HOME/.vim/skel.php augroup END