最近、SSHなどでサーバーをいじるのだが、viコマンドをうっかり忘れるので基本コマンドをまとめておく。
モード操作
[ESC] | 初期モードに戻る |
i | 挿入(insert)モード※カーソルの前 |
a | カーソルの後から挿入(insert)モード開始 |
A | 行の末尾から挿入(insert)モード開始 |
o | 下に新しい行を追加して挿入(insert)モード開始 |
O | 上に新しい行を追加して挿入(insert)モード開始 |
3c | 3文字削除して挿入(insert)モード開始 |
cc | カーソルのある行を削除して挿入(insert)モード開始 |
R | 上書き(REPLACE)モード ※文字が置き換わる |
v | ビジュアル(VISUAL)モード ※コピペ等に使う |
[Ctrl] + v | 矩形選択(VISUAL BLOCK)のビジュアルモード |
行移動
gg | 最初の行 |
100G | 100行目 |
G | ファイルの最終行 |
H | 画面の最初の行(Home) |
M | 画面の中央の行(Middle) |
L | 画面の最後の行(Last) |
カーソル移動
h | カーソルを1文字左へ |
j | カーソルを1行下へ |
k | カーソルを1行上へ |
l | カーソルを1文字右へ |
w | 次の単語 |
b | 前の単語 |
f(文字) | カーソルがある行の(文字)に移動(find) |
F(文字) | カーソルがある行の(文字)に移動(逆方向find) |
0 | 行の先頭 |
$ | 行の最後 |
% | 対応する括弧に移動 |
ページ移動
[Ctrl] + f | page down |
[Ctrl] + d | page down 1/2 |
[Ctrl] + b | page up |
[Ctrl] + u | page up 1/2 |
削除
3d[space] | 3文字を削除 |
dd | 行を削除 |
3dd | 3行を削除 |
コピー
3y[space] | 3文字をコピー |
yy | 行をコピー |
3yy | 3行をコピー |
ペースト
p | カーソルの後にペースト |
P | カーソルの前にペースト |
複合 ※組み合わせて色々使える(以下は$の例)
c$ | カーソルの位置から行末までを削除して挿入(insert)モード開始 |
d$ | カーソルの位置から行末までを削除 |
y$ | カーソルの位置から行末までをコピー |
検索と置換
/文字列 | カーソル以降の文字列を検索 |
?文字列 | カーソルより前の文字列を検索 |
n | 次の検索結果へ移動 |
N | 前の検索結果へ移動 |
編集
. | 直前の変更を繰り返す |
u | Undo |
[Ctrl] + r | Redo |
行番号
:set number | 行番号を表示 |
:set nonumber | 行番号を非表示 |
保存と終了
:w | 上書き保存 |
:q | 終了 |
:q! | 編集内容をファイルを保存せず終了 |
:wq | ファイルを保存して終了 |
:wq! | リードオンリーでも強制的に保存して終了 |