set nocompatible filetype off "----------------------------- " Vundle "----------------------------- set rtp+=~/.vim/vundle.git/ call vundle#rc() Bundle 'Align' Bundle 'SQLUtilities' Bundle 'TwitVim' Bundle 'othree/eregex.vim' Bundle 'tpope/vim-fugitive' Bundle 'tpope/vim-surround' Bundle 'grep.vim' Bundle 'Shougo/neocomplcache' Bundle 'scrooloose/nerdcommenter' Bundle 'Shougo/unite.vim' Bundle 'tsukkee/unite-help' Bundle 'h1mesuke/unite-outline' Bundle 'ujihisa/unite-locate' Bundle 'kana/vim-smartchr' Bundle 'Shougo/vimproc' Bundle 'Shougo/vimshell' Bundle 'Smooth-Scroll' Bundle 'yuroyoro/vim-python' Bundle 'yuroyoro/vimdoc_ja' Bundle 'thinca/vim-quickrun' Bundle 'tokorom/ios-vim-snippets' Bundle 'taglist.vim' Bundle 'autodate.vim' Bundle 'taku-o/vim-changed' Bundle 'jcommenter.vim' Bundle 'frah/monday' Bundle 'thinca/vim-ref' Bundle 'tyru/open-browser.vim' Bundle 'sudo.vim' Bundle 'Arduino-syntax-file' Bundle 'git://vim-latex.git.sourceforge.net/gitroot/vim-latex/vim-latex' Bundle 'tomtom/tlib_vim' Bundle 'tomtom/tskeleton_vim' filetype plugin indent on "------------------------------------------------------------------------------- " 基本設定 Basics "------------------------------------------------------------------------------- let mapleader = "," " キーマップリーダー set scrolloff=5 " スクロール時の余白確保 set textwidth=0 " 一行に長い文章を書いていても自動折り返しをしない set nobackup " バックアップ取らない set autoread " 他で書き換えられたら自動で読み直す set noswapfile " スワップファイル作らない set hidden " 編集中でも他のファイルを開けるようにする set backspace=indent,eol,start " バックスペースでなんでも消せるように set formatoptions=lmoq " テキスト整形オプション,マルチバイト系を追加 set vb t_vb= " ビープをならさない set browsedir=buffer " Exploreの初期ディレクトリ set whichwrap=b,s,h,l,<,>,[,] " カーソルを行頭、行末で止まらないようにする set showcmd " コマンドをステータス行に表示 set showmode " 現在のモードを表示 set viminfo='50,<1000,s100,\"50 " viminfoファイルの設定 set modelines=0 " モードラインは無効 " OSのクリップボードを使用する set clipboard+=unnamed " ターミナルでマウスを使用できるようにする "set mouse=a "set guioptions+=a "set ttymouse=xterm2 " 挿入モードでCtrl+kを押すとクリップボードの内容を貼り付けられるようにする " imap "*pa " Ev/Rvでvimrcの編集と反映 command! Ev edit $MYVIMRC command! Rv source $MYVIMRC set helpfile=$VIMRUNTIME/doc/help.txt " ファイルタイプ判定をon filetype plugin on "------------------------------------------------------------------------------- " ステータスライン StatusLine "------------------------------------------------------------------------------- set laststatus=2 " 常にステータスラインを表示 "カーソルが何行目の何列目に置かれているかを表示する set ruler "ステータスラインに文字コードと改行文字を表示する if winwidth(0) >= 120 set statusline=%<[%n]%m%r%h%w%{'['.(&fenc!=''?&fenc:&enc).':'.&ff.']'}%y\ %F%=[%{GetB()}]\ %{fugitive#statusline()}\ %l,%c%V%8P else set statusline=%<[%n]%m%r%h%w%{'['.(&fenc!=''?&fenc:&enc).':'.&ff.']'}%y\ %f%=[%{GetB()}]\ %{fugitive#statusline()}\ %l,%c%V%8P endif "入力モード時、ステータスラインのカラーを変更 augroup InsertHook autocmd! autocmd InsertEnter * highlight StatusLine guifg=#ccdc90 guibg=#2E4340 ctermfg=cyan autocmd InsertLeave * highlight StatusLine guifg=#2E4340 guibg=#ccdc90 ctermfg=white augroup END "自動的に QuickFix リストを表示する autocmd QuickfixCmdPost make,grep,grepadd,vimgrep,vimgrepadd cwin autocmd QuickfixCmdPost lmake,lgrep,lgrepadd,lvimgrep,lvimgrepadd lwin function! GetB() let c = matchstr(getline('.'), '.', col('.') - 1) let c = iconv(c, &enc, &fenc) return String2Hex(c) endfunction " help eval-examples " The function Nr2Hex() returns the Hex string of a number. func! Nr2Hex(nr) let n = a:nr let r = "" while n let r = '0123456789ABCDEF'[n % 16] . r let n = n / 16 endwhile return r endfunc " The function String2Hex() converts each character in a string to a two " character Hex string. func! String2Hex(str) let out = '' let ix = 0 while ix < strlen(a:str) let out = out . Nr2Hex(char2nr(a:str[ix])) let ix = ix + 1 endwhile return out endfunc "------------------------------------------------------------------------------- " 表示 Apperance "------------------------------------------------------------------------------- set showmatch " 括弧の対応をハイライト set number " 行番号表示 set list " 不可視文字表示 set listchars=tab:>.,trail:_,extends:>,precedes:< " 不可視文字の表示形式 set display=uhex " 印字不可能文字を16進数で表示 " 全角スペースの表示 highlight ZenkakuSpace cterm=underline ctermfg=lightblue guibg=darkgray match ZenkakuSpace / / " カーソル行をハイライト set cursorline " カレントウィンドウにのみ罫線を引く augroup cch autocmd! cch autocmd WinLeave * set nocursorline autocmd WinEnter,BufRead * set cursorline augroup END :hi clear CursorLine :hi CursorLine gui=underline highlight CursorLine ctermbg=black guibg=black " コマンド実行中は再描画しない :set lazyredraw " 高速ターミナル接続を行う :set ttyfast "------------------------------------------------------------------------------- " インデント Indent "------------------------------------------------------------------------------- set autoindent " 自動でインデント "set paste " ペースト時にautoindentを無効に(onにするとautocomplpop.vimが動かない) set smartindent " 新しい行を開始したときに、新しい行のインデントを現在行と同じ量にする。 set cindent " Cプログラムファイルの自動インデントを始める " softtabstopはTabキー押し下げ時の挿入される空白の量,0の場合はtabstopと同じ,BSにも影響する set tabstop=4 shiftwidth=4 softtabstop=0 if has("autocmd") "ファイルタイプの検索を有効にする filetype plugin on "そのファイルタイプにあわせたインデントを利用する filetype indent on " これらのftではインデントを無効に "autocmd FileType php filetype indent off autocmd FileType html :set indentexpr= autocmd FileType xhtml :set indentexpr= endif "------------------------------------------------------------------------------- " 補完・履歴 Complete "------------------------------------------------------------------------------- set wildmenu " コマンド補完を強化 set wildchar= " コマンド補完を開始するキー set wildmode=list:full " リスト表示,最長マッチ set history=1000 " コマンド・検索パターンの履歴数 set complete+=k " 補完に辞書ファイル追加 "でomni補完 " imap " " -- tabでオムニ補完 " function! InsertTabWrapper() " if pumvisible() " return "\" " endif " let col = col('.') - 1 " if !col || getline('.')[col -1] !~ '\k\|<\|/' " return "\" " elseif exists('&omnifunc') && &omnifunc == '' " return "\" " else " return "\\" " endif " endfunction " inoremap =InsertTabWrapper() "------------------------------------------------------------------------------- " タグ関連 Tags "------------------------------------------------------------------------------- " set tags if has("autochdir") " 編集しているファイルのディレクトリに自動で移動 set autochdir set tags=tags; else set tags=./tags,./../tags,./*/tags,./../../tags,./../../../tags,./../../../../tags,./../../../../../tags endif "はscreentとかぶるので削除 "tab pagesを使い易くする " nnoremap " nnoremap n ;tabnew " nnoremap c ;tabclose " nnoremap o ;tabonly " nnoremap j ;execute 'tabnext' 1 + (tabpagenr() + v:count1 - 1) % tabpagenr('$') " nnoremap k gT "tags-and-searchesを使い易くする nnoremap t "「飛ぶ」 nnoremap tt "「進む」 nnoremap tj ;tag "「戻る」 nnoremap tk ;pop "履歴一覧 nnoremap tl ;tags "------------------------------------------------------------------------------- " 検索設定 Search "------------------------------------------------------------------------------- set wrapscan " 最後まで検索したら先頭へ戻る set ignorecase " 大文字小文字無視 set smartcase " 検索文字列に大文字が含まれている場合は区別して検索する set incsearch " インクリメンタルサーチ set hlsearch " 検索文字をハイライト "Escの2回押しでハイライト消去 nmap ;nohlsearch "選択した文字列を検索 vnoremap // y/=escape(@", '\\/.*$^~[]') "選択した文字列を置換 vnoremap /r "xy;%s/=escape(@x, '\\/.*$^~[]')//gc "s*置換後文字列/gでカーソル下のキーワードを置換 nnoremap s* ':%substitute/\<' . expand('') . '\>/' " Ctrl-iでヘルプ nnoremap :help " カーソル下のキーワードをヘルプでひく nnoremap :help " :Gb でGrepBufferする command! -nargs=1 Gb :GrepBuffer " カーソル下の単語をGrepBufferする nnoremap :GrepBuffer "------------------------------------------------------------------------------- " 移動設定 Move "------------------------------------------------------------------------------- " カーソルキーを使用可能に set notimeout set ttimeout set timeoutlen=100 " カーソルを表示行で移動する。論理行移動は, nnoremap h nnoremap j gj nnoremap k gk nnoremap l nnoremap gj nnoremap gk " 0, 9で行頭、行末へ nmap 1 0 nmap 0 ^ nmap 9 $ " insert mode での移動 imap imap " インサートモードでもhjklで移動(Ctrl押すけどね) "imap "imap "imap "imap "j, kで画面送り noremap j noremap k " spaceで次のbufferへ。back-spaceで前のbufferへ nmap ;MBEbn nmap ;MBEbp " F2で前のバッファ map ;bp " F3で次のバッファ map ;bn " F4でバッファを削除する map ;bw "フレームサイズを怠惰に変更する map + map - " 前回終了したカーソル行に移動 autocmd BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "normal g`\"" | endif " 最後に編集された位置に移動 nnoremap gb '[ nnoremap gp '] " 対応する括弧に移動 nnoremap ( % nnoremap ) % " 最後に変更されたテキストを選択する nnoremap gc `[v`] vnoremap gc normal gc onoremap gc normal gc " カーソル位置の単語をyankする nnoremap vy vawy " 矩形選択で自由に移動する set virtualedit+=block "ビジュアルモード時vで行末まで選択 vnoremap v $h " CTRL-hjklでウィンドウ移動 nnoremap j nnoremap k nnoremap l nnoremap h " git-diff-aware version of gf commands. " http://labs.timedia.co.jp/2011/04/git-diff-aware-gf-commands-for-vim.html nnoremap gf do_git_diff_aware_gf('gf') nnoremap gF do_git_diff_aware_gf('gF') nnoremap f do_git_diff_aware_gf('f') nnoremap do_git_diff_aware_gf('') nnoremap F do_git_diff_aware_gf('F') nnoremap gf do_git_diff_aware_gf('gf') nnoremap gF do_git_diff_aware_gf('gF') function! s:do_git_diff_aware_gf(command) let target_path = expand('') if target_path =~# '^[ab]/' " with a peculiar prefix of git-diff(1)? if filereadable(target_path) || isdirectory(target_path) return a:command else " BUGS: Side effect - Cursor position is changed. let [_, c] = searchpos('\f\+', 'cenW') return c . '|' . 'v' . (len(target_path) - 2 - 1) . 'h' . a:command endif else return a:command endif endfunction "------------------------------------------------------------------------------- " エンコーディング関連 Encoding "------------------------------------------------------------------------------- set ffs=unix,dos,mac " 改行文字 set encoding=utf-8 " デフォルトエンコーディング " 文字コード関連 " from ずんWiki http://www.kawaz.jp/pukiwiki/?vim#content_1_7 " 文字コードの自動認識 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 " cvsの時は文字コードをeuc-jpに設定 autocmd FileType cvs :set fileencoding=euc-jp " 以下のファイルの時は文字コードをutf-8に設定 autocmd FileType svn :set fileencoding=utf-8 autocmd FileType js :set fileencoding=utf-8 autocmd FileType css :set fileencoding=utf-8 autocmd FileType html :set fileencoding=utf-8 autocmd FileType xml :set fileencoding=utf-8 autocmd FileType java :set fileencoding=utf-8 autocmd FileType scala :set fileencoding=utf-8 " ワイルドカードで表示するときに優先度を低くする拡張子 set suffixes=.bak,~,.swp,.o,.info,.aux,.log,.dvi,.bbl,.blg,.brf,.cb,.ind,.idx,.ilg,.inx,.out,.toc " 指定文字コードで強制的にファイルを開く command! Cp932 edit ++enc=cp932 command! Eucjp edit ++enc=euc-jp command! Iso2022jp edit ++enc=iso-2022-jp command! Utf8 edit ++enc=utf-8 command! Jis Iso2022jp command! Sjis Cp932 "------------------------------------------------------------------------------- " カラー関連 Colors "------------------------------------------------------------------------------- " ターミナルタイプによるカラー設定 if &term =~ "xterm-debian" || &term =~ "xterm-xfree86" || &term =~ "xterm-256color" set t_Co=16 set t_Sf=[3%dm set t_Sb=[4%dm elseif &term =~ "xterm-color" set t_Co=8 set t_Sf=[3%dm set t_Sb=[4%dm endif "ポップアップメニューのカラーを設定 "hi Pmenu guibg=#666666 "hi PmenuSel guibg=#8cd0d3 guifg=#666666 "hi PmenuSbar guibg=#333333 " ハイライト on syntax enable " 補完候補の色づけ for vim7 hi Pmenu ctermbg=white ctermfg=darkgray hi PmenuSel ctermbg=blue ctermfg=white hi PmenuSbar ctermbg=0 ctermfg=9 "------------------------------------------------------------------------------- " 編集関連 Edit "------------------------------------------------------------------------------- " 新規作成時にtemplateを適用 "autocmd BufNewFile *.c 0r ~/.vim/templates/skel.c|1;/{ "autocmd BufNewFile *.html 0r ~/.vim/templates/skel.html|1;//;normal $hhhhhhh "autocmd BufNewFile *.php 0r ~/.vim/templates/skel.php "autocmd BufNewFile *.py 0r ~/.vim/templates/skel.py|1;?: "autocmd BufNewFile *.sh 0r ~/.vim/templates/skel.sh|normal G " insertモードを抜けるとIMEオフ set noimdisable set iminsert=0 imsearch=0 set noimcmdline inoremap <silent> <ESC> <ESC>:set iminsert=0<CR> " jjでインサートモードから抜ける inoremap jj <ESC> " yeでそのカーソル位置にある単語をレジスタに追加 nmap ye ;let @"=expand("<cword>")<CR> " Visualモードでのpで選択範囲をレジスタの内容に置き換える vnoremap p <Esc>;let current_reg = @"<CR>gvdi<C-R>=current_reg<CR><Esc> " Tabキーを空白に変換 set expandtab autocmd FileType make set noexpandtab autocmd FileType conf set noexpandtab " コンマの後に自動的にスペースを挿入 "inoremap , ,<Space> " XMLの閉タグを自動挿入 augroup MyXML autocmd! autocmd Filetype xml inoremap <buffer> </ </<C-x><C-o> augroup END " Insert mode中で単語単位/行単位の削除をアンドゥ可能にする inoremap <C-u> <C-g>u<C-u> inoremap <C-w> <C-g>u<C-w> " :Ptでインデントモード切替 command! Pt :set paste! " y9で行末までヤンク nmap y9 y$ " y0で行頭までヤンク nmap y0 y^ " " 括弧を自動補完 "inoremap { {}<LEFT> "inoremap [ []<LEFT> "inoremap ( ()<LEFT> "inoremap " ""<LEFT> "inoremap ' ''<LEFT> "vnoremap { "zdi^V{<C-R>z}<ESC> "vnoremap [ "zdi^V[<C-R>z]<ESC> "vnoremap ( "zdi^V(<C-R>z)<ESC> "vnoremap " "zdi^V"<C-R>z^V"<ESC> "vnoremap ' "zdi'<C-R>z'<ESC> function! s:StripEndLineWhitespace() " Don't strip on these filetypes if &filetype =~ 'ruby\|javascript\|perl\|python' return endif %s/\s\+$//ge endfunction function! s:ExpandTab() " Don't expand ta on these filetypes if &filetype =~ 'make' return endif %s/\t/ /ge endfunction " 保存時に行末の空白を除去する "autocmd BufWritePre * call s:StripEndLineWhitespace() " 保存時にtabをスペースに変換する "autocmd BufWritePre * call s:ExpandTab() " 日時の自動入力 inoremap <expr> ,df strftime('%Y/%m/%d %H:%M:%S') inoremap <expr> ,dd strftime('%Y/%m/%d') inoremap <expr> ,dt strftime('%H:%M:%S') "------------------------------------------------------------------------------- " その他 Misc "------------------------------------------------------------------------------- " ;でコマンド入力( ;と:を入れ替) noremap ; : " pluginとかでnmap :call hoge..とかやってるやつがあるので、 " :でもexコマンドに入れるようにしておく " noremap : ; "------------------------------------------------------------------------------- " プラグインごとの設定 Plugins "------------------------------------------------------------------------------- "------------------------------------ " YankRing.vim "------------------------------------ " Yankの履歴参照 nmap ,y ;YRShow<CR> "------------------------------------ " MiniBufExplorer "------------------------------------ "set minibfexp let g:miniBufExplMapWindowNavVim=1 "hjklで移動 let g:miniBufExplSplitBelow=0 " Put new window above let g:miniBufExplMapWindowNavArrows=1 let g:miniBufExplMapCTabSwitchBufs=1 let g:miniBufExplModSelTarget=1 let g:miniBufExplSplitToEdge=1 let g:miniBufExplMaxSize = 10 ":TmでMiniBufExplorerの表示トグル command! Mt :TMiniBufExplorer "------------------------------------ " Align "------------------------------------ " Alignを日本語環境で使用するための設定 let g:Align_xstrlen = 3 "------------------------------------ " VTreeExplorer "------------------------------------ " 縦に表示する let g:treeExplVertical=1 "------------------------------------ " NERD_commenter.vim "------------------------------------ " コメントの間にスペースを空ける let NERDSpaceDelims = 1 "<Leader>xでコメントをトグル(NERD_commenter.vim) map <Leader>x, c<space> ""未対応ファイルタイプのエラーメッセージを表示しない let NERDShutUp=1 " ------------------------------------ " grep.vim "------------------------------------ " 検索外のディレクトリ、ファイルパターン let Grep_Skip_Dirs = '.svn .git .hg' let Grep_Skip_Files = '*.bak *~' - " "------------------------------------ " " smartchr.vim " "------------------------------------ " " " 演算子の間に空白を入れる " inoremap <buffer><expr> + smartchr#one_of(' + ', ' ++ ', '+') " inoremap <buffer><expr> += smartchr#one_of(' += ') " " inoremap <buffer><expr> - smartchr#one_of(' - ', ' -- ', '-') " inoremap <buffer><expr> -= smartchr#one_of(' -= ') " " inoremap <buffer><expr> / smartchr#one_of(' / ', ' // ', '/') " inoremap <buffer><expr> /= smartchr#one_of(' /= ') " inoremap <buffer><expr> * smartchr#one_of(' * ', ' ** ', '*') " inoremap <buffer><expr> *= smartchr#one_of(' *= ') " inoremap <buffer><expr> & smartchr#one_of(' & ', ' && ', '&') " inoremap <buffer><expr> % smartchr#one_of(' % ', '%') " inoremap <buffer><expr> => smartchr#one_of(' => ') " inoremap <buffer><expr> <- smartchr#one_of(' <- ') " inoremap <buffer><expr> <Bar> smartchr#one_of(' <Bar> ', ' <Bar><Bar> ', '<Bar>') " inoremap <buffer><expr> , smartchr#one_of(', ', ',') " " 3項演算子の場合は、後ろのみ空白を入れる " inoremap <buffer><expr> ? smartchr#one_of('? ', '?') " " inoremap <buffer><expr> : smartchr#one_of(': ', '::', ':') " " =の場合、単純な代入や比較演算子として入力する場合は前後にスペースをいれる。 " " 複合演算代入としての入力の場合は、直前のスペースを削除して=を入力 " inoremap <buffer><expr> = search('¥(&¥<bar><bar>¥<bar>+¥<bar>-¥<bar>/¥<bar>>¥<bar><¥) ¥%#', 'bcn')? '<bs>= ' : search('¥(*¥<bar>!¥)¥%#', 'bcn') ? '= ' : smartchr#one_of(' = ', ' == ', '=') " " 下記の文字は連続して現れることがまれなので、二回続けて入力したら改行する " inoremap <buffer><expr> } smartchr#one_of('}', '}<cr>') " inoremap <buffer><expr> ; smartchr#one_of(';', ';<cr>') " "()は空白入れる " inoremap <buffer><expr> ( smartchr#one_of('( ') " inoremap <buffer><expr> ) smartchr#one_of(' )') " " if文直後の(は自動で間に空白を入れる " inoremap <buffer><expr> ( search('¥<¥if¥%#', 'bcn')? ' (': '(' "------------------------------------ " Fugitive.vim "------------------------------------ nnoremap <Space>gd :<C-u>Gdiff<Enter> nnoremap <Space>gs :<C-u>Gstatus<Enter> nnoremap <Space>gl :<C-u>Glog<Enter> nnoremap <Space>ga :<C-u>Gwrite<Enter> nnoremap <Space>gc :<C-u>Gcommit<Enter> nnoremap <Space>gC :<C-u>Git commit --amend<Enter> nnoremap <Space>gb :<C-u>Gblame<Enter> "------------------------------------ " VTreeExplorer "------------------------------------ let g:treeExplVertical=1 "<Leader>t<Space>でディレクトリツリー表示 noremap <Leader>t<Space> :VSTreeExplore<CR> "分割したウィンドウのサイズ let g:treeExplWinSize=30 "------------------------------------ " DumbBuf.vim "------------------------------------ "<Leader>b<Space>でBufferList let dumbbuf_hotkey = '<Leader>b<Space>' let dumbbuf_mappings = { \ 'n': { \'<Esc>': { 'opt': '<silent>', 'mapto': ':<C-u>close<CR>' } \} \} let dumbbuf_single_key = 1 let dumbbuf_updatetime = 1 " &updatetimeの最小値 let dumbbuf_wrap_cursor = 0 let dumbbuf_remove_marked_when_close = 1 "------------------------------------ " open-browser.vim "------------------------------------ " カーソル下のURLをブラウザで開く nmap fu <Plug>(openbrowser-open) vmap fu <Plug>(openbrowser-open) " カーソル下のキーワードをググる nnoremap fs :<C-u>OpenBrowserSearch<Space><C-r><C-w><Enter> "------------------------------------ " operator-camelize.vim "------------------------------------ " camel-caseへの変換 map <Leader>u <Plug>(operator-camelize) map <Leader>U <Plug>(operator-decamelize) "------------------------------------ " operator-replace.vim "------------------------------------ " RwなどでYankしてるもので置き換える map R <Plug>(operator-replace) "------------------------------------ " sumartword.vim "------------------------------------ noremap ,w w noremap ,b b noremap ,e e noremap ,ge ge map W <Plug>(smartword-w) map B <Plug>(smartword-b) map E <Plug>(smartword-e) map ge <Plug>(smartword-ge) "------------------------------------ " camelcasemotion.vim "------------------------------------ " <Shift-wbe>でCameCaseやsnake_case単位での単語移動 map <silent> w <Plug>CamelCaseMotion_w map <silent> b <Plug>CamelCaseMotion_b map <silent> e <Plug>CamelCaseMotion_e " text-objectで使用できるように omap <silent> iw <Plug>CamelCaseMotion_iw xmap <silent> iw <Plug>CamelCaseMotion_iw omap <silent> ib <Plug>CamelCaseMotion_ib xmap <silent> ib <Plug>CamelCaseMotion_ib omap <silent> ie <Plug>CamelCaseMotion_ie xmap <silent> ie <Plug>CamelCaseMotion_ie "------------------------------------ " vimshell "------------------------------------ let g:vimshell_user_prompt = 'fnamemodify(getcwd(), ":~")' let g:vimshell_right_prompt = 'vimshell#vcs#info("(%s)-[%b]", "(%s)-[%b|%a]")' let g:vimshell_enable_smart_case = 1 let g:vimshell_temporary_directory = expand('~/.vim/.vimshell') if has('win32') || has('win64') " Display user name on Windows. let g:vimshell_prompt = $USERNAME."% " else " Display user name on Linux. let g:vimshell_prompt = $USER."% " " call vimshell#set_execute_file('bmp,jpg,png,gif', 'gexe eog') " call vimshell#set_execute_file('mp3,m4a,ogg', 'gexe amarok') " let g:vimshell_execute_file_list['zip'] = 'zipinfo' " call vimshell#set_execute_file('tgz,gz', 'gzcat') " call vimshell#set_execute_file('tbz,bz2', 'bzcat') endif function! g:my_chpwd(args, context) call vimshell#execute('echo "chpwd"') endfunction function! g:my_emptycmd(cmdline, context) call vimshell#execute('echo "emptycmd"') return a:cmdline endfunction function! g:my_preprompt(args, context) call vimshell#execute('echo "preprompt"') endfunction function! g:my_preexec(cmdline, context) call vimshell#execute('echo "preexec"') if a:cmdline =~# '^\s*diff\>' call vimshell#set_syntax('diff') endif return a:cmdline endfunction autocmd FileType vimshell \ call vimshell#hook#set('chpwd', ['g:my_chpwd']) \| call vimshell#hook#set('emptycmd', ['g:my_emptycmd']) \| call vimshell#hook#set('preprompt', ['g:my_preprompt']) \| call vimshell#hook#set('preexec', ['g:my_preexec']) command! Vs :VimShell "------------------------------------ " neocomplecache.vim "------------------------------------ " AutoComplPopを無効にする let g:acp_enableAtStartup = 0 " NeoComplCacheを有効にする let g:neocomplcache_enable_at_startup = 1 " smarrt case有効化。 大文字が入力されるまで大文字小文字の区別を無視する let g:neocomplcache_enable_smart_case = 1 " camle caseを有効化。大文字を区切りとしたワイルドカードのように振る舞う let g:neocomplcache_enable_camel_case_completion = 1 " _(アンダーバー)区切りの補完を有効化 let g:neocomplcache_enable_underbar_completion = 1 " シンタックスをキャッシュするときの最小文字長を3に let g:neocomplcache_min_syntax_length = 3 " neocomplcacheを自動的にロックするバッファ名のパターン let g:neocomplcache_lock_buffer_name_pattern = '\*ku\*' " -入力による候補番号の表示 "let g:neocomplcache_enable_quick_match = 1 " 補完候補の一番先頭を選択状態にする(AutoComplPopと似た動作) let g:neocomplcache_enable_auto_select = 1 " キャッシュディレクトリを指定 let g:neocomplcache_temporary_dir = expand('~/.vim/.neocon') " ctags if has('mac') let g:neocomplcache_ctags_program = '/usr/local/bin/ctags' endif " Define dictionary. let g:neocomplcache_dictionary_filetype_lists = { \ 'default' : '', \ 'vimshell' : $HOME.'/.vimshell_hist', \ 'java' : $HOME.'/.vim/dict/java.dict', \ 'c' : $HOME.'/.vim/dict/c.dict', \ 'cpp' : $HOME.'/.vim/dict/cpp.dict', \ 'javascript' : $HOME.'/.vim/dict/javascript.dict', \ 'perl' : $HOME.'/.vim/dict/perl.dict', \ 'php' : $HOME.'/.vim/dict/php.dict', \ 'scheme' : $HOME.'/.vim/dict/scheme.dict', \ 'vm' : $HOME.'/.vim/dict/vim.dict' \ } " Define keyword. " if !exists('g:neocomplcache_keyword_patterns') " let g:neocomplcache_keyword_patterns = {} " endif " let g:neocomplcache_keyword_patterns['default'] = '\h\w*' " ユーザー定義スニペット保存ディレクトリ let g:neocomplcache_snippets_dir = $HOME.'/.vim/snippets' " スニペット imap <C-k> <Plug>(neocomplcache_snippets_expand) smap <C-k> <Plug>(neocomplcache_snippets_expand) " 補完を選択しpopupを閉じる inoremap <expr><C-y> neocomplcache#close_popup() " 補完をキャンセルしpopupを閉じる inoremap <expr><C-e> neocomplcache#cancel_popup() " TABで補完できるようにする inoremap <expr><TAB> pumvisible() ? "\<C-n>" : "\<TAB>" " undo inoremap <expr><C-g> neocomplcache#undo_completion() " 補完候補の共通部分までを補完する inoremap <expr><C-l> neocomplcache#complete_common_string() " SuperTab like snippets behavior. imap <expr><TAB> neocomplcache#sources#snippets_complete#expandable() ? "\<Plug>(neocomplcache_snippets_expand)" : pumvisible() ? "\<C-n>" : "\<TAB>" " C-kを押すと行末まで削除 inoremap <C-k> <C-o>D " C-nでneocomplcache補完 inoremap <expr><C-n> pumvisible() ? "\<C-n>" : "\<C-x>\<C-u>\<C-p>" " C-pでkeyword補完 inoremap <expr><C-p> pumvisible() ? "\<C-p>" : "\<C-p>\<C-n>" " 補完候補が出ていたら確定、なければ改行 inoremap <expr><CR> pumvisible() ? neocomplcache#close_popup() : "<CR>" " <TAB>: completion. inoremap <expr><TAB> pumvisible() ? "\<C-n>" : "\<TAB>" " <C-h>, <BS>: close popup and delete backword char. inoremap <expr><C-h> neocomplcache#smart_close_popup()."\<C-h>" inoremap <expr><BS> neocomplcache#smart_close_popup()."\<C-h>" inoremap <expr><C-x><C-o> &filetype == 'vim' ? "\<C-x><C-v><C-p>" : neocomplcache#manual_omni_complete() " FileType毎のOmni補完を設定 autocmd FileType python set omnifunc=pythoncomplete#Complete autocmd FileType javascript set omnifunc=javascriptcomplete#CompleteJS autocmd FileType html set omnifunc=htmlcomplete#CompleteTags autocmd FileType css set omnifunc=csscomplete#CompleteCSS autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags autocmd FileType php set omnifunc=phpcomplete#CompletePHP autocmd FileType c set omnifunc=ccomplete#Complete autocmd FileType ruby set omnifunc=rubycomplete#Complete " Enable heavy omni completion. if !exists('g:neocomplcache_omni_patterns') let g:neocomplcache_omni_patterns = {} endif let g:neocomplcache_omni_patterns.ruby = '[^. *\t]\.\w*\|\h\w*::' let g:neocomplcache_omni_patterns.php = '[^. \t]->\h\w*\|\h\w*::' "------------------------------------ " unite.vim "------------------------------------ " The prefix key. nnoremap [unite] <Nop> nmap f [unite] nnoremap [unite]u :<C-u>Unite<Space> nnoremap <silent> [unite]a :<C-u>UniteWithCurrentDir -buffer-name=files buffer file_mru bookmark file<CR> nnoremap <silent> [unite]f :<C-u>Unite -buffer-name=files file<CR> nnoremap <silent> [unite]b :<C-u>Unite buffer<CR> nnoremap <silent> [unite]m :<C-u>Unite file_mru<CR> " nnoremap <silent> [unite]b :<C-u>UniteWithBufferDir -buffer-name=files buffer file_mru bookmark file<CR> autocmd FileType unite call s:unite_my_settings() function! s:unite_my_settings()"{{{ " Overwrite settings. imap <buffer> jj <Plug>(unite_insert_leave) nnoremap <silent><buffer> <C-k> :<C-u>call unite#mappings#do_action('preview')<CR> imap <buffer> <C-w> <Plug>(unite_delete_backward_path) " Start insert. let g:unite_enable_start_insert = 1 endfunction"}}} autocmd FileType unite nnoremap <silent> <buffer> <ESC><ESC> :<C-q>q<CR> let g:unite_data_directory = expand('~/.vim/.unite') let g:unite_source_file_mru_limit = 200 "------------------------------------ " quickrun.vim "------------------------------------ let g:quickrun_config = {} "------------------------------------ " Pydiction "------------------------------------ let g:pydiction_location = '~/.vim/bundle/pydiction/complete-dict' "------------------------------------ " TwitVim "------------------------------------ let twitvim_count = 40 let twitvim_token_file = expand('~/.vim/.twitvim.token') nnoremap ,tp :<C-u>PosttoTwitter<CR> nnoremap ,tf :<C-u>FriendsTwitter<CR><C-w>j nnoremap ,tu :<C-u>UserTwitter<CR><C-w>j nnoremap ,tr :<C-u>RepliesTwitter<CR><C-w>j nnoremap ,tn :<C-u>NextTwitter<CR> autocmd FileType twitvim call s:twitvim_my_settings() function! s:twitvim_my_settings() set nowrap endfunction "------------------------------------ " jcommenter.vim "------------------------------------ autocmd FileType java map <C-c> :call JCommentWriter()<CR> let b:jcommenter_class_author = 'Atsushi OHNO' let b:jcommenter_file_author = 'Atsushi OHNO' let b:jcommenter_file_copyright = 'Atsushi OHNO' "------------------------------------ " vim-ref "------------------------------------ let g:ref_cache_dir = expand('~/.vim/.vim_ref_cache') let g:ref_use_vimproc = 1 let g:ref_alc_use_cache = 1 let g:ref_alc_encoding = 'sjis' nnoremap <silent> <Space>e :<C-u>call ref#jump('normal', 'alc')<CR> vnoremap <silent> <Space>e :<C-u>call ref#jump('visual', 'alc')<CR> autocmd FileType sh,c nnoremap <silent> <Space>d :<C-u>call ref#jump('normal', 'man')<CR> autocmd FileType sh,c vnoremap <silent> <Space>d :<C-u>call ref#jump('visual', 'man')<CR> autocmd FileType perl nnoremap <silent> <Space>d :<C-U>call ref#jump('normal', 'perldoc')<CR> autocmd FileType perl vnoremap <silent> <Space>d :<C-U>call ref#jump('visual', 'perldoc')<CR> autocmd FileType ruby nnoremap <silent> <Space>d :<C-U>call ref#jump('normal', 'refe')<CR> autocmd FileType ruby vnoremap <silent> <Space>d :<C-U>call ref#jump('visual', 'refe')<CR> autocmd FileType python nnoremap <silent> <Space>d :<C-U>call ref#jump('normal', 'pydoc')<CR> autocmd FileType python vnoremap <silent> <Space>d :<C-U>call ref#jump('visual', 'pydoc')<CR> autocmd FileType php nnoremap <silent> <Space>d :<C-U>call ref#jump('normal', 'phpmanual')<CR> autocmd FileType php vnoremap <silent> <Space>d :<C-U>call ref#jump('visual', 'phpmanual')<CR> "------------------------------------ " vim-latex "------------------------------------ set shellslash let g:tex_flavor = 'latex' let g:Tex_DefaultTargetFormat = 'pdf' if has('win32') || has('win64') let g:Tex_BibtexFlavor = 'jbibtex' let g:Tex_ViewRule_pdf = 'C:\Program Files (x86)\Adobe\Reader 10.0\Reader\AcroRd32.exe' let g:Tex_CompileRule_pdf = 'pdflatex $*.tex' elseif has('mac') let g:Tex_BibtexFlavor = 'jbibtex' let g:Tex_ViewRule_pdf = 'open -a /Applications/Preview.app' let g:Tex_CompileRule_pdf = 'pdflatex $*.tex' else let g:Tex_BibtexFlavor = 'jbibtex' let g:Tex_ViewRule_pdf = '' let g:Tex_CompileRule_pdf = 'pdflatex $*.tex' endif "------------------------------------ " taglist.vim "------------------------------------ let Tlist_Auto_Highlight_Tag = 1 let Tlist_Auto_Update = 1 if has('mac') let Tlist_Ctags_Cmd = '/usr/local/bin/ctags' endif "------------------------------------ " Arduino-syntax-file "------------------------------------ autocmd! BufNewFile,BufRead *.pde setlocal ft=arduino "------------------------------------ " Smart blockwise insertion " http://labs.timedia.co.jp/2012/10/vim-more-useful-blockwise-insertion.html "------------------------------------ vnoremap <expr> I <SID>force_blockwise_visual('I') vnoremap <expr> A <SID>force_blockwise_visual('A') function! s:force_blockwise_visual(next_key) if mode() ==# 'v' return "\<C-v>" . a:next_key elseif mode() ==# 'V' return "\<C-v>0o$" . a:next_key else " mode() ==# "\<C-v>" return a:next_key endif endfunction