ぼちぼち散歩

おれの.vimrc

.vimrcの解説のようなものを書こうと思ったけどめんどくさいので実際のものを見た方が早い気がしたので,現段階での.vimrcと.gvimrcを晒してみる..gvimrcはGUI版のVim(GVim)のみ読み込まれる設定ファイルなので,GUI固有の設定はそっちに書いとくとよさげ.

.vimrc

" ==================== 基本の設定 ==================== "
" 全般設定
set nocompatible            " 必ず最初に書く
set viminfo='20,<50,s10,h,! " YankRing用に!を追加
set shellslash              " Windowsでディレクトリパスの区切り文字に / を使えるようにする
set lazyredraw              " マクロなどを実行中は描画を中断
colorscheme desert          " カラースキーム

" タブ周り
" tabstopはTab文字を画面上で何文字分に展開するか
" shiftwidthはcindentやautoindent時に挿入されるインデントの幅
" softtabstopはTabキー押し下げ時の挿入される空白の量,0の場合はtabstopと同じ,BSにも影響する
set tabstop=4 shiftwidth=4 softtabstop=0
set expandtab              " タブを空白文字に展開
set autoindent smartindent " 自動インデント,スマートインデント

" 入力補助
set backspace=indent,eol,start " バックスペースでなんでも消せるように
set formatoptions+=m           " 整形オプション,マルチバイト系を追加

" コマンド補完
set wildmenu           " コマンド補完を強化
set wildmode=list:full " リスト表示,最長マッチ

" 検索関連
set wrapscan   " 最後まで検索したら先頭へ戻る
set ignorecase " 大文字小文字無視
set smartcase  " 大文字ではじめたら大文字小文字無視しない
set incsearch  " インクリメンタルサーチ
set hlsearch   " 検索文字をハイライト

" ファイル関連
set nobackup   " バックアップ取らない
set autoread   " 他で書き換えられたら自動で読み直す
set noswapfile " スワップファイル作らない
set hidden     " 編集中でも他のファイルを開けるようにする

" ヘルプファイル
if has('mac')
    helptags ~/.vim/doc/
endif
if has('win32')
    helptags ~/vimfiles/doc/
endif

"表示関連
set showmatch         " 括弧の対応をハイライト
set showcmd           " 入力中のコマンドを表示
set number            " 行番号表示
set wrap              " 画面幅で折り返す
set list              " 不可視文字表示
set listchars=tab:>  " 不可視文字の表示方法
set notitle           " タイトル書き換えない
set scrolloff=5       " 行送り

" ステータスライン関連
set laststatus=2
set statusline=%<%F %r%h%w%y%{'['.(&fenc!=''?&fenc:&enc).']['.&ff.']'}%=%4v(ASCII=%03.3b,HEX=%02.2B) %l/%L(%P)%m

" エンコーディング関連
set ffs=unix,dos,mac " 改行文字

" 文字コードの自動認識
" 適当な文字コード判別
set termencoding=utf-8
set encoding=utf-8
set fileencodings=iso-2022-jp,utf-8,cp932,euc-jp

" 厳密な文字コード判別
" http://www.kawaz.jp/pukiwiki/?vim#content_1_7
" http://d.hatena.ne.jp/hazy-moon/20061229/1167407073
" 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

" UTF-8の□や○でカーソル位置がずれないようにする
" Terminal.appはどっちにしてもダメ,PrivatePortsのiTermでやる
set ambiwidth=double

" ファイルタイプ関連
" 使用できる色は
" :edit $VIMRUNTIME/syntax/colortest.vim
" :source %
" で、設定名と現在の色は
" :highlight

syntax on " シンタックスカラーリングオン

" なぜか動かない
" highlight ZenkakuSpace ctermbg=6 guibg=white
" match ZenkakuSpace /s+$| /

set complete+=k    " 補完に辞書ファイル追加
filetype indent on " ファイルタイプによるインデントを行う
filetype plugin on " ファイルタイプごとのプラグインを使う

" Omni補完関連
" $VIMRUNTIME/autoload/htmlcomplete.vimの645行目をコメントアウントしておくとhtmlの補完が小文字になる

set completeopt=menu,preview,menuone " 補完表示設定

" TabでOmni補完及びポップアップメニューの選択
function InsertTabWrapper(is_shift)
    if pumvisible()
        return a:is_shift ? "<C-p>" : "<C-n>"
    endif
    let col = col('.') - 1
    if !col || getline('.')[col - 1] !~ 'k|<|/' " htmlで補完できるように<,/でもOmni補完
        return "<tab>"
    elseif exists('&omnifunc') && &omnifunc == ''
        return a:is_shift ? "<C-p>" : "<C-n>"
    else
        return "<C-x><C-o>"
    endif
endfunction
inoremap <tab> <C-r>=InsertTabWrapper(0)<CR>
" Shift-Tabはうまくいかないようだ
" inoremap <S-tab> <C-r>=InsertTabWrapper(1)<CR>

" CRでOmni確定&改行
function InsertCrWrapper()
    return pumvisible() ? "<C-y><CR>" : "<CR>"
endfunction
inoremap <CR> <C-r>=InsertCrWrapper()<CR>

" ポップアップメニューの色変える
highlight Pmenu ctermbg=lightcyan ctermfg=black 
highlight PmenuSel ctermbg=blue ctermfg=black 
highlight PmenuSbar ctermbg=darkgray 
highlight PmenuThumb ctermbg=lightgray

" バイナリモード
" bviとかHexEditor.appの方が楽
" vim -b : edit binary using xxd-format!
" augroup BinaryXXD
  " autocmd!
  " autocmd BufReadPre *.bin,*.swf 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

