現在の.vimrc

2011年10月5日 オフ 投稿者: KYO
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