Vimの最低限の操作
ファイルを開く
$ vim path/to/file
bashでTabを押すと補完が効く。
補完が効かないときは大抵タイプミスしている。
上書き保存して終了
Esc
を押してから:wq
保存しないで終了
Esc
を押してから:q!
Vimのチュートリアルで勉強
$ vimtutor
画面移動
Ctrl+F
/Ctrl+B
でForward/Backに1画面分移動できる。
少しだけ応用編
文字の検索
/searchword
で検索、n
で次へ、N
で前へ
文字の置換
:%s/from/to/g
でfromに一致する文字をtoに全部置換。
色々オプションがあるらしいけどまだ全部覚えていないのと、エスケープが必要な文字が良くわかっていない。
行の挿入系
O
でカーソル行に新しい行を挿入して編集開始、o
だとカーソル行の1つ下に挿入して編集開始。
単語を消して編集開始
ciw
会社で教えてもらった神コマンド。
追記:
ci"
は""で囲まれた中身を削除、ci'
は''で囲まれた中身を削除など、
最後の文字を変えるといろいろ応用がきく。
行を削除
dd
でカーソルのある行自体を削除。
行でカーソル位置より後ろを全部削除
D
で同じ行のカーソル位置より後ろを全部削除。
行番号
:set number
で行番号を表示する。
:set nonumber
で行番号を非表示にする。
ファイルを開く
:e path/to/file
でファイルを開く。
bashよりも優秀な補完がきく。
数行のインデントやコメントアウトを一気に削除
Control(ctrl)キーを押しながらvを押すことで矩形選択モードになる。
そのままx
を押すと選択された範囲の文字が一気に消える。
数行に同じ文字を一気に挿入
Control(ctrl)キーを押しながらvを押すことで矩形選択モードになる。
そのままI
を押してから好きな文字を入力する。最期にEscで一気に挿入。
ついに画面分割
コントロールキーの表記
Vim界で<C-w>
はControl(Ctrl)キーを押しながらwを押すことを示す。
画面を分割する
<C-w>v
で画面を垂直分割、<C-w>s
で画面を水平分割。
画面を移動する
<C-w>h
, <C-w>j
, <C-w>k
, <C-w>l
で分割した画面を移動できる。
分割先でファイルを開くといい感じに2つ以上のファイルを同時編集できる。
タブなど
タブ機能も:tab〜
などのコマンドでできるらしいがタイピングが面倒くさい。
.vimrcを少し弄り出す
カラースキームとの出会い
molokaiをダウンロードして ~/.vim/colors/molokai.vim
に配置する。
vim ~/.vimrc
で.vimrcを開き(無い場合は新規作成)colorscheme molokai
と記述する。
入れてみたら綺麗になって満足、いい感じ。
スワップファイルを無効に
.vimrcにset noswapfile
を足すとgitによく引っかかって邪魔なスワップファイルを無効に。
自動でインデントするように
.vimrcにset autoindent
を足すと自動でインデントするように。
タブの下げ幅をカスタマイズ
.vimrcにset tabstop=2
でタブの下げ幅をスペース2個分の表示にする。
タブ入力時にスペースを使うように
.vimrcにset expandtab
でタブ入力時にスペースが自動で入力されるようになる。
Ctrl+Vで貼付けても階段状にならないように
.vimrcにset pastetoggle=<C-E>
で貼付け時ににすると、通常のコピペで貼付けても階段状にならない!!!神!
vimの設定をgithubに保存
細かい設定をいちいち書くのが面倒なので、
~/.vim
や~/.vimrc
をgithubに保存しておくとcloneするだけでよい。楽ちん。
改めてタブの導入
面倒なタブコマンドではなく新しいバインドで導入
" Tab pages "{{{2
" Fallback "{{{3
" the prefix key.
noremap <C-t> <Nop>
" Basic "{{{3
" Move new tabpage at the last.
nnoremap <silent> <C-t>n :<C-u>tabnew \| :tabmove<CR>
nnoremap <silent> <C-t>c :<C-u>tabclose<CR>
nnoremap <silent> <C-t>o :<C-u>tabonly<CR>
nnoremap <silent> <C-t>i :<C-u>tabs<CR>
nmap <C-t><C-n> <C-t>n
nmap <C-t><C-c> <C-t>c
nmap <C-t><C-o> <C-t>o
nmap <C-t><C-i> <C-t>i
nnoremap <silent> <C-t><Space> :<C-u>TabpageTitle<CR>
nmap <silent> <C-t><C-@> <C-t><Space>
nmap <silent> <C-t><C-Space> <C-t><Space>
" Moving around tabpages. "{{{3
nnoremap <silent> <C-t>k
\ :<C-u>execute 'tabnext' 1 + (tabpagenr() + v:count1 - 1) % tabpagenr('$')<CR>
nnoremap <silent> <C-t>j
\ :<C-u>execute 'tabprevious' v:count1 % tabpagenr('$')<CR>
nnoremap <silent> <C-t>J :<C-u>tabfirst<CR>
nnoremap <silent> <C-t>K :<C-u>tablast<CR>
nmap <C-t><C-j> <C-t>k
nmap <C-t><C-k> <C-t>j
nmap <C-t><C-t> <C-t>k
nmap <C-t>h <C-t>j
nmap <C-t>l <C-t>k
nmap <C-t><C-h> <C-t>j
nmap <C-t><C-l> <C-t>k
emonkak氏のをパクってきた。
<C-t>
から色々タブの操作をできるようにしたらほんとうに快適になった!!
Vimを起動したまま.vimrcを反映
:source ~/.vimrc
で起動したまま.vimrcを反映する。
ただし変更後にクリアされていないキーバインド等は想定通りに反映されないことも。
プラグインに手を出し始めた
NeoBundleの導入
Shougo/neobundle.vimのREADMEにならって導入。
:NeoBundleInstall
はよくわからないけれど、とりあえずVimを再起動すればどうにかなるっぽい。
Unite.vimの導入
Shougo/unite.vimを導入。
NeoBundle 'Shougo/unite.vim'
と書くだけでOKだった。
使い方がわからなくて放置・・・。
ctrlpの導入
kien/ctrp.vimを導入。
使い方はこの辺で。
まだ使い始めたばかりだけれどかなり使いやすく気に入っている。
VimShellの導入
Shougo/vimshell.vimを導入。
タブ操作と組み合わせてつかうととても便利だでした。
Vimを閉じる必要が無くなった。
agvimの導入
ag(The Silver Searcher)で検索しpecoで更に絞り込みvimで該当行を開く
キーバインドはjkにしてみた。
いまここ
これから
fugitive.vimがオススメと聞いているので使ってみたい。
vim-filer.vimやUniteをちゃんと使えるようになると、VimShellでcpとかしなくても済みそう・・。