よく忘れるvimのコマンドをまとめました。
私向けの備忘録となってます。
間違いやあらも多いのでお気をつけ下さい。
基本
| コマンド |
説明 |
| x |
1文字削除 |
| dd(連打) |
1行切り取り |
| dd(x行目で1回目のdを押し、y行目で2回目のdを押す) |
x行目〜y行目までを切り取り |
| 5dd (xdd) |
5(x)行削除 |
| yy(x行目で1回目のを押し、y行目で2回目のyを押す) |
x行目からy行目までをコピー |
| p |
貼り付け |
| u |
undo |
| CTRL + r |
redo |
| . |
直前のコマンドを実行 |
| CTRL+n |
補完 |
| CTRL+p |
前候補を検索 |
| CTRL+n |
次候補を検索 |
カーソルの移動
| コマンド |
説明 |
| h,j,k,l |
←,↓,↑,→ |
| w |
1単語分前へ移動 |
| b |
1単語分後ろへ移動 |
| gg |
ファイル先頭に戻る |
| Shift + g |
ファイル末尾に進む |
| 0 |
行頭へ |
| $ |
行末へ |
| ^ |
行の最初の空白でない文字へ |
| 5l |
5文字分右へ |
| CTRL+f |
ページアップ |
| CTRL+b |
ページダウン |
| Shift+m |
カーソルを画面の中心へ |
| f |
fを押して文字を打ち込むと、カーソル行にあるその文字のところに進む。文字入力後、; を押すと戻る |
| % |
(, ), {, }, [, ] カッコ移動などの対応する場所へ移動 |
| mk |
現在のカーソル位置をマーク |
| 'k |
マークした位置へ |
| d'k |
現在位置からマークまでを削除 |
見た目
インデント
| コマンド |
説明 |
| = |
選択行のインデント修正 |
| gg, shift+v, shift+g, = |
ファイル全体のインデント修正 |
| ctrl-t, ctrl-d |
挿入モードでインデントを追加/削除 |
| >> |
インデント |
| << |
インデントを削除 |
| :set shiftwidth=4 |
インデント幅をスペース4つ分にする |
| :set autoindent |
オートインデントをON |
| :set smartindent |
スマートなオートインデントをON |
フォーマット
| コマンド |
説明 |
| :%!fmt |
すべての行をフォーマット |
| !}fmt |
現在位置にあるすべての行をフォーマット |
| 5!!fmt |
次の5行をフォーマット |
その他設定、Syntax highlightingなど
| コマンド |
説明 |
| :syntax on |
色付けする |
| :syntax off |
色付け止める |
| :set syntax=ruby (rubyの部分は言語名) |
指定した言語のモードで色付け |
| :set number |
行番号の表示 |
| :set nonumber |
行番号の非表示 |
:set syntax={}に関してはコチラ
検索・置換・正規表現
検索
| コマンド |
説明 |
| /lover |
文字列hogeを検索(上から下へ) |
| ?lover |
文字列hogeを検索(下から上へ) |
| 検索候補表示中に n |
カーソルより下側にある検索候補に移動 |
| 検索候補表示中に shift+n |
カーソルより上側にある検索候補に移動 |
| * |
今単語がある位置の単語を検索(カーソルより下側) |
| # |
今単語がある位置の単語を検索(カーソルより上側) |
| /lo[vb]er |
文字列の"lover"か"lober"を検索する |
| /<love |
文字列"love"から始まる単語を検索 |
| /love> |
文字列"love"で終わる単語を検索 |
| /<love> |
文字列"love"を検索 |
| /^love |
文字列"love"から始まる行を検索 |
| /love$ |
文字列"love"で終わる行を検索 |
| /^love$ |
文字列"love"だけの行を検索 |
| /<….> |
4文字の単語を検索 |
| /love|kill |
"love"と"kill"を検索 |
| /<\d\d\d\d> |
4桁の数字を検索 |
| /^n{3} |
空の3行を検索 |
| :bufdo /love/ |
現在開いているファイル全部の中から文字列"love"を検索 |
vimでの正規表現に関してはコチラ
置換
| コマンド |
説明 |
| :s/before/after |
カーソルのある行にある最初の文字列"before"を"after"に置換(1つずつ) |
| :s/before/after/g |
カーソルのある行にある文字列"before"をすべて"after"に一括置換 |
| :s/before/after/gc |
カーソルのある行にある文字列"before"をすべて"after"に置換。確認を表示させる |
| :%s/before/after/g |
現在使っているファイルにある文字列"before"を"after"に一括置換 |
| :%s/before/after/g |
現在使っているファイルにある文字列"before"を"after"に置換。確認を表示させる |
| :%s;/var/home;/usr/home;gc |
パス名などを置換するときは、"/"でなく、";"を区切り文字に使用 |
| :63,79s /lover/killer/g |
特定範囲のみ置換: 63〜79行目までの範囲にある"lover"を"killer"に一括置換 |
| :%s/^/Goodbye/g |
ファイル全体のすべての行の先頭に"Goodbye"を追加 |
| :%s/$/./g |
ファイル全体のすべての行の末尾に"."を追加 |
| :3,$s/lover/killer/g |
特定範囲のみ置換: 3行目から最終行の範囲にある"lover"を"killer"に一括置換 |
| :%s/ /^M/g; |
ファイル全体の中からスペース(空文字)を改行(CR)に置換(改行は CTRL+vを押した後にEnterを押すと入力される) |
| :%s/GoodByeMyLove/ILoveYou/gi |
ファイル全体の中から"GoodByeMyLove"を"ILoveYou"に置換する。"GoodByeMyLove"は大文字小文字関係なく検索する |
| :%s/ *$/g |
ファイル全体の行末の空文字(空白、スペース)を削除 |
| :%s#<[^>]+>##g |
タグに囲まれたテキストは残しつつ、HTMLタグを全て削除 |
| :g/love/d |
"love"を含んでる行を削除 |
| :v/goodbye |
"goodbye"を含んでいない行だけを削除 |
| :%s/^(.*)n1$/1/ |
同じ行が2回続いたら片方削除 |
| CTRL+a |
カーソル上の数字をインクリメント |
| CTRL+x |
カーソル上の数字をデクリメント |
| argadd **/*.c |
カレントディレクトリ以下にある.cファイルを選択 |
| :argdo %s/lover/friend/gc | update |
選択されたファイルの中の文字列"lover"を"friend"に置換 |
| :tabdo %s/lover/friend/g |
すべてのタブに対して、"lover"を"friend"に置換 |
ファイル操作
| コマンド |
説明 |
| :e filename |
filenameを現在のウィンドウで開く |
| :split filename |
filenameを横分割したウィンドウで開く |
| :vsplit filename |
filenameを縦分割して開く |
| :sview filename |
filenameを横分割で読み取り専用で開く |
画面分割については下に。
画面
画面分割
| コマンド |
説明 |
| :sp |
上下分割 |
| :vs |
左右分割 |
| CTRL+w CTRL+w(CTRL+wを2回押す) |
次の画面へ |
| CTRL+w ↑(矢印) |
カーソルを上のウィンドウへ |
| CTRL+w _ |
選択中のウィンドウを最大化 |
| CTRL+w = |
分割したすべてのウィンドウを同じ大きさに |
| 10 CTRL+w + |
選択中のウィンドウを10行大きくする |
| :close |
画面を閉じる |
| :hide |
現在のウィンドウを閉じる |
| :only |
現在のウィンドウ以外を閉じる |
| :b 2 |
バッファの2番目を開く |
タブ
| コマンド |
説明 |
| :tabnew |
新しいタブ作成 |
| :tabe filename |
filenameをタブで開く |
| :tabclose |
タブを閉じる |
| gt |
次のタブへ |
| g shift+t |
前のタブへ |
| {i}gt |
i番目のタブへ |
| :tabdo %s/before/after/g |
すべてのタブに対して、一括置換 |
| :tabs |
開いているタブをリスト表示 |
| :tabo |
今使っているタブ以外を閉じる |
| :tabfirst |
最初のタブを表示 |
| :tablast |
最後のタブを表示 |
| :tabm n |
現在のタブをn番目へ |
| :tab ball |
バッファをすべてタブで開く |
vim -p file1 file2
open files as tabs
file1 file2をタブで開く
ヴィジュアルモード
| コマンド |
説明 |
| v |
ヴィジュアルモードに入って一文字選択 |
| shift+v |
ヴィジュアルモードに入って一行選択 |
| CTRL+v |
矩形(くけい)選択 (複数行選択) |
| v, gg, shift+g |
全選択 |
| CTRL + v, I(shift + i), input words or delete, esc |
矩形選択後、選択範囲の編集 |
その他便利なコマンド
UNIXとのインタラクション
| コマンド |
説明 |
| :!pwd |
pwd” を実行し、Vimに戻る |
| !!pwd |
“pwd” を実行し、実行結果をファイルに挿入 |
| :sh, CTRL + z |
一時的にUnixへ戻る |
| $ exit, fg |
Vimに戻る |
設定
| コマンド |
説明 |
| :set tabstop=x |
タブの設定 |
| :set ignorecase |
大文字小文字の区別をなくす |
| :set noignorecase |
大文字小文字を区別する |
| :ab hoge abcdefghijklmn |
abcdefghijklmnのショートカットにhgoe定義 |
| Ctrl+n Ctrl+p(挿入モードで) |
単語を補完 |
| Ctrl+x Ctrl+l(挿入モードで) |
行を補完 |
| :set dictionary=hoge |
“hoge” を “dictionary” に定義 |
cit
| コマンド |
説明 |
| c or d or i |
変更 or 削除 or 挿入 |
| i or a |
中身 or 全体 |
| t or " or ) or ] |
binding character(<>. (), tag, []) |
| cit |
タグの中身を削除して入力モードに入る |
| ca" |
""を含んだ全体を削除して入力モードに入る |
OSによっては、~/.vimrc ファイルに:filetype indent on
という記述がないと、インデントがきかない場合があるらしい。
.vimrc ファイルがない場合は、ホームディレクトリ以下に .vimrc というファイルを作成して、編集してみるのもよいかと。
【参考】
・http://loumo.jp/wp/archive/20080701175525/
・http://archiva.jp/web/tool/vim_regexps.html