All pastes #756705 Raw Edit

.vimrc

public text v1 · immutable
#756705 ·published 2007-10-31 18:09 UTC
rendered paste body
"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=<C-Z>

"コマンドラインの高さ
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 <C-A> <Home>
cnoremap <C-B> <Left>
cnoremap <C-D> <Del>
cnoremap <C-E> <End>
cnoremap <C-F> <Right>
cnoremap <C-N> <Down>
cnoremap <C-P> <Up>
cnoremap <Esc><C-B> <S-Left>
cnoremap <Esc><C-F> <S-Right>

"挿入モードでCtrl+kを押すとクリップボードの内容を貼り付けられるようにする
imap <C-K> <Esc>"*pa

"バッファに一括コマンド適用
"http://advweb.seesaa.net/article/13053855.html
nmap <C-C><C-B> :bufdo

"ZZは強制的に書き込む
map ZZ :wq!<CR>

"C-CでInsertモードを抜ける
imap <C-C> <Esc>

"C-Nで新しいバッファを開く
nmap <C-C><C-N> :new<CR>

"C-P,C-Nでバッファ移動,C-Dでバッファ消去
nmap <C-P> :bp<CR>
nmap <C-N> :bn<CR>
nmap <C-D> :bd<CR>

"Tab操作
if has('unix')
        nmap <ESC><C-t> :tabnew<CR>
        nmap <ESC><C-e> :tabnew ./<CR>
        nmap <ESC><C-n> :tabn<CR>
        nmap <ESC><C-p> :tabp<CR>
        nmap <ESC><C-o> :tabo<CR>
        nmap <ESC><C-d> :tabd
elseif has('win32')
        nmap <M-t> :tabnew<CR>
        nmap <M-e> :tabnew ./<CR>
        nmap <M-n> :tabn<CR>
        nmap <M-p> :tabp<CR>
        nmap <M-o> :tabo<CR>
        nmap <M-d> :tabd
endif

"C-L,C-Lでバッファリスト
nmap <C-L><C-L> :ls<CR>
"C-L,C-Rでレジスタリスト
nmap <C-L><C-R> :dis<CR>
"C-L,C-Kでキーマップリスト
nmap <C-L><C-K> :map<CR>
"C-L,C-Mでマークリスト
nmap <C-L><C-M> :marks<CR>
"C-L,C-Jでジャンプリスト
nmap <C-L><C-J> :jumps<CR>
"C-L,C-Fで最近開いたファイルリスト
nmap <C-L><C-F> :MRU<CR>
"C-L,C-Hでコマンドヒストリ
nmap <C-L><C-H> :his<CR>
"C-L,C-Uでアンドゥヒストリ
nmap <C-L><C-U> :undolist<CR>

