概要
このページは、Vimの1文字で操作内容が決まるコマンドをフォーカスしてまとめたページです。
よくあるコマンドの紹介方法として「カーソル操作・編集操作」のようなカテゴリ別があります。基本的な操作の習得に対して優れている一方で、基本的ではないちょっと便利なコマンドなどは紹介されにくいです。
また、その次のステップとして 公式help が紹介されることもあるが、分量が非常に多いため読み切るのは辛いです。
この2つのステップのギャップを少しでも埋めるため、1文字コマンドにフォーカスしたページがあったら便利かなと思い作成しました。
1文字コマンドを選んだ理由は、おそらく重要なコマンドほど少ないタイプ数で打てるように割り当てられているだろうという予測から。
1文字コマンドの定義
1文字目で操作内容が決定するようなコマンドを1文字コマンドとする。
具体的には、次のどちらかの条件を満たすコマンドのことを指す。
- 1文字で完結するコマンド (a, A, CTRL-A, $, 0, など)
- 公式helpに 1文字+{***} で載っているコマンド (c{motion}, f{char}, m{A-Za-z}など)
このページでは、ノーマルモードでアルファベットから始まる1文字コマンドをまとめる。
(今後、ctrl, 記号を増やしたい)
予備知識
- {motion}: カーソル移動系のコマンドを表す。具体的には、表内で太字で示されているコマンド (hjkl...) などを表す
- {char}: 任意の1文字を表す
- word単位: vimにおける"word"。空白に加えて、数字やアンダースコア (_)も単語の区切りとする。詳細は
:help word
参照 - WORD単位: vimにおける"WORD"。空白のみを単語の区切りとする単位。詳細は
:help word
参照
ノーマルモード:アルファベット小文字編
太字で示したコマンドは {motion} に対応するコマンドである。
説明に [buffer] のあるコマンドは、コマンドの前にx
のようにregisterを指定することができる。
コマンド | 説明 |
---|---|
a | カーソルの後ろにテキストを追加 |
b | word単位でカーソルを前へ移動。カーソル位置は先頭文字に合わせる |
c{motion} | {motion}で指定したテキストを削除した後、挿入モード [buffer] |
d{motion} | {motion}で指定したテキストを削除 [buffer] |
e | word単位でカーソルを後ろへ移動。カーソル位置は末尾文字に合わせる |
f{char} | カーソル位置から右方向にある次の{char}へカーソルを移動 |
h | カーソルを左へ移動 |
i | カーソルの前にテキストを追加 |
j | カーソルを下へ移動 |
k | カーソルを上へ移動 |
l | カーソルを右へ移動 |
m{A-Za-z} | カーソル位置を記録 |
n | 最後に行った検索 (/ or ? コマンド)を再実行 |
o | カレント行の下に新しい行を挿入し、テキストを追加 |
p | カーソルの後ろにregister内のテキストを貼り付ける[buffer] |
q{0-9a-zA-Z"} | 文字の入力をregisterに記録 (記録中の場合は、記録を停止) |
r{char} | カーソル下の文字を{char}に置換。{char}には<CR>も指定可能 |
s | カーソル下の文字を削除し、挿入モード。cl で代用可能 [buffer] |
t{char} | カーソル位置から右方向にある次の{char}の1文字前へカーソルを移動 |
u | アンドゥ |
v | Visualモード |
w | word単位でカーソルを後ろへ移動。カーソル位置は先頭文字に合わせる |
x | カーソル下の文字を削除 [buffer] |
y{motion} | {motion}で指定したテキストをヤンク [buffer] |
※ 1文字コマンドが存在しないアルファベット
g: extended commandに続く
z: z commandに続く
ノーマルモード:アルファベット大文字編
太字で示したコマンドは {motion} に対応するコマンドである。
説明に [buffer] のあるコマンドは、コマンドの前に"x
のようにregisterを指定することができる。
コマンド | 説明 |
---|---|
A | カレント行の文末にテキストを追加 |
B | WORD単位でカーソルを前へ移動。カーソル位置は先頭文字に合わせる |
C | カーソル下から文末までを削除した後、Insertモード。c$ で代用可能 [buffer] |
D | カーソル下から文末までを削除。d$ で代用可能 [buffer] |
E | WORD単位でカーソルを後ろへ移動。カーソル位置は末尾文字に合わせる |
F{char} | カーソル位置から左方向にある次の{char}へカーソルを移動 |
G | カーソルをファイルの最終行の文頭へ移動 |
H | カーソルをスクリーンの先頭行の文頭へ移動 |
I | カレント行の文頭にテキストを追加 |
J | カレント行とその次の行を連結。なお、連結される行に含まれるインデントは削除される |
K | カーソル下の単語を調べるためにプログラムを実行。デフォルトでは :!man キーワード と同一 |
L | カーソルをスクリーンの最終行の文頭へ移動 |
M | カーソルをスクリーンの中央行の文頭へ移動 |
N | 最後に行った検索 (/ or ? コマンド)を前回と反対方向に再実行 |
O | カレント行の上に新しい行を挿入し、テキストを追加 |
P | カーソルの前にregister内のテキストを貼り付ける[buffer] |
Q | Exモードに切り替える |
R | Replaceモードに切り替える |
S | カレント行のテキストを全て削除し、Insertモード。cc で代用可能 [buffer] |
T{char} | カーソル位置から左方向にある次の{char}の1文字後ろへカーソルを移動 |
U | カレント行における最新の変更を全てアンドゥ |
V | linewise Visualモード |
W | WORD単位でカーソルを後ろへ移動。カーソル位置は先頭文字に合わせる |
X | カーソル下の1文字前を削除 [buffer] |
Y | カレント行のテキストをヤンク。yy で代用可能 [buffer] |
※ 1文字コマンドが存在しないアルファベット
Z: 単体ではなし (2文字ではZZ, ZQ)
動作がわかりにくい 数字+小文字1文字コマンド
上記コマンドは M, Q を除いて、コマンドの前に数字を加えて実行できる。
基本的にコマンドの前に付与される数字は、繰り返し回数や行数の指定となる。
その一方、動作がわかりにくいコマンドもあるので、ここではそのコマンドをまとめる。
なお「わかりにくい」の基準は、筆者の主観で判断した。
a: カーソルの後ろにテキストを追加
カーソル下の文字:!
コマンド:3ahello<ESC>
↓!hellohellohello
i: カーソルの前に文字を追加
カーソル下の文字:!
コマンド:3ihello<ESC>
↓hellohellohello!
A: カレント行の文末にテキストを追加
カレント行:hello
コマンド:3A!?<ESC>
↓hello!?!?!?
I: カレント行の文頭にテキストを追加
カレント行:hello
コマンド:3I><ESC>
↓>>>hello
o: カレント行の下に新しい行を挿入し、テキストを追加
カレント行:---
コマンド:3ohello<ESC>
↓---
hello
hello
hello
O: カレント行の上に新しい行を挿入し、テキストを追加
カレント行:---
コマンド:3Ohello<ESC>
↓hello
hello
hello
---
C: カーソル下から文末までを削除した後、Insertモード
カーソル下の文字:The quick brown
の
fox jumps
over the lazy dogb
コマンド:2C
↓The quick
over the lazy dog
D: カーソル下から文末までを削除
コマンドC
と同様
G: カーソルをファイルの最終行の文頭へ移動
コマンド:3G
→ ファイルの 先頭行から3行目 の文頭へ移動。3gg
と同一
H: カーソルをスクリーンの先頭行の文頭へ移動
コマンド:5H
→ スクリーンの 先頭行から5行下 へ移動
L: カーソルをスクリーンの最終行の文頭へ移動
コマンド:5L
→ スクリーンの 最終行から5行上 へ移動
r{char}: カーソル下の文字を{char}に置換。{char}にはも指定可能
カーソル下の文字:hello
のh
コマンド:3rx
↓xxxlo
カーソル下の文字:hello
のe
コマンド:3r<Enter>
↓h
o
R: Replaceモードに切り替える
カーソル下の文字:abcdefgh
のb
コマンド:3Rxx<ESC>
↓axxxxxxh
最後に
より正確な情報は :help コマンド or :h コマンド で確認してください。
間違い・誤解しやすい表現がある場合は、ご指摘していただけると幸いです。