" Migemo
if has('migemo')
    set migemo
    set migemodict=/opt/local/share/migemo/utf-8/migemo-dict
endif

" Kaoriya
if has('kaoriya')
    " imを無効にする
    set iminsert=0
    set imsearch=0
endif

" ==================== キーマップ ==================== "
" 表示行単位で移動
noremap j gj
noremap k gk
vnoremap j gj
vnoremap k gk

" ハイライト消す
nmap <silent> gh :nohlsearch<CR>

" コピペ
" Macの場合は普通にComamnd-C,Command-Vも使えたりする
if has('mac')
    map <silent> gy :call YankPB()<CR>
    function! YankPB()
        let tmp = tempname()
        call writefile(getline(a:firstline, a:lastline), tmp, 'b')
        silent exec ":!cat " . tmp . " | iconv -f utf-8 -t shift-jis | pbcopy"
    endfunction
endif
if has('win32')
    noremap gy "+y
    " ペーストがうまく動いてない
    noremap gp "+p
endif

" マウス操作を有効にする
" iTermのみ,Terminal.appでは無効
if has('mac')
    set mouse=a
    set ttymouse=xterm2
endif

" ==================== プラグインの設定 ==================== "

" Rails
autocmd FileType ruby,eruby,yaml set softtabstop=2 shiftwidth=2 tabstop=2
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
let g:rails_level = 4

" CakePHP
au BufNewFile,BufRead *.thtml setfiletype php
au BufNewFile,BufRead *.ctp setfiletype php

" .vimperatorrc
au BufNewFile,BufRead .vimperatorrc,_vimperatorrc setfiletype vimperator

" Lusty Explorer
" nmap <unique> <silent> <C-b> :BufferExplorer<CR>
" nmap <unique> <silent> <C-e> :FilesystemExplorer<CR>

" NERD_comments
let NERDSpaceDelims = 1
let NERDShutUp = 1

" NERD_tree
nmap <unique> <silent> <C-e> :NERDTreeToggle<CR>

" Fuzzy
nmap <unique> <silent> <C-b> :FuzzyFinderBuffer<CR>
nmap <unique> <silent> <C-f> :FuzzyFinderFile<CR>
nmap <unique> <silent> <Leader>m :FuzzyFinderMruFile<CR>
nmap <unique> <silent> <Leader>c :FuzzyFinderMruCmd<CR>
nmap <unique> <silent> <Leader>d :FuzzyFinderDir<CR>

" AutoComplete
" 330行目らへんを修正してある
let g:AutoComplPop_IgnoreCaseOption = 0
let g:AutoComplPop_CompleteoptPreview = 1

" Project
" let g:proj_flags = "imstg"
" let g:proj_window_width = 30
" nmap <silent> <Leader>p <Plug>ToggleProject

" surround
autocmd FileType php let b:surround_45 = "<?php 
 ?>"

" php-doc
autocmd FileType php inoremap <C-p> <ESC>:call PhpDocSingle()<CR>i
autocmd FileType php nnoremap <C-p> :call PhpDocSingle()<CR>
autocmd FileType php vnoremap <C-p> :call PhpDocRange()<CR>
let g:pdv_cfg_Type = "string"
let g:pdv_cfg_Package = ""
let g:pdv_cfg_Version = ""
let g:pdv_cfg_Author = "tsukkee <takayuki0510@gmail.com>"
let g:pdv_cfg_Copyright = ""
let g:pdv_cfg_License = ""

" Firefoxリロード
" 要MozRepl
function ReloadFirefox()
    if has('ruby')
        :ruby <<EOF
            require "net/telnet"

            telnet = Net::Telnet.new({
                "Host" => "localhost",
                "Port" => 4242
            })

            telnet.puts("content.location.reload(true)")
            telnet.close
EOF
    endif
endfunction
nmap <silent> <Leader>r :call ReloadFirefox()<CR>

" vimsh
nmap <silent> <Leader>s :so ~/.vim/vimsh/vimsh.vim<CR>

" visual studio
if has('win32')
    let g:visual_studio_python_exe = "C:/Python25/python.exe"
endif

.gvimrc

" ==================== フォント設定 ==================== "
" 普通のMac版GVim
if has('gui_mac')
    set guifont=Osaka-Mono:h14
"   set guifontwide=Osaka-Mono:h14
"   set guifont=Yutapon_coding_Regular:h14:cUTF-8
endif

" 実験版MacVim
if has('gui_macvim')
    set showtabline=2
endif

" Windows版GVim
if has('win32')
    set guifont=M+2VM+IPAG_circle:h10:cSHIFTJIS
"   set guifont=ゆたぽん(コーディング)Heavy:h11:cSHIFTJIS
endif

" ==================== 画面表示設定 ==================== "
set title       " タイトル表示
set linespace=4 " 行間
set columns=110 " 幅
set lines=30    " 高さ

if has('mac')
    set guioptions+=aeT
endif
set transparency=240

" ポップアップメニューの色変える
highlight Pmenu  guibg=#3333ff guifg=#000000
highlight PmenuSel guibg=#0000dd guifg=#000000
highlight PmenuSbar guibg=#333333
highlight PmenuThumb guibg=#aaaaaa
スポンサーサイト

2007/11/21 03:15 | Vim | トラックバック(0) | コメント(1)

ページの先頭へ

コメント

mattn

syn match ZenkakuSpace /○/ containedin=ALL
highlight ZenkakuSpace ctermbg=6 guibg=white

全てのシンタックスの中にめり込む形になるので containedin=ALL をつけます。

2012/03/30 20:28 | URL [ 編集 ]

コメントの投稿


トラックバック

トラックバックURL
http://relaxedcolumn.blog8.fc2.com/tb.php/101-18c51dce

トップページへ