vimカスタマイズ中
" ============================================================= " ぷらぎんのメモ " ============================================================= " bufexplorer.vim " http://redtower.plala.jp/2010/12/13/vim-plugin-bufexplorer.html " http://blog.cohtan.org/2008/02/vimbufexplorervim.html " バッファ管理用 " <leader>be :バッファ一覧のウィンドウを表示する。 " <leader>bs :バッファ一覧のウィンドウを画面分割(上下)して表示する。 " <leader>bv :バッファ一覧のウィンドウを画面分割(左右)して表示する。 " project.vim " http://hoshinanonikki.net/20070820.html " http://d.hatena.ne.jp/hidde/20080930/1222776171 " プロジェクト管理 " Test = /var/www/htdocs/ CD = . filter = "*.html *.php" { " Application = application { " Controllers = controllers { " index.html " welcome.php " } " Models = models { " index.html " } " Views = views { " index.html " welcome_message.php " } " } " } " taglist.vim " http://nanasi.jp/articles/vim/taglist_vim.html " メソッド宣言、変数宣言の一覧を別ウィンドウで表示する " :Tlist " hatena.vim " http://motormean.s58.xrea.com/b/vim/hatena_vim.html " はてダをvimで更新 " :HatenaEdit [[[YYYY]MM]DD] 指定した日付の日記を開きます。 " :HatenaUpdate [title] :HatenaEditで開いた日記を更新します。 " :HatenaUpdateTrivial [title] :HatenaUpdateと一緒ですが、"ちょっとした更新"になります。 " quickrun.vim " http://takus.me/computer/vim/quickrun-vim/ " \rで書いてるコード(perlとか)を実行 " pathogen.vim " http://d.hatena.ne.jp/mkataigi/20101107/1289134775 " プラグイン管理用 " eregex.vim " http://d.hatena.ne.jp/ruedap/20110202/vim_ruby_regexp_plugin_eregex " :%S/(hoge|fuga|piyo|poyo)/foo/g で文字列置換をperl風にできる " :%s # vimの正規表現による置換 " :%S # eregexの正規表現vimによる置換 " :%g # vimの(ry " :%G # eregexの(ry " / # vimの(ry " :M/ # eregex の(ry " neocomplcache.vim " http://vim-users.jp/2010/10/hack177/ " 自動保管ぷらぎん(.vim以下のディレクトリ構成が楽になる) " smartchr.vim " http://project-p.jp/halt/?p = 1068 " イコール入力で前後にスペース入れてくれる " vimshell.vim (+ vimproc.vim) " http://d.hatena.ne.jp/nauthiz/20101107/1289140518 " vimでshell使える。vimprocはvimshell使うために必要 " vim-ref.vim " http://tech.kayac.com/archive/vim-plugin-coding.html " perldocとかphpmanualからドキュメント検索してくれる " :Ref source wordで実行 " source ... perldoc, phpmanual " word ... 検索ワード " cocoa.vim " http://d.hatena.ne.jp/marutanm/20100117/p1 " XCode代わりにVimを使うための何か " コマンド 内容 " K カーソルがあるところの単語をドキュメントから検索 " Cmd+Opt+↑ .hファイルと.mファイルのトグル " Cmd+r ビルド&実行 " Cmd+b ビルド " shift+k クリーン " Cmd+0 Xcodeのプロジェクトウィンドウを開く " Cmd+2 :ListMethods(メソッド一覧) " (インサートモードで)F5 オムニ補完を表示 " zencoding.vim " http://mattn.github.com/zencoding-vim/ " HTMLのひな形生成 " Control + h " 使い方は以下見るのが早い " https://github.com/mattn/zencoding-vim/blob/master/doc/zencoding.txt " ============================================================= " キーバインド指定 " ============================================================= " {{{ " タブ操作用(Firefox風), GUIじゃないと動かないっぽい... map <C-S-tab> :tabprevious<cr> map <C-tab> :tabnext<cr> " Escの2回押しでハイライト消去 nmap <ESC><ESC> :nohlsearch<CR><ESC> " タブ操作用(Firefox風), GUIじゃないと動かないっぽい... nmap <C-S-tab> :tabprevious<cr> nmap <C-tab> :tabnext<cr> " バッファ管理用 nmap <C-l> :BufExplorer<CR> " タブ操作用(Firefox風), GUIじゃないと動かないっぽい... imap <C-S-tab> <ESC>:tabprevious<cr>i imap <C-tab> <ESC>:tabnext<cr>i " ビジュアルモードで選択した範囲を(コメントアウト|コメント削除) vmap ,# :s/^/#/<CR>:nohlsearch<CR> vmap ,c :s/^\/\/\\|^--\\|^> \\|^[#"%!;]//<CR>:nohlsearch<CR> " イコールを入力すると自動的にスペースを入力 inoremap <expr> = smartchr#one_of(' = ', ' == ', ' === ', '=') " 最後に変更されたテキストを選択する nnoremap gc `[v`] " Tabで自動保管 "inoremap <tab> <c-r>=InsertTabWrapper()<cr> " ビジュアルモードで選択したテキストを検索 vnoremap * y/<C-r>0<CR> " }}} " ============================================================= " 初期設定 " ============================================================= " {{{ syntax on filetype on filetype indent on filetype plugin on " vimのプラグイン管理用 call pathogen#runtime_append_all_bundles() " インデント方式 set shiftwidth=2 set smarttab " インクリメンタル検索 set incsearch set hlsearch " Tabによるインデント回避 set expandtab " カーソルのある行番号の表示 set ruler " カーソル行をハイライト set cursorline " タブ系の設定 set showtabline=2 " 行番号表示 set number " for windows key-map set backspace=2 " バックアップとか自分でしろ set nobackup " スワップファイル要らない set noswapfile " 対応する括弧の表示 set showmatch " ヤンクしたテキストを無名レジスタだけでなく、*レジスタにも入るようにする "set clipboard+=unnamed " ビジュアルモードで選択したテキストが、クリップボードに入るようにする "set guioptions+=a "set clipboard+=autoselect " 折り返さない set nowrap " 改行コードの自動認識 set fileformats=unix,dos,mac " 文字コード指定 set enc=utf-8 set fenc=utf-8 set fencs=iso-2022-jp,enc-jp,cp932 " ターミナルでマウスを使用できるようにする set mouse=a set ttymouse=xterm " タグ一覧生成可能に set tags=./.tags,./../.tags,./*/.tags,./../../.tags,./../../../.tags,./../../../../.tags,./../../../../../.tags " テーマ設定 colorscheme desert " 保管候補のポップアップの色設定 hi Pmenu guibg=#666666 hi PmenuSel guibg=#8cd0d3 guifg=#666666 hi PmenuSbar guibg=#333333 " タブ色設定 hi TabLine term=reverse cterm=reverse ctermfg=white ctermbg=black hi TabLineFill term=reverse cterm=reverse ctermfg=white ctermbg=black " ハイライトの色指定 hi clear CursorLine hi CursorLine gui=underline highlight CursorLine ctermbg=darkgray guibg=black " カレントウィンドウにのみ罫線を引く augroup cch autocmd! cch autocmd WinLeave * set nocursorline autocmd WinEnter,BufRead * set cursorline augroup END " はてダ投稿用 let g:hatena_user='rin1024' " HTMLのひな形生成用 let g:user_zen_expandabbr_key='<C-h>' " Objective-C対応用? let tlist_objc_settings = 'objc;P:protocols;i:interfaces;I:implementations;M:instance methods;C:implementation methods;Z:protocol methods' " }}} " ============================================================= " autocmdは自動実行されるコマンド " ============================================================= " {{{ " 辞書の設定 autocmd FileType perl :set dictionary=/usr/share/vim/vim72/syntax/perl.vim autocmd FileType ruby :set dictionary=/usr/share/vim/vim72/syntax/ruby.vim autocmd FileType php :set dictionary=/usr/share/vim/vim72/syntax/php.vim autocmd FileType java :set dictionary=/usr/share/vim/vim72/syntax/java.vim autocmd FileType html :set dictionary=/usr/share/vim/vim72/syntax/html.vim autocmd FileType javascript :set dictionary=/usr/share/vim/vim72/syntax/javascript.vim " 拡張子の関連付け autocmd BufNewFile,BufRead *.ctp set filetype=php autocmd BufNewFile,BufRead *.ep set filetype=html " 保存時に行末の空白を除去する autocmd BufWritePre * :%s/\s\+$//ge " 保存時にtabをスペースに変換する "autocmd BufWritePre * :%s/\t/ /ge " }}} " ============================================================= " ユーティリティ " ============================================================= " {{{ " 文字コードの自動認識 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 " □とか○の文字があってもカーソル位置がずれないようにする if exists('&ambiwidth') set ambiwidth=double endif " }}} " ----------------------------------- " neocomplcache(自動保管) " ----------------------------------- " {{{ " Disable AutoComplPop. let g:acp_enableAtStartup = 0 " Use neocomplcache. let g:neocomplcache_enable_at_startup = 1 " Use smartcase. let g:neocomplcache_enable_smart_case = 1 " Use camel case completion. let g:neocomplcache_enable_camel_case_completion = 1 " Use underbar completion. let g:neocomplcache_enable_underbar_completion = 1 " Set minimum syntax keyword length. let g:neocomplcache_min_syntax_length = 3 let g:neocomplcache_lock_buffer_name_pattern = '\*ku\*' " Define dictionary. let g:neocomplcache_dictionary_filetype_lists = { \ 'default' : '', \ 'vimshell' : $HOME.'/.vimshell_hist', \ 'scheme' : $HOME.'/.gosh_completions' \ } " Define keyword. if !exists('g:neocomplcache_keyword_patterns') let g:neocomplcache_keyword_patterns = {} endif let g:neocomplcache_keyword_patterns['default'] = '\h\w*' " Plugin key-mappings. imap <C-k> <Plug>(neocomplcache_snippets_expand) smap <C-k> <Plug>(neocomplcache_snippets_expand) inoremap <expr><C-g> neocomplcache#undo_completion() inoremap <expr><C-l> neocomplcache#complete_common_string() " Recommended key-mappings. " <CR>: close popup and save indent. inoremap <expr><CR> neocomplcache#smart_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-y> neocomplcache#close_popup() inoremap <expr><C-e> neocomplcache#cancel_popup() " }}} " ============================================================= " 個人的リファレンス " ============================================================= " {{{ " <C-r> " 最後にdelete、yankしたテキスト " <C-r> * クリップボードに格納されたテキスト " <C-r> / 最後に使用した検索ワード " <C-r> : 最後に入力したvimエディタコマンド " <C-r> % 今開いているファイルのファイル名 " <C-r> # 直前に開いていたファイルのファイル名 " <C-e> 1 行下にスクロール " <C-y> 1 行上にスクロール " <C-d> 半画面下にスクロール " <C-u> 半画面上にスクロール " <C-f> 1 画面下にスクロール " <C-b> 1 画面上にスクロール " <C-l> 再描画 表示が変になったときに使用 " <C-a> カーソル位置の数字を 1 増やす " <C-x> カーソル位置の数字を 1 減らす " <C-G> 編集中のファイル名と現在の位置をみる " g <C-G> カーソルの位置を行番号などで表示、<S-V> で行選択モードにした方がカーソル行がハイライトされてわかりやすい " Ctrl + v 矩形選択スタート " Shift + v 行選択スタート " $ 行末に移動 " ^ 行頭に移動 " w 次の単語に移動 " b 前の単語に移動 " f(文字) 今カーソルがある行のその(文字)に移動 " F(文字) 今カーソルがある行のその(文字)に移動(逆向き) " % 対応する括弧に移動 " * カーソル位置の単語を前方検索 " # カーソル位置の単語を後方検索 " ~ 大文字・小文字の変換 " . 直前の変更コマンドを繰り返す " m 文字 マークを付ける " ` 文字 マークまで移動する " ' 文字 マークのある行の先頭へ移動する " q 文字 マクロを記録する 記録終了は q " @ 文字 マクロを実行する " K カーソル位置の単語を man コマンドで調べる " :! コマンド 外部コマンドを実行する " :r! コマンド 外部コマンドの出力を取りこむ " :数字,数字! コマンド 指定行を標準入力としてコマンドを実行・出力を取りこむ " d/hoge 現在位置から hoge の手前まで削除できる " di" "" で囲まれたテキストを削除 " da" "" も含み、"" で囲まれたテキストを削除 " :scriptnames ロードされているモジュールの確認 " % 対応する括弧へ移動 " dw 単語単位の削除 " <C-w>w 分割画面移動? " nnoremap {lhs} {rhs} " normalモードのkey mappingを定義するコマンド. " {lhs}のキーシーケンスを{rhs}にマッピングする " {rhs}中のキーがさらにマッピングされていても再帰的な展開はしない. " nnoremapの{rhs}に<Nop>を指定すると,{lhs}を入力しても何も起こらなくなる(No Operation). " nnoremapで「<silent>」を指定すると,マッピングされたキーが実行されたときにコマンドラインへの出力を行わなくなる(ちらつき対策). " <leader>はvimエディタデフォルトでは「 \ 」になっている " }}}