2012年10月26日金曜日

VIMの設定を投稿してみる

LINUX環境の.vimrcとか使ってるプラグインとかを書いておく。

--------------------------.vimrc-----------------------------------



"####################################
"               SET
"####################################
" 行番号を表示
set number
" ルーラーを表示
set ruler
" オートインデントを有効
set autoindent
" Tabの幅
set tabstop=4
set softtabstop=4
set shiftwidth=4
" 入力中のコマンドを表示
set showcmd
" ステータスラインを常に表示
set laststatus=2
" コマンド欄の高さ
set cmdheight=2
" 画面端で折り返さない
set nowrap
" タブや改行を表示(表示しない:set nolist)し、代替文字を設定
set list
set listchars=eol:¬
" vi互換モードOFF
set nocompatible
" カーソル移動時、行末で折り返す
set whichwrap=b,s,<,>,[,]
" 検索を循環させない(させる/set wrapscan)
"set nowrapscan
set wrapscan
" バックアップファイルを作らない
"set nobackup
" スワップファイルを作らない
set noswapfile
" ハイライトの時間
set matchtime=3
" Tabを空白で表示
set expandtab
" エンコード設定
set encoding=utf-8
" yankをクリップボードへ送る
set clipboard+=unnamed
" 編集中でもバッファを切り替えられる
set hidden
" 短形選択で行末を越えてブロックを選択できるようにする
set virtualedit+=block
" 検索で大文字、小文字を区別しない
set ignorecase
" 検索で大文字なら無視しない
set smartcase
" 検索結果をハイライト
set hlsearch
" 対応する括弧を強調
set showmatch
" インクリメンタル検索を有効
set incsearch
" 現在のモードを表示
set showmode
" 行をまたいでbackspace
set backspace=indent,eol,start
" 横分割時は下へ、縦分割時は右へ新しいウィンドウを開く
set splitbelow
set splitright
" タブエディタ化
" タブラインを常に表示
set showtabline=2
" modifiable
set modifiable
set write




"####################################
"               MAP
"####################################
" 削除でレジスタに格納しない
nnoremap x "_x
nnoremap dd "_dd
" ESCでハイライトをオフ
nnoremap <silent> <ESC> <ESC>:noh<CR>
" ノーマルモードでもエンターで改行挿入
nnoremap <CR> A<CR><ESC>
" Ctrl+Tを2回押しで現在時刻挿入
imap <silent> <C-T><C-T> <C-R>=strftime("%H:%M:%S")<CR>
"見た目行で移動
nnoremap j gj
nnoremap k gk
"yyで改行をヤンクしない
nnoremap yy ^y
" jj = ESC
"inoremap jj <Esc>
" SingleCompileをF5,F6,F7で使う
nmap <F5> :SCCompile<CR>
nmap <F6> :SCCompileRun<CR>
nmap <F7> :SCChooseCompiler<CR>
imap <F5> <Esc>:SCCompile<CR>
imap <F6> <Esc>:SCCompileRun<CR>
imap <F7> <Esc>:SCChooseCompiler<CR>
" タブ移動
nnoremap <silent> <C-h> :tabN<CR>
nnoremap <silent> <C-l> :tabn<CR>




"####################################
"               その他
"####################################
" pathogenを有効化
call pathogen#runtime_append_all_bundles()

" カラースキーム
colorscheme jellybeans

" C-c,C-v,C-x,C-z,C-y,C-a,C-sをWindowsの動きへ
:source $VIMRUNTIME/mswin.vim

" 文字の色を変化させる
syntax on

" カーソル行を目立たせる
augroup cch
    autocmd! cch
    autocmd WinLeave * set nocursorline
    autocmd WinEnter,Bufread * set cursorline
augroup END


"####################################
"         quickrun.vim
"####################################
" 横分割をするようにする
let g:quickrun_config={'*': {'split': ''}}


"####################################
"         neocomplcache.vim
"####################################
" 起動時に有効化
let g:neocomplcache_enable_at_startup = 1
" 大文字が入力されるまで大文字小文字の区別を無視する
let g:neocomplcache_enable_smart_case = 1
" _(アンダースコア)区切りの補完を有効化
let g:neocomplcache_enable_underbar_completion = 1
let g:neocomplcache_enable_camel_case_completion = 1
" ポップアップメニューで表示される候補の数
let g:neocomplcache_min_keyword_length = 20
" 補完部分の中から、共通する部分を補完する
inoremap <expr><C-l> neocomplcache#complete_common_string()
" 改行で補完ウィンドウを閉じる
inoremap <expr><CR> neocomplcache#smart_close_popup() . "\<CR>"
" tabで補完候補の選択を行う
inoremap <expr><TAB> pumvisible() ? "\<Down>" : "\<TAB>"
inoremap <expr><S-TAB> pumvisible() ? "\<Up>" : "\<S-TAB>"
" インクルードディレクトリの設定
"let g:neocomplcache_include_paths="/usr/lib"
"" clang_complete
"" clang_complete 側の設定
"" clang_complete の自動呼び出しは必ず切っておいて下さい
"" これを設定しておかなければ補完がおかしくなります
let g:clang_complete_auto=0
"" neocomplcache 側の設定
let g:neocomplcache_force_overwrite_completefunc=1
if !exists("g:neocomplcache_force_omni_patterns")
    let g:neocomplcache_force_omni_patterns={}
endif
"" omnifunc が呼び出される場合の正規表現パターンを設定しておく
let g:neocomplcache_force_omni_patterns.cpp = '[^.[:digit:] *\t]\%(\.\|->\)\|::'
let g:clang_use_library=1
let g:clang_library_path="/usr/local/llvm3.1/lib"
let g:clang_user_options='2>/dev/null || exit 0"'





---------------------プラグインやその他拡張機能-------------------------
neocomplcache.vim
clang_complete.vim
強力な補完機能をもつプラグイン。こいつナシではプログラムは組めない。

unite.vim
vimshell.vim
vimfiler.vim
vimproc.vim
なんかわかんないけどすごい便利、非同期で動かせたりvimでシェル使えたりファイラになったりする

SingleCompile
quickrun.vim
いちいち"gcc hoge.c -o hoge -Wall"とか打つのメンドイっしょ?
それらを自動でやってくれる子たち

EnhancedCommentify
\xでコメントアウトしてくれる

Pyclewn
vim上でデバッグできる。
ブレークポイントつけたりステップインしたり変数ダンプしたりできるチョー便利


pathogen.vim
プラグイン管理プラグイン
"~/.vim/autoload"にはこいつ一つで十分さ