よく忘れる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 |
/<\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 |
: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