Vim コマンド集 (初心者向け)
Vim のコマンドの処理の種類別のまとめ記事はよくありますが、初心者向けに学びやすい順番に分類された記事があまりないのでまとめておきました。VSCode使えばいいやんとよく言われます。その通りですがコミットメッセージ書いたり、リモートのファイルちょっといじるのにはわざわざVSCode開くよりもやっぱりVimの方が便利なので使ってます。
Vimの移動コマンドのまとめはこちら。
必須レベル
k j h l 上下左右
i カーソル位置で挿入モードへ
ESC コマンドモードへ
:w 保存
:q 終了
:wq 保存して終了
:q! 保存せずに終了
入門レベル
x カーソルの位置の文字を削除
v ビジュアルモードへ
y 選択範囲をコピー
d 選択範囲を削除
yw 単語コピー
yy 行コピー
dw 単語削除
dd 行削除
p カーソルの後ろにペースト
u やり直す
Ctrl-r 取り消す
簡単だけど割と使うやつ
a カーソルの次の位置で挿入モード
o 改行して挿入モード
w 次の単語の先頭へ移動
e 次の単語の後ろへ移動
b 前の単語の先頭へ移動
ge 前の単語の後ろへ移動
Ctrl+u 画面半分上に移動
Ctrl+d 画面半分下に移動
Ctrl+b 画面全部上に移動
Ctrl+f 画面全部下に移動
0 行頭へ移動
^ 行の最初の文字へ移動
$ 行末へ移動
gg ファイルの先頭行へ移動
G ファイルの最終行へ移動
初級レベル
. 直前の操作を繰り返す
* カーソル位置の単語を次に検索
# カーソル位置の単語を前に検索
n 検索の次の候補へ移動
N 検索の前の候補へ移動
/word word を前方検索
?word word を後方検索
:%s/old/new/g ファイル全体の"old"を"new"に置換
:%s/old/new/gc ファイル全体の"old"を"new"に置換する前に確認(単語ごとに置換するかどうか選べたり、全置換したりできる)
>> << インデント
ちょっとつよつよ
- n(コマンドの実行回数) と
dd,yy
nddn 行削除
nyyn 行コピー - n, m(行番号) と
d,y
:ndn行目を削除
:n,mdn行目からm行目まで削除
:nyn行目をコピー - n(文字数) と
d,y
ndln文字削除
nyln文字コピー - s, c (削除して挿入モードへ)
sカーソル位置の文字を削除して挿入モード
ccS一行削除して挿入モードへ
Cカーソル位置から行末までを削除して挿入モードへ
ceカーソル位置から単語の最後まで削除して挿入モードへ - iw系 (カーソル位置の単語に関する操作)
diwカーソル位置の単語を削除 cf.dawにすると単語の周りの空白を一つ削除できます
yiwカーソル位置の単語をコピー
ciwカーソル位置の単語を削除して挿入モードへ
cf.iwの類義語としてi"やi'、i<、i(、i[、i{などがあります。それぞれ括弧の中身について操作できます。iをaに変えると指定した記号ごと操作します。itatはhtmlなどのタグについて操作します。 -
d,yと$,0,gg,Gの組み合わせ
d0文頭まで削除
y0文頭までコピー
c0文頭まで削除して挿入モード
d$D文末まで削除
y$Y文末までコピー
c$C文末までまで削除して挿入モード
dgg最初の行まで削除
ygg最初の行までコピー
cgg最初の行まで削除して挿入モード
dG最後の行まで削除
yG最後の行までコピー
cG最後の行まで削除して挿入モード
- インサートモードへの入り方のバリエーション
I文頭に移動してインサートモードへ
A文末に移動してインサートモードへ
O上に改行してインサートモードへ - 矩形選択と
$、0とI、A
矩形選択+0I+ESC複数行のそれぞれの文頭に同じ文字列を追加
矩形選択+$A+ESC複数行のそれぞれの文末に同じ文字列を追加
(文頭、文末に限らずカーソルを合わせれば好きなところに文字を一斉に追加できます。) - 行連結
J空白ありで次の行を現在の行に結合
gJ空白無しで次の行を現在の行に結合 - p派生
Pカーソルの前にペースト
gpカーソルの後ろにペーストしてその後ろにカーソルを置く
gPカーソルの前にペーストしてその後ろにカーソルを置く - 移動のさらなる効率化を目指す
fxカーソルから次の最初に"x"の位置に移動
txカーソルから次の最初に"x"の位置の直前に移動
Fxカーソルから前の最初に"x"の位置に移動
Txカーソルから前の最初に"x"の位置の直前に移動
;f, tの繰り返し
,F, Tの繰り返し
H画面の最上部の行へ移動
M画面の中央の行へ移動
L画面の最下部の行へ移動
nggn 行目に移動
Ctrl+e画面を1行下にスクロール (カーソル位置は変わらない)
Ctrl+y画面を1行上にスクロール (カーソル位置は変わらない)
Ctrl+o前のカーソル位置に移動
Ctrl+i次のカーソル位置に移動
%対となる括弧へ移動
- コマンドモードで
Ctrl+o
一回だけノーマルモードのコマンドを使える. 例えば以下のように使う.
Ctrl+o oコマンドモードで改行できる
Ctrl+o 3jコマンドモードで三行下に移動
Ctrl+o ddコマンドモードで一行削除
初心者卒業
リストで書いておきますので必要に応じて調べてみてください。この他にももっといろいろあります!Vimはすごいですね!
- インサートモードでのコマンド
- ビジュアルモードでのコマンド
- gで始まる移動コマンド
- テキストオブジェクト
(本記事で取り上げたw: 単語,({[: 括弧,"'以外にもs: 文, t: タグなどがある) - ファイル操作
- マーク機能
- 正規表現検索
- grep検索
- 自動インデント
- 折り畳み、展開
- 単語補完
-
%で括弧に移動 - レジスタ
- バッファ
- ウィンドウ、タブ
- マクロ
Discussion