vimrc
再びvimrc
ちょっとだけ更新しました.
タブ機能とか,バックスペースのマップとかQuickrunとかの設定を追加してます.
" ~/.vimrc : vim config-file " "------------------------ " color関連 "------------------------ " 色をつける syntax on " 規定のカラースキーマを利用する " colorscheme desert "highlight SatausLine cterm=NONE ctermfg=white ctermbg=black "highlight LineNr ctermfg=darkyellow "highlight Nontext ctermfg=darkgrey "highlight Folded ctermfg=blue "highlight SpecialKey ctermfg=darkcyan "highlight Statement ctermfg=darkyellow "highlight Comment ctermfg=darkblue "highlight Type ctermfg=darkgreen hi Cursor ctermbg=black hi Pmenu cterm=standout ctermfg=white ctermbg=8 hi PmenuSel cterm=bold ctermfg=white ctermbg=4 hi PmenuSbar ctermbg=0 hi StatusLine term=standout cterm=underline ctermfg=2 hi StatusLineNC cterm=underline hi VertSplit cterm=NONE hi LineNr ctermfg=2 "------------------------ " display関連 "------------------------ " 背景は黒いことをvimに通知 set background=dark " 起動時のメッセージを消す set shortmess+=I " スクロール時の余白確保 set scrolloff=5 " 行番号をつける set number " display incomplete commands set showcmd " 長い行を折り返す set wrap "タイトルバーにファイル名を表示 "set title " ルーラを非表示 set noruler " ヴィジュアルベルを鳴らさない(鳴らす場合は,visualbellのみ) set visualbell t_vb= " 常にステータス行を表示 set laststatus=2 "ステータスラインに文字コードと改行文字を表示する set statusline=%<%f\ %m%r%h%w%{'['.(&fenc!=''?&fenc:&enc).']['.&ff.']'}%=%l,%c%V%8P " 現在のモードを表示する set showmode " 全角スペースを視覚化 hi ZenkakuSpace cterm=underline ctermfg=lightblue ctermbg=white match ZenkakuSpace / / " ------------------- " 編集 " ------------------- " インデントの幅 set shiftwidth=2 " 自動的にインデント set autoindent " 賢いインデント set smartindent " allow backspacing over everything in insert mode set backspace=indent,eol,start " コマンド補完機能 set wildmenu " 対応する括弧を表示 "set showmatch " 対応する括弧表示を無効化 let loaded_matchparen = 1 " テキスト挿入中の自動折り返しを日本語に対応させる set formatoptions+=mM " zsh like な補完に set wildmode=longest,list:longest " 全角文字も崩さず表示 set ambiwidth=double " 補完候補の見せ方 set completeopt=menu,preview,longest,menuone " 補完候補の検索場所の指定 " w: 他のWindow内のバッファから " b: バッファ内の現在読み込まれている他のバッファから " u: バッファリスト内の、現在読み込まれていない別のバッファから検索 " k: オプション 'dictionary' で指定されたファイルから検索 " d: カレントファイルとインクルードされるファイルから、定義された名前またはマクロを検索 set complete=.,w,b,u,k,d " 自動読み直し set autoread " ------------------- " タブ " ------------------- " 賢いタブ set smarttab " タブをスペースに置き換える set expandtab " ファイル中のTab文字を画面上の見た目で何文字幅にするか設定 set tabstop=4 " 自動で挿入されるタブの幅 set shiftwidth=4 " キーボードで<Tab>キーを押したときに挿入される空白の量 set softtabstop=0 "0ならtabstopで指定した量 " タブにshiftsidthを使用 " set smarttab " Tab の表示 "set list " タブを>----で表示 set listchars=tab:>- " タブを> で表示 " set listchars=tab:>\ " ------------------- " 文字コード関連 " ------------------- " ターミナルの文字コード set encoding=utf-8 set termencoding=utf-8 set fileencoding=utf-8 " 認識して欲しい文字コード set fileencodings=iso-2022-jp,cp932,euc-jp,utf-8 " 文字コードの自動認識 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 " ------------------- " 検索 " ------------------- " 検索文字列が小文字の場合は大文字小文字を区別なく検索する(noignorecase) set ignorecase " 検索文字列に大文字が含まれている場合は区別して検索する(nosmartcase) set smartcase " 検索文字をハイライトする set hlsearch " インクリメンタルサーチ set incsearch " 最初に戻る set nowrapscan " 検索語が画面中央に来る nmap n nzz nmap N Nzz nmap * *zz nmap # #zz nmap g* g*zz nmap g# g#zz " ------------------- " Keymapping " ------------------- " Command Mode " 始動キー let mapleader="," " Reload vimrc noremap <Leader>r :source ~/.vimrc<CR>:noh<CR> " Save nnoremap <Leader>, :<C-u>update<CR> nnoremap <Leader>q :<C-u>q<CR> nnoremap <Leader>Q :<C-u>q!<CR> " Paste Mode nnoremap <Leader>p :<C-u>set invpaste<CR> " make noremap <Leader>m :<C-u>make!<CR><CR>:<C-u>make! clean<CR><CR> noremap <Space>m :<C-u>make!<CR> noremap <Space>M :<C-u>make! clean<CR><CR> " Backspace noremap ^? ^H noremap! ^? ^H noremap <BS> ^H noremap! <BS> ^H " Reset Highlight nnoremap <Esc><Esc> :noh<CR> " Jump noremap gh ^ noremap gl $ " Split resize nnoremap + <C-W>k<C-W>+<C-W>p nnoremap - <C-W>k<C-W>-<C-W>p " Vsplit resize nnoremap ) <C-W>h<C-W>><C-W>p nnoremap ( <C-W>h<C-W><LT><C-W>p " tab pages nnoremap tt :<C-u>tabnew<CR> nnoremap tn :<C-u>tabnext<CR> nnoremap tp :<C-u>tabprevious<CR> nnoremap tc :<C-u>tabclose<CR> nnoremap tf :<C-u>tabfirst<CR> nnoremap tl :<C-u>tablast<CR> " FuzzyFinder nnoremap <silent> fb :<C-u>FufBuffer<CR> nnoremap <silent> fF :<C-u>FufFile<CR> nnoremap <silent> ff :<C-u>FufFile <C-r>=expand('%:~:.')[:-1-len(expand('%:~:.:t'))]<CR><CR> nnoremap <silent> tb :<C-u>tabnew<CR>:tabmove<CR>:FufBuffer<CR> nnoremap <silent> tF :<C-u>tabnew<CR>:tabmove<CR>:FufFile<CR> nnoremap <silent> tf :<C-u>tabnew<CR>:tabmove<CR>:FufFile <C-r>=expand('#:~:.')[:-1-len(expand('#:~:.:t'))]<CR><CR> " quickrun nnoremap <silent> <Leader>x :<C-u>QuickRun<CR> "" GNU global " Tips: ジャンプ前に戻るにはCtrl-o, 進むにはCtrl-iを使うとよい " input Gtags nnoremap <C-g> :<C-u>Gtags " 検索結果を前方,後方ジャンプする nnoremap <C-n> :<C-u>cn<CR> nnoremap <C-p> :<C-u>cp<CR> " カーソル位置の単語を検索 nnoremap <C-j> :<C-u>GtagsCursor<CR> " 現在のファイル内の定義を一覧する nnoremap <C-l> :<C-u>Gsettags -f %<CR> " Insert Mode " filetypeに応じた補完を行う inoremap <C-b> <C-x><C-o> " ------------------- " その他 " ------------------- " バックアップするorしない set backup " バックアップファイルの場所 set backupdir=~/log/vim " スワップファイルを作成するディレクトリ " set dir=~/tmp " 覚えておく履歴の数 set history=50 " 編集中の内容を保ったまま別の画面に切替えられるようにする set hid " 行末・行間移動を可能にする(それらでカーソルが止まらない) set whichwrap=b,s,h,l,<,>,[,] " 水平分割で開く新しいファイルを下に開き,フォーカスを移す set splitbelow " Big http://vim-users.jp/2009/12/hack106/ " 分割表示する他のウィンドウを最小化する " 大きさを復活させるには <Ctrl+w>= を command! Big wincmd _ | wincmd | " ------------------- " plugin " ------------------- " Ruby on Railsモードへの布石 filetype on filetype indent on filetype plugin on " :R コントローラとビューの切り替え " ショートカット "" Ruby mode "au FileType ruby :set nowrap tabstop=2 tw=0 sw=2 enc=utf-8 fenc=utf-8 "au FileType html :set nowrap tabstop=2 tw=0 sw=2 enc=utf-8 fenc=utf-8 "au BufNewFile *.html :set ft=html "au BufNewFile *.css :set ft=html "au BufNewFile *.rhtml :set ft=ruby "au BufNewFile *.rb :set ft=ruby "au BufNewFile *.yml :set ft=ruby