vim設定
環境
OS | Luxubuntu 12.04 (LXDE) |
vim | Vi IMproved 7.3 (2010 Aug 15, compiled May 4 2012 04:09:27) 適用済パッチ: 1-429 |
概要
vimの設定ファイル晒し&管理方法まとめ
プラグイン
vimのプラグインは「.vim/plugin/」に放り込むこと。
利用するプラグイン一覧
- taglist
- クラス、メソッド一覧を表示する。
(1) CTAGSが必要なのでインストール
$sudo apt-get ctags
(2) プラグインは下記のリンクより取得
taglist.vim - Source code browser (supports C/C++, java, perl, python, tcl, sql, php, etc) : vim online
独自環境切り替え
1つの設定ファイルに全部記述すると、設定ファイルが厖大になるので、用途毎に切り分ける。
共通設定ファイル
参考
Vimを最強のPython開発環境にする2 - Λlisue's blog
http://tekkoc.tumblr.com/post/42845501741/vim-python
vimのすごい便利なのにあまり使われていない「タブページ」機能 - Qiita
* 基本的に、参考先のコピペなので、詳細は、上記リンクを参照の事。
""" 検索関連 set ignorecase " 大文字小文字を区別しない set smartcase " 検索文字に大文字がある場合は大文字小文字を区別 set incsearch " インクリメンタルサーチ set hlsearch " 検索マッチテキストをハイライト " バックスラッシュやクエスチョンを状況に合わせ自動的にエスケープ cnoremap <expr> / getcmdtype() == '/' ? '\/' : '/' cnoremap <expr> ? getcmdtype() == '?' ? '\?' : '?' """ 編集関連 set shiftround " '<'や'>'でインデントする際に'shiftwidth'の倍数に丸める set infercase " 補完時に大文字小文字を区別しない set virtualedit=all " カーソルを文字が存在しない部分でも動けるようにする set hidden " バッファを閉じる代わりに隠す(Undo履歴を残すため) set switchbuf=useopen " 新しく開く代わりにすでに開いてあるバッファを開く set showmatch " 対応する括弧などをハイライト表示する set matchtime=3 " 対応括弧のハイライト表示を3秒にする " 対応括弧に'<'と'>'のペアを追加 set matchpairs& matchpairs+=<:> " バックスペースでなんでも消せるようにする set backspace=indent,eol,start " クリップボードをデフォルトのレジスタとして指定。後にYankRingを使うので " 'unnamedplus'が存在しているかどうかで設定を分ける必要がある if has('unnamedplus') " set clipboard& clipboard+=unnamedplus " 2013-07-03 14:30 unnamed 追加 set clipboard& clipboard+=unnamedplus,unnamed else " set clipboard& clipboard+=unnamed,autoselect 2013-06-24 10:00 autoselect 削除 set clipboard& clipboard+=unnamed endif """ 表示関連 set list " 不可視文字の可視化 set number " 行番号の表示 set wrap " 長いテキストの折り返し set textwidth=0 " 自動的に改行が入るのを無効化 "set colorcolumn=80 " その代わり80文字目にラインを入れる set tabstop=2 " タブ文字の見た目の幅 set shiftwidth=2 " 挿入されるインデントの幅 set expandtab " タブを空白にする " 前時代的スクリーンベルを無効化 set t_vb= set novisualbell " デフォルト不可視文字は美しくないのでUnicodeで綺麗に set listchars=tab: -,trail:-,extends: ,precedes: ,nbsp:%,eol: """ マクロ&キー設定 " ESCを二回押すことでハイライトを消す nmap <silent> <Esc><Esc> :nohlsearch<CR> " カーソル下の単語を * で検索 vnoremap <silent> * "vy/\V<C-r>=substitute(escape(@v, '\/'), "\n", '\\n', 'g')<CR><CR> " 検索後にジャンプした際に検索単語を画面中央に持ってくる nnoremap n nzz nnoremap N Nzz nnoremap * *zz nnoremap # #zz nnoremap g* g*zz nnoremap g# g#zz " j, k による移動を折り返されたテキストでも自然に振る舞うように変更 nnoremap j gj nnoremap k gk " vを二回で行末まで選択 vnoremap v $h " TABにて対応ペアにジャンプ nnoremap <Tab> % vnoremap <Tab> % " Shift + 矢印でウィンドウサイズを変更 nnoremap <S-Left> <C-w><<CR> nnoremap <S-Right> <C-w>><CR> nnoremap <S-Up> <C-w>-<CR> nnoremap <S-Down> <C-w>+<CR> """ タブ機能追加 " 入力モード中に素早くjjと入力した場合はESCとみなす inoremap jj <Esc> " ESCを二回押すことでハイライトを消す nmap <silent> <Esc><Esc> :nohlsearch<CR> " カーソル下の単語を * で検索 vnoremap <silent> * "vy/\V<C-r>=substitute(escape(@v, '\/'), "\n", '\\n', 'g')<CR><CR> " 検索後にジャンプした際に検索単語を画面中央に持ってくる nnoremap n nzz nnoremap N Nzz nnoremap * *zz nnoremap # #zz nnoremap g* g*zz nnoremap g# g#zz " j, k による移動を折り返されたテキストでも自然に振る舞うように変更 nnoremap j gj nnoremap k gk " vを二回で行末まで選択 vnoremap v $h " TABにて対応ペアにジャンプ nnoremap <Tab> % vnoremap <Tab> % " Ctrl + hjkl でウィンドウ間を移動 nnoremap <C-h> <C-w>h nnoremap <C-j> <C-w>j nnoremap <C-k> <C-w>k nnoremap <C-l> <C-w>l " Shift + 矢印でウィンドウサイズを変更 nnoremap <S-Left> <C-w><<CR> nnoremap <S-Right> <C-w>><CR> nnoremap <S-Up> <C-w>-<CR> nnoremap <S-Down> <C-w>+<CR> """ タブ機能追加 " Anywhere SID. function! s:SID_PREFIX() return matchstr(expand('<sfile>'), '<SNR>\d\+_\zeSID_PREFIX$') endfunction " Set tabline. function! s:my_tabline() "{{{ let s = '' for i in range(1, tabpagenr('$')) let bufnrs = tabpagebuflist(i) let bufnr = bufnrs[tabpagewinnr(i) - 1] " first window, first appears let no = i " display 0-origin tabpagenr. let mod = getbufvar(bufnr, '&modified') ? '!' : ' ' let title = fnamemodify(bufname(bufnr), ':t') let title = '[' . title . ']' let s .= '%'.i.'T' let s .= '%#' . (i == tabpagenr() ? 'TabLineSel' : 'TabLine') . '#' let s .= no . ':' . title let s .= mod let s .= '%#TabLineFill# ' endfor let s .= '%#TabLineFill#%T%=%#TabLine#' return s endfunction "}}} let &tabline = '%!'. s:SID_PREFIX() . 'my_tabline()' set showtabline=2 " 常にタブラインを表示 " The prefix key. nnoremap [Tag] <Nop> nmap t [Tag] " Tab jump for n in range(1, 9) execute 'nnoremap <silent> [Tag]'.n ':<C-u>tabnext'.n.'<CR>' endfor " t1 で1番左のタブ、t2 で1番左から2番目のタブにジャンプ map <silent> [Tag]c :tablast <bar> tabnew<CR> " tc 新しいタブを一番右に作る map <silent> [Tag]x :tabclose<CR> " tx タブを閉じる map <silent> [Tag]n :tabnext<CR> " tn 次のタブ map <silent> [Tag]p :tabprevious<CR> " tp 前のタブ """ その他 " Emacsの設定ファイル編集用 set lisp let lisp_rainbow = 1 " デザイン set background=dark
Python用
""" 共通設定読み込み let s:common_vimrc = expand('共通ファイル名') if filereadable(s:common_vimrc) execute 'source ' . s:common_vimrc endif " Python実行 nnoremap <C-t> :!python %<CR>