"Configured by Kota "タイトルをバッファ名に変更する set title "ターミナル接続を高速にする set ttyfast "ターミナルで256色表示を使う set t_Co=256 " "フォールド設定(未使用) "set foldmethod=indent set foldmethod=manual "set foldopen=all "set foldclose=all "VIM互換にしない set nocompatible "複数ファイルの編集を可能にする set hidden "ルーラー,行番号を表示 set ruler set number "内容が変更されたら自動的に再読み込み set autoread "コマンド、検索パターンを50まで保存 set history=50 "インクリメンタルサーチを有効にする set incsearch "検索結果をハイライトする set hlsearch "大文字小文字を区別しない set ignorecase "大文字で検索されたら対象を大文字限定にする set smartcase "行末まで検索したら行頭に戻る set wrapscan "Unicodeで行末が変になる問題を解決 set ambiwidth=double "行間をでシームレスに移動する "set whichwrap+=h,l,<,>,[,],b,s "カーソルを常に画面の中央に表示させる "set scrolloff=999 "バックスペースキーで行頭を削除する set backspace=indent,eol,start "開いているバッファのディレクトリに移動 if v:version > 700 set autochdir endif "カッコを閉じたとき対応するカッコに一時的に移動 set nostartofline "C-X,C-Aを強制的に10進数認識させる set nrformats= "set nrformats=alpha "コマンドラインでTABで補完できるようにする set wildchar= "コマンドラインの高さ set cmdheight=1 "改行後に「Backspace」キーを押すと上行末尾の文字を1文字消す set backspace=2 "ワイルドメニューを使う set wildmenu set wildmode=longest,list,full "C-vの矩形選択で行末より後ろもカーソルを置ける set virtualedit=block "http://peace-pipe.blogspot.com/2006/05/vimrc-vim.html set shiftwidth=2 set softtabstop=2 set tabstop=2 set noexpandtab "自動インデントを有効化する set smartindent set autoindent "フォーマット揃えをコメント以外有効にする set formatoptions-=c set showmatch "行頭の余白内で Tab を打ち込むと、'shiftwidth' の数だけインデントする。 set smarttab if v:version > 700 "15までタブを開く set tabpagemax=15 "タブラインを常に表示する set showtabline=2 endif "ターミナルでマウスを使用できるようにする set mouse=a set guioptions+=a set ttymouse=xterm2 "履歴に保存する各種設定 set viminfo='100,/50,%,<1000,f50,s100,:100,c,h "OSのクリップボードを使用する set clipboard+=unnamed "ターミナル上からの張り付けを許可 set paste "ステータスラインにコマンドを表示 set showcmd "ステータスラインを常に表示 set laststatus=2 "ファイルナンバー表示 set statusline =[%n] "ホスト名表示 set statusline+=:\%{hostname()}@ "ファイル名表示 set statusline+=%<%F "変更のチェック表示 set statusline+=%m "読み込み専用かどうか表示 set statusline+=%r "ヘルプページなら[HELP]と表示 set statusline+=%h "プレビューウインドウなら[Prevew]と表示 set statusline+=%w "ファイルフォーマット表示 set statusline+=[%{&fileformat}] "文字コード表示 set statusline+=[%{has('multi_byte')&&\&fileencoding!=''?&fileencoding:&encoding}] "ファイルタイプ表示 set statusline+=%y "ここからツールバー右側 set statusline+=%= "文字バイト数/カラム番号,表示%4は4ケタ表示の意 set statusline+=[%4.4B,%3.3c] "現在行/全体行表示,表示%5は5ケタ表示の意 set statusline+=[%5.5l/%5.5L] "現在行が全体行の何%目か表示,表示%2は3ケタ表示の意 set statusline+=\%3.3p%% "TAB,EOFなどを可視化する set list set listchars=tab:>-,extends:<,trail:-,eol:< "エンコード設定 if has('unix') set fileformat=unix set fileformats=unix,dos,mac set fileencoding=utf-8 set fileencodings=iso-2022-jp,utf-8,cp932,euc-jp set termencoding= elseif has('win32') set fileformat=dos set fileformats=dos,unix,mac set fileencoding=utf-8 set fileencodings=iso-2022-jp,utf-8,cp932,euc-jp set termencoding= endif "ファイルタイプに応じて挙動,色を変える filetype plugin on filetype indent on "表示行単位で行移動する nmap j gj nmap k gk vmap j gj vmap k gk "検索後、中央にフォーカスをあわせる "nmap n nzz "nmap N Nzz "nmap * *zz "nmap # #zz "nmap g* g*zz "nmap g# g#zz " コマンドラインでのキーバインドを Emacs スタイルにする cnoremap cnoremap cnoremap cnoremap cnoremap cnoremap cnoremap cnoremap cnoremap "挿入モードでCtrl+kを押すとクリップボードの内容を貼り付けられるようにする imap "*pa "バッファに一括コマンド適用 "http://advweb.seesaa.net/article/13053855.html nmap :bufdo "ZZは強制的に書き込む map ZZ :wq! "C-CでInsertモードを抜ける imap "C-Nで新しいバッファを開く nmap :new "C-P,C-Nでバッファ移動,C-Dでバッファ消去 nmap :bp nmap :bn nmap :bd "Tab操作 if has('unix') nmap :tabnew nmap :tabnew ./ nmap :tabn nmap :tabp nmap :tabo nmap :tabd elseif has('win32') nmap :tabnew nmap :tabnew ./ nmap :tabn nmap :tabp nmap :tabo nmap :tabd endif "C-L,C-Lでバッファリスト nmap :ls "C-L,C-Rでレジスタリスト nmap :dis "C-L,C-Kでキーマップリスト nmap :map "C-L,C-Mでマークリスト nmap :marks "C-L,C-Jでジャンプリスト nmap :jumps "C-L,C-Fで最近開いたファイルリスト nmap :MRU "C-L,C-Hでコマンドヒストリ nmap :his "C-L,C-Uでアンドゥヒストリ nmap :undolist "C-C,C-Rでカーソル語の置き換え nmap yw:%s:0::g "C-C,rでYankした文字列との置き換え nmap r :%s:0::g "C-C,Rで一行Yankした文字列との置き換え nmap R yy:%s:0::g "C-C,C-Gでカーソル語が存在する行の削除 nmap g yw:%g:0:d "C-C,C-Dでカーソル語が存在する行以外の削除 nmap G yw:%v:0:d ",celで空白行の削除 nmap ,cel :%s:^$\n;: ",cclでコメント行の削除 nmap ,ccl :%s:^\("\\|#\\\|\*\).*$\n "uでハイライトをスイッチトグルする function Highlight_switch() if &hls == '1' set nohlsearch else set hlsearch endif endfunction nmap u :call Highlight_switch() "C-W,sで横分割 nmap s :sp "C-W,vで縦分割 nmap v :vsp "C-W,oでファイルを指定して横分割、オープン nmap o :sp "C-W,Oでファイルを指定して縦分割、オープン nmap O :vp "C-W,eでファイルブラウザを横分割起動 nmap e :vsp:wincmd w:e! ./ "C-W,Eでファイルブラウザを縦分割起動 nmap E :sp:wincmd w:e! ./ "C-W,C-Aで現在のウインドウのみの表示 nmap :all "C-W,好みの方向キーで新しくバッファを開く nmap nh :vne nmap nj :bel new nmap nk :new nmap nl :rightb vnew " コマンドモード時にカーソル移動するのに便利ー cmap cmap cmap cmap "挿入モードで"\date",'\time'で日付、時刻挿入" inoremap date =strftime('%Y/%m/%d (%a)') inoremap time =strftime('%H:%M') "TABでOmni補完をできるようにする "http://jigen.aruko.net/archives/437/ 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() "で現在のバッファと元ファイルを比較する nmap :DiffOrig if v:version > 700 "Makeやgrepでcwindowを自動でひらくようにする autocmd QuickfixCmdPost make,grep,grepadd,vimgrep copen autocmd QuickfixCmdPost l* lopen endif "Menu 忘れやすいコマンドのメニュー定義 "SSHを通してファイルオープン menu User.Open.SCP.NonSprit :e! scp:/// menu User.Open.SCP.VSprit :vsp:wincmd w:e! scp:/// menu User.Open.SCP.Sprit :sp:wincmd w:e! scp:/// "分割してファイルブラウザを起動 menu User.Open.Explolr.NonSprit :vsp:wincmd w:e! ./ menu User.Open.Explolr.VSprit :vsp:wincmd w:e! ./ menu User.Open.Explolr.Sprit :sp:wincmd w:e! ./ "各種VIMの記録情報を表示する menu User.Buffur.RegisterList :dis menu User.Buffur.BuffurList :ls menu User.Buffur.HistoryList :his menu User.Buffur.MarkList :marks menu User.Buffur.JumpList :jumps menu User.Buffur.RecentList :MRU "エンコードを指定して再読み込み menu User.Encode.reload.SJIS :e ++enc=cp932 menu User.Encode.reload.EUC :e ++enc=euc-jp menu User.Encode.reload.ISO :e ++enc=iso-2022-jp menu User.Encode.reload.UTF :e ++enc=utf-8 "保存エンコードを指定 menu User.Encode.convert.SJIS :set fenc=cp932 menu User.Encode.convert.EUC :set fenc=euc-jp menu User.Encode.convert.ISO :set fenc=iso-2022-jp menu User.Encode.convert.UTF :set fenc=utf-8 "フォーマットを指定して再読み込み menu User.Format.Unix :e ++ff=unix menu User.Format.Dos :e ++ff=dos menu User.Format.Mac :e ++ff=mac "行番号をファイルに挿入 menu User.Global.No :%!awk '{print NR, $0}' "TABをSPACEに変換する menu User.Global.Space :set expandtab:retab "空白行を削除する menu User.Global.Delete :g/^$/d "カーソル上の単語を全体から検索し、別ウインドウで表示 menu User.Cursor.Serch.Show [I menu User.Cursor.Serch.Top [i menu User.Cursor.Serch.Junp [ "カーソル上のファイルのオープン menu User.Cursor.FileOpen gf "コピー、ペーストモード menu User.Cursor.Paste :call Indent() "全体置き換えモード menu User.Cursor.Replace :%s/ "C-C,C-Rと同様 menu User.Cursor.Delete yw:%v:0 "completeoptの背景色をグレーにする highlight Pmenu ctermbg=8 highlight PmenuSel ctermbg=Green highlight PmenuSbar ctermbg=Green "M-gでGrepする if has('unix') nmap g :vimgrep % nmap f :cn nmap b :cp elseif has('win32') nmap :vimgrep % "M-P,Nで候補移動 nmap :cn nmap :cp endif "CUI時にメニューをA-Mで表示する set wildcharm= if has('unix') nmap l :emenu elseif has('win32') nmap :emenu endif if has('gui') "ツールバーを消す set guioptions=egLta "既に開いているGVIMがあるときはそのVIMを前面にもってくる runtime macros/editexisting.vim endif "SSH越しにファイルを編集する if has('unix') function Scp_edit(svr) vsp wincmd w let sv = "e scp://" . a:svr . "/../" exec sv endfunction nmap ssh :call Scp_edit("") endif "C-C,C-Vでターミナルからコピーできる表示形式にする(関数使用) if has('unix') function Indent_switch() if &ai == '1'" && &list =='1' set noai set nolist set nonu set paste else set ai set list set nu "set nopaste endif endfunction nmap :call Indent_switch() endif if has('unix') "CVSのコミットはSJISで行う autocmd BufRead /tmp/cvs* :set fileencoding=cp932 "Muttから開いた編集はiso-2022-jpで行う autocmd BufRead ~/.mutt/tmp/* :set fileencoding=utf-8 "w3mのフォームは改行コードDOSで編集 autocmd BufRead ~/.w3m/w3mtmp* :set fileformat=dos endif if has('unix') "HEXエディタとしてvimを使う augroup Binary au! au BufReadPre *.bin let &bin=1 au BufReadPost *.bin if &bin | silent %!xxd -g 1 au BufReadPost *.bin set ft=xxd | endif au BufWritePre *.bin if &bin | %!xxd -r au BufWritePre *.bin endif au BufWritePost *.bin if &bin | silent %!xxd -g 1 au BufWritePost *.bin set nomod | endif augroup END endif "ターミナルでも256色を用いてカラースキームを表示する if has('unix') && filereadable($HOME . '/.vim/plugin/guicolorscheme.vim') autocmd VimEnter * :GuiColorScheme pablo else colorscheme pablo endif "Taglist Pligin if has('unix') && filereadable($HOME . '/.vim/plugin/taglist.vim') nmap :Tlist set tags=tags endif " "Savevers Plugin if has('unix') && filereadable($HOME . '/.vim/plugin/savevers.vim') set backup set backupdir=~/.vim/savevers set directory=~/.vim/swap set patchmode=.clean let savevers_types = "*" let savevers_dirs = &backupdir let versdiff_no_resize=1 nmap :VersDiff - nmap :VersDiff + nmap :VersDiff -c nmap :Purge 0 elseif has('win32') && filereadable($VIM . '\runtime\plugin\savevers.vim') set backup set backupdir=$VIM\savevers set directory=$VIM\swap set patchmode=.clean let savevers_types = "*" let savevers_dirs = &backupdir endif "以下はWindowsでのみ有効-------- if has('win32') "フォント設定 set guifont=MS_Gothic:h9:cSHIFTJIS "パスのセパレータを変更(\->/) set shellslash "ウインドウポジション、サイズの設定 winpos 9 6 set lines=73 set columns=110 "スペースの入ったファイル名も扱えるようにする set isfname+=32 cd $HOME/デスクトップ "ファイル保存ダイアログの初期ディレクトリをバッファのあるディレクトリにする set browsedir=buffer "カラーの設定 colorscheme pablo endif "ここまでWindowsのみ----------- "Tipsメモ " "http://www.ac.cyberhome.ne.jp/~yakahaira/vimdoc/windows.html "分割 "C-W,s "縦分割 "C-W,v "分割ウインドウ移動 "C-W,C-W "分割ウインドウカーソル移動 "C-W,hjkl "分割ウインドウ移動 "C-W,HJKL "いま開いている分割ウインドウ以外を閉じる "C-W,o "ウインドウサイズ調整 "C-W,+-= " "カーソルを一個前の場所(ファイル)に戻す "C-O " "カーソルを一個先の場所(ファイル)に進める "C-I " "カーソル下のファイル名を開く "gf " "現在検索している単語をペースト "/ " "\di to start DrawIt and "\ds to stop DrawIt. " "そのままペースト ":a! " "カレントバッファをBashなどで実行 "w !bash " "履歴を参照 ": " "レジスタの中身をコマンドラインへペースト ":" ": " "指定エンコードで開きなおす ":e ++enc=euc-jp ":e ++ff=unix " "カーソル行を中心にもってくる "zz " "上下の行を現在行へコピー " or " ":eで開くパスの追加 "let &path += "/etc,/var/log,/var/log/httpd" " "Bookmark "http://nanasi.jp/articles/vim/bookmarks_vim.html "b "B "q " "DrawItPlugin.vim "\di "\ds " "インサートモードでインデントする " or " "EnhCommentify.vim "\xでコメントアウト/解除 " "VisualMode再選択 "gv " "カーソル上の単語を全体からリストアップ "[I " "大文字<->小文字変換 "gu " "1ライン上方スクロール "^y "ウィンドウの先頭から数えて[count]行目から再描画 "z "現在行をウィンドウの最上位置にして再描画(位置変化無) "zt "ウィンドウの高さを{height}にして再描画 "z{height} "現在位置を中心にしてウィンドウを再描画(カーソル最左非空白へ) "z. "現在位置を中心にしてウィンドウを再描画(カーソル現在位置) "zz "現在位置を最下にしてウィンドウを再描画(カーソル最左非空白へ) "z- "現在位置を最下にしてウィンドウを再描画(カーソル現在位置) "zb "wrap off時: [count]文字左にスクロール "z ""z" と同じ "zl "wrap off時: [count]文字右にスクロール "z ""z" と同じ "zh "スクリーン幅の半分左スクロール "zL " "直前操作繰り返し ". " "現在行の検索 "f "現在行の検索(後方) "F " "現在行のワード検索 "f "現在行の検索(後方) "F "現在行の次検索 ", " "検索、置き換え簡単方法 "置き換えたいワードの上にカーソル移動->'*'->cw->入力->n->.->n->.->繰り返し " "コントロールコードの入力 "C-V<> " "計算結果の入力 "Insterモード->C-R=->2*2*2->Return " "コマンドラインでバッファ番号を指定する "#バッファ番号 " "多段Undo "http://www.ac.cyberhome.ne.jp/~yakahaira/vimdoc/usr_32.html "Undoで前のツリーへ戻る "g- "Redoで次のツリーへ戻る "g+ " "10分前に戻る ":earlier 10s " "一分後に進む ":later 1m " "コマンドライン操作 "http://www.kaoriya.net/vimdoc_j/cmdline.txt "C-R.... " "名前のない登録、最後の削除やヤンクを含む。 "'"' "カレントファイル名 "'%' "代替ファイル名 "'#' "最後の検索パターン "'/' "クリップボードの内容 "'*' "最後のコマンドライン "':' "最後の小さな削除(行単位未満) "'-' "最後に挿入されたテキスト "'.' "式の登録: 式を入力するよう要求される "'=' " "ファイル名補完 "CTRL-X CTRL-F "行全補完 "CTRL-X CTRL-L "マクロ定義 (インクルードファイルの中も探す) "CTRL-X CTRL-D "カレントファイルとインクルードファイ補完 "CTRL-X CTRL-I "辞補完 "CTRL-X CTRL-K "同義語辞書 (シソーラス) "CTRL-X CTRL-T "タ補完 "CTRL-X CTRL-] "Vim のコマンドライ補完 "CTRL-X CTRL-V " "Window縦分割/横分割切替 "C-W,H "C-W,J "空白を挿入しないでjoinする "gJ " "最初の検索パターンが現れたところからもう一段検索する "http://www.kaoriya.net/vimdoc_j/pattern.txt ":/patarn1/;/patarn2 " "カーソル位置の単語をManpageで検索 "K " "カーソル位置の情報を詳細に表示 "g,C-G " "コマンドライン総合 "http://www.ac.cyberhome.ne.jp/~yakahaira/vimdoc/cmdline.html " "Fold関係 "foldenable をトグルで on off する "zi "fold を閉じる(close) "zc "fold を再帰的に閉じる(close) "zC "fold を開く(open) "zo "fold を再帰的に開く(open) "zO "foldlevel をインクリメント、 すなわちすべてのfoldを1level開く "zr "foldlevel を最大値にする、すなわちすべてのfoldを開く "zR "foldlevel をデクリメント、すんわちすべてのfoldを1level閉じる "zm "foldlevel を0にする、すなわちすべてのfoldを閉じる "zM "fold をカーソルから4行分設定する "zf4j "`a fold をカーソルからaのマーク位置まで設定する "z "設定された fold を削除 "zd "設定された fold を再帰的に削除 "zD " "その他 "http://www.kaoriya.net/testdir/command_list.txt "se cursorline "hi CursorLine term=none cterm=none ctermbg=3