"C-C,C-Rでカーソル語の置き換え
nmap <C-C><C-R> yw:%s:<C-R>0::g<LEFT><LEFT>
"C-C,rでYankした文字列との置き換え
nmap <C-C>r :%s:<C-R>0::g<LEFT><LEFT>
"C-C,Rで一行Yankした文字列との置き換え
nmap <C-C>R yy:%s:<C-R>0::g<LEFT><LEFT>
"C-C,C-Gでカーソル語が存在する行の削除
nmap <C-C>g yw:%g:<C-R>0:d
"C-C,C-Dでカーソル語が存在する行以外の削除
nmap <C-C>G yw:%v:<C-R>0:d
",celで空白行の削除
nmap ,cel :%s:^$\n;:<CR>
",cclでコメント行の削除
nmap ,ccl :%s:^\("\\|#\\\|\*\).*$\n<CR>

"<ESC>uでハイライトをスイッチトグルする
function Highlight_switch()
        if &hls == '1'
                set nohlsearch
        else
                set hlsearch
        endif
endfunction
nmap <ESC>u :call Highlight_switch()<CR>

"C-W,sで横分割
nmap <C-W>s :sp<CR>
"C-W,vで縦分割
nmap <C-W>v :vsp<CR>

"C-W,oでファイルを指定して横分割、オープン
nmap <C-W>o :sp
"C-W,Oでファイルを指定して縦分割、オープン
nmap <C-W>O :vp

"C-W,eでファイルブラウザを横分割起動
nmap <C-W>e :vsp<CR>:wincmd w<CR>:e! ./<CR>
"C-W,Eでファイルブラウザを縦分割起動
nmap <C-W>E :sp<CR>:wincmd w<CR>:e! ./<CR>

"C-W,C-Aで現在のウインドウのみの表示
nmap <C-W><C-A> :all<CR>

"C-W,好みの方向キーで新しくバッファを開く
nmap <C-W>nh :vne<cr>
nmap <C-W>nj :bel new<cr>
nmap <C-W>nk :new<cr>
nmap <C-W>nl :rightb vnew<cr>

" コマンドモード時にカーソル移動するのに便利ー
cmap <C-a> <Home>
cmap <C-e> <End>
cmap <C-f> <Right>
cmap <C-b> <Left>

"挿入モードで"\date",'\time'で日付、時刻挿入"
inoremap <Leader>date <C-R>=strftime('%Y/%m/%d (%a)')<CR>
inoremap <Leader>time <C-R>=strftime('%H:%M')<CR>

"TABでOmni補完をできるようにする
"http://jigen.aruko.net/archives/437/
function InsertTabWrapper()
        if pumvisible()
                return "\<c-n>"
        endif
        let col = col('.') - 1
        if !col || getline('.')[col - 1] !~ '\k\|<\|/'
                return "\<tab>"
        elseif exists('&omnifunc') && &omnifunc == ''
                return "\<c-n>"
        else
                return "\<c-x>\<c-o>"
        endif
endfunction
inoremap <tab> <c-r>=InsertTabWrapper()<cr>

"<C-C><C-D>で現在のバッファと元ファイルを比較する
nmap <C-C><C-D> :DiffOrig<CR>

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:///<LEFT>
menu User.Open.SCP.VSprit :vsp<CR>:wincmd w<CR>:e! scp:///<LEFT>
menu User.Open.SCP.Sprit :sp<CR>:wincmd w<CR>:e! scp:///<LEFT>

"分割してファイルブラウザを起動
menu User.Open.Explolr.NonSprit :vsp<CR>:wincmd w<CR>:e! ./<CR>
menu User.Open.Explolr.VSprit :vsp<CR>:wincmd w<CR>:e! ./<CR>
menu User.Open.Explolr.Sprit :sp<CR>:wincmd w<CR>:e! ./<CR>

"各種VIMの記録情報を表示する
menu User.Buffur.RegisterList :dis<CR>
menu User.Buffur.BuffurList :ls<CR>
menu User.Buffur.HistoryList :his<CR>
menu User.Buffur.MarkList :marks<CR>
menu User.Buffur.JumpList :jumps<CR>
menu User.Buffur.RecentList :MRU<CR>
"エンコードを指定して再読み込み
menu User.Encode.reload.SJIS :e ++enc=cp932<CR>
menu User.Encode.reload.EUC :e ++enc=euc-jp<CR>
menu User.Encode.reload.ISO :e ++enc=iso-2022-jp<CR>
menu User.Encode.reload.UTF :e ++enc=utf-8<CR>

"保存エンコードを指定
menu User.Encode.convert.SJIS :set fenc=cp932<CR>
menu User.Encode.convert.EUC :set fenc=euc-jp<CR>
menu User.Encode.convert.ISO :set fenc=iso-2022-jp<CR>
menu User.Encode.convert.UTF :set fenc=utf-8<CR>

"フォーマットを指定して再読み込み
menu User.Format.Unix :e ++ff=unix<CR>
menu User.Format.Dos :e ++ff=dos<CR>
menu User.Format.Mac :e ++ff=mac<CR>

"行番号をファイルに挿入
menu User.Global.No :%!awk '{print NR, $0}'<CR>
"TABをSPACEに変換する
menu User.Global.Space :set expandtab<CR>:retab<CR>
"空白行を削除する
menu User.Global.Delete :g/^$/d<CR>

"カーソル上の単語を全体から検索し、別ウインドウで表示
menu User.Cursor.Serch.Show [I
menu User.Cursor.Serch.Top [i
menu User.Cursor.Serch.Junp [<tab>

"カーソル上のファイルのオープン
menu User.Cursor.FileOpen gf
"コピー、ペーストモード
menu User.Cursor.Paste :call Indent()<CR>
"全体置き換えモード
menu User.Cursor.Replace :%s/
"C-C,C-Rと同様
menu User.Cursor.Delete yw:%v:<C-R>0

"completeoptの背景色をグレーにする
highlight Pmenu ctermbg=8
highlight PmenuSel ctermbg=Green
highlight PmenuSbar ctermbg=Green

"M-gでGrepする
if has('unix')
        nmap <Esc>g :vimgrep  %<LEFT><LEFT>
        nmap <Esc>f :cn<CR>
        nmap <Esc>b :cp<CR>
elseif has('win32')
        nmap <M-g> :vimgrep  %<LEFT><LEFT>
        "M-P,Nで候補移動
        nmap <M-f> :cn<CR>
        nmap <M-b> :cp<CR>
endif

"CUI時にメニューをA-Mで表示する
set wildcharm=<TAB>
if has('unix')
        nmap <ESC>l :emenu <TAB>
elseif has('win32')
        nmap <A-l> :emenu <TAB>
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 <Leader>ssh :call Scp_edit("")<LEFT><LEFT>
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 <C-C><C-V> :call Indent_switch()<CR>
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 <silent> <F9> :Tlist<CR>
        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 <F6> :VersDiff -<CR>
        nmap <F7> :VersDiff +<CR>
        nmap <F8> :VersDiff -c<CR>
        nmap <F9> :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
"
"現在検索している単語をペースト
"<C-R>/
"
"\di to start DrawIt and
"\ds to stop  DrawIt.
"
"そのままペースト
":a! <Paste>
"
"カレントバッファをBashなどで実行
"w !bash
"
"履歴を参照
":<C-F>
"
"レジスタの中身をコマンドラインへペースト
":<C-R>"
":<C-R><C-W>
"
"指定エンコードで開きなおす
":e ++enc=euc-jp
":e ++ff=unix
"
"カーソル行を中心にもってくる
"zz
"
"上下の行を現在行へコピー
"<C-E> or <C-Y>
"
":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
"
"インサートモードでインデントする
"<C-T> or <C-D>
"
"EnhCommentify.vim
"\xでコメントアウト/解除
"
"VisualMode再選択
"gv
"
"カーソル上の単語を全体からリストアップ
"[I
"
"大文字<->小文字変換
"gu<select>
"gU<select>
"
"1ライン上方スクロール
"^y
"ウィンドウの先頭から数えて[count]行目から再描画
"z
"現在行をウィンドウの最上位置にして再描画(位置変化無)
"zt
"ウィンドウの高さを{height}にして再描画
"z{height}<CR>
"現在位置を中心にしてウィンドウを再描画(カーソル最左非空白へ)
"z.
"現在位置を中心にしてウィンドウを再描画(カーソル現在位置)
"zz
"現在位置を最下にしてウィンドウを再描画(カーソル最左非空白へ)
"z-
"現在位置を最下にしてウィンドウを再描画(カーソル現在位置)
"zb
"wrap off時: [count]文字左にスクロール
"z<right>
""z<right>" と同じ
"zl
"wrap off時: [count]文字右にスクロール
"z<Left>
""z<Left>" と同じ
"zh
"スクリーン幅の半分左スクロール
"zL
"
"直前操作繰り返し
".
"
"現在行の検索
"f<word>
"現在行の検索(後方)
"F<word>
"
"現在行のワード検索
"f<word>
"現在行の検索(後方)
"F<word>
"現在行の次検索
",
"
"検索、置き換え簡単方法
"置き換えたいワードの上にカーソル移動->'*'->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