vi/vimチートシート

設定ファイルなんかを編集するのに必要なだけ版。

以下の説明で、レベルは「A : 必須」「B : 覚えてれば便利」「C : “そういうのがある"くらい覚えておく」「- : 使わん覚えん」です。「-」は説明のバランスを取るために記載しました。

ここの説明は設定ファイルとかあまり大きくないファイルを編集する人向けです。

vi/vimでプログラムソースを本格的に編集するような人には物足りない内容です。そういう人はvim-jpをどうぞ。

viの起動方法

$ vi [ファイル名]

ファイルが存在しなければ新規ファイルで開く。

viだけ(ファイル名なし)で開いて「:w」や「:wq」でファイル名を指定することもできる。やらんけど。

モード

viには「コマンドモード」と「挿入モード」の二つがある。(「挿入モード」は「インサートモード」「入力モード」「編集モード」と呼ばれたりもする)

起動直後は「コマンドモード」になっている。文字入力するためには「挿入モード」にする必要がある。

「コマンドモード」から「挿入モード」にするコマンドは何種類かあるが「i、A」の2つだけ覚えておけばオッケー。

「挿入モード」から「コマンドモード」はEscキーだけ。何をやってるかわからなくなったらEscキーで「コマンドモード」に、何を編集したかわからなくなったらEscキーと「:q!」で保存せずに終了する。

モード コマンド 動作 レベル
コマンド → 挿入 i カーソル位置に文字が入力できるようになる A
I 行頭に文字が入力できるようになる -
a カーソル右側に文字が入力できるようになる -
A 行末に文字が入力できるようになる A
o 次行の行頭に文字が入力できるようになる -
O 次行の行末に文字が入力できるようになる -
挿入 → コマンド Esc A

保存と終了方法

コマンド 動作 備考 レベル
:w [ファイル名] 保存 ファイル名を指定して別名保存可能 B
:q 終了 編集していると終了できない。その場合は:q!する B
:wq [ファイル名] 保存して終了 ファイル名を指定して別名保存可能 A
:q! 保存せずに終了 A

移動

最近はモードに関係なく矢印キーで移動できるけど、矢印キーでカーソル移動できない環境に出会ったら「h, j, k, l」でカーソル移動する。昔は「コマンドモード」にして「h, j, k, l」で移動してたんよ。

コマンド 動作 備考 レベル
h, j, k, l 左, 下, 上, 右へ1文字移動 大抵は矢印キーで移動できる C
0 行頭へ移動 B
$ 行末へ移動 大抵Aを使う -
nnG or :nn nn行へ移動 B
G 最終行へ移動 先頭行は1G B

文字削除 / 行削除

古い環境だと「挿入モード」でBackSpaceやDeleteが使えないことがあるので「そういうコマンドがあったなぁ」くらいは覚えておいた方がいい。「h, j, k, l」と同じ。「dd」は覚えておくと便利。

コマンド 動作 備考 レベル
x 一文字削除 コマンドモードで削除できるのがチョト便利 C
dd 1行削除 削除キーの連打よさらば B

検索 / 置換

正規表現はpattern - Vim日本語ドキュメントとかvim正規表現リファレンスとかを参照。普通のとちょっと違う。注意。

「置換」は諦めろ。設定ファイルを編集するくらいじゃそんな使わない。よね?

コマンド 動作 備考 レベル
/正規表現 検索 正規表現は使わないで検索文字をそのまま入力することが多い。 A
n or // 次を検索 A
N 前を検索 B

コピー / ペースト

viの機能を使った「コピー / ペースト」は諦めよう。「挿入モード」で端末側OSのコピー&ペースト(cmd+c ~ cmd+v)で誤魔化す。

undo / redo

コマンド 動作 備考 レベル
u undo      B
Ctrl + r redo B

複数ファイルの編集

これも諦める。コンソールを複数開いて操作すればいいじゃない。

その他

ここでのレベルCは~/.vimrcに記述していることが前提、記述してない場合はB。

コマンド 動作 備考 レベル
:syntax on / off シンタックスハイライトの表示 / 非表示 C
:set number / nonumber 行番号表示 / 非表示 C
:set cul / nocul カーソル行強調表示 / 非表示 C
:set ic / noic 検索時の大小文字を区別しない / 区別する C
:set hls / nohls 検索文字のハイライト表示 / 非表示 C
:noh ハイライト解除 「ヒットしない文字列で検索」で代替可 B
:set list / nolist 不可視文字の表示 / 非表示 B
Ctrl + G 現在のファイル名を表示      B
:set fenc? 現在のファイルの文字コードを表示する B

:set … は ~/.vimrcに記述するとデフォルト設定(覚えなくてもオッケー)になる。覚えるのは「:noh」「:set list」だけ。

$ cd ~
$ cat .vimrc
:syntax on
:set number
:set cul
:set ic
:set hls