Vimのコマンドの表記とコマンドの基本構造(オペレーターとモーション)
投稿日:2022年4月29日 更新日:
コマンドの使用を基本とするテキストエディター Vimですが、
はじめのうちは書いてあるコマンドの表記の意味がわからない、ということもあるかと思います。
そこで前半では、コマンドの入力の仕方をまとめてみました。
また後半ではVimコマンドの基本的な構造について取り上げます。
操作内容(オペレーター)と操作範囲(モーション)の組み合わせでできており、
知っているといろいろと応用が利きます。
コマンドの表記の意味
コマンド表記は人によって異なるものがみられますが、ここではVimのヘルプでの表記を基準にしています。
入力方法について
順に入力
アルファベットや数字(一部記号)が羅列してあるだけの場合は、左から順に入力します。
コマンドの例としては、yy10p
やgg
等があげられます。
人によっては、文字の間に"→"を入れる場合もあります(例:yy → 10p)。
本サイトでも入力するキーが多い場合、この表記を使用しています。
yy10p
, yy → 10p : y→y→1→0→pの順に入力
同時に入力
マイナス記号で結ばれているコマンドは、同時に2つのキーを入力します。
例としてCtrl-g
があり、これはCtrlキーとgキーの同時入力を意味します。
場合によってはC-g
というように、Ctrl- を C- のように省略して表記することも多々あります。
またマイナス記号ではなく、プラス記号を使ってCtrl+g
のような表記をするのもみかけます。
また大文字のアルファベットや一部の記号を使うコマンドは、実際に入力するときのように Shiftキーを同時に押しながらキーを入力すればOKです。
たとえばP
コマンドはShiftキーとpキーを同時に入力します。
Ctrl-g
,C-g
,Ctrl+g
: Ctrlとgを同時に入力P
: Shiftとpを同時に入力
表記について
特殊キーの入力
EnterやEscなどの特殊キーは、不等号(小なり<
大なり>
)で囲んで表記 されることが多いです。
これらはそのキーを押せばよく、o<Esc>
と表示されている場合は左から順にoキー、Escキーと入力することを意味します。
コマンドモードのコマンドについて
特殊キーを使用する代表的なコマンドは、コマンドモードのコマンドです。
例):wq
<Enter> : ファイルの上書き保存
コマンドモードを使うコマンドはすべて、:からはじまってEnterで終わります。
最初の:でコマンドモードに入り、最後のEnterでコマンド確定&ノーマルモードに戻ります。
意味を示す文字
中括弧で囲まれた文字は、特定の意味を示す文字列 であることが多いです。
例)m
{アルファベット1文字} : {アルファベット1文字} に現在位置をマークする
上の例の場合であれば、{アルファベット1文字}の部分にa,b,c,…,zのような文字のいずれかが入ります。
他に例をあげると、1桁の数字を意味する {1-9}や、レジスタの記号や英数字を意味する {レジスタ} 等があるかと思います。
オプションを示す文字
大括弧で囲まれた文字は、入力が必須ではないことを意味する文字列であることが多いです。
例)[数字]p
: [数字] 回繰り返し貼り付ける
上の例では、{数字} を入力しなくてもコマンドとして機能します。
コマンドの構造
ノーマルモードで使用するコマンドには、操作する内容とその適用範囲を組み合わせたものがあります。
この、操作する内容をオペレーター、操作範囲の指定をモーションといいます。
ここからは、下記の2つを取り扱います。
- オペレーターとモーションを組み合わせた、基本な構成のコマンド
- モーションを省略した、特殊なコマンド
ノーマルモードのコマンドは、ほとんど上記のどちらかに該当しているはずです。
ただし、操作範囲を指定できない操作(オペレーター)もあり、その場合はモーションが不要となります。
基本的な構成
Figure 4がノーマルモードのコマンドの基本的な構成となります。ここで出てきた各要素は次の通りです。
- オペレーター: 操作内容(必須)
- モーション: 操作範囲(オペレーターによっては不要)
- カウント: 繰り返し回数(任意)
それぞれについて説明していきます。
オペレーター:操作内容
オペレーターというのは、操作する内容を指します。たとえば、下記のようなものがあります。
モーションを必要とするものは、オペレーターを単独で入力しただけでは何も起きません。
オペレーター | 操作内容 |
---|---|
c | 変更 |
d | 削除 |
y | ヤンク(コピー) |
p | プット(ペースト)※モーション不要 |
オペレーターとして機能するキーは他にもあります。
下記記事の「テキスト編集」の項をご覧ください。
>>【動画あり】Vimのコマンドを一覧にまとめてみた
モーション:操作範囲
オペレーターを適用する範囲を指定するのがモーションです。
モーションは大きく3種類に分けることができます。
- (a) カーソルの左右移動 : カーソルの移動前後の間のテキストを範囲指定
- (b) カーソルの上下移動 : カーソルの移動前後の行のテキストを範囲指定
- (c) オブジェクト単位の選択 : カーソル上のオブジェクトを範囲指定
(a),(b)は、カーソル移動のコマンドを入力することになります。
(c)は、オブジェクトの単位を指定することになります。
下記がそれぞれの例です。
分類 | オペレーター | 操作範囲 |
---|---|---|
(a) カーソルの左右移動 | l | カーソル位置から1文字分右までの範囲 |
h | カーソル位置から1文字分左までの範囲 | |
w | カーソル位置から1単語分右までの範囲 | |
b | カーソル位置から1単語分左までの範囲 | |
f {1文字} | カーソル位置から右にある {1文字} までの範囲 | |
F {1文字} | カーソル位置から左にある {1文字} までの範囲 | |
(b) カーソルの上下移動 | j | カーソル行と1行下までの範囲 |
k | カーソル行と1行上までの範囲 | |
gg | カーソル行から最上行までの範囲 | |
G | カーソル行から最下行までの範囲 | |
(c) オブジェクト単位の選択 (1文字目) | a | オブジェクト選択に空白文字(スペース)、括弧や引用符を含む |
i | オブジェクト選択に空白文字(スペース)、括弧や引用符を含まない | |
(2文字目) | w | カーソル上の単語(word)を指定 |
p | カーソル上の段落(paragraph)を指定 | |
( , ) | カーソル上の括弧"()"で囲まれた範囲を指定 | |
{ , } | カーソル上の中括弧"{}"で囲まれた範囲を指定 | |
< , > | カーソル上の不等号"<>"で囲まれた範囲を指定 | |
" , ‘ , ` | カーソル上の引用符 "" , ” , “ で囲まれた範囲を指定 |
(a)(b)に分類されるモーションとして使用できるキーは他にも存在しています。
下記記事の「カーソル移動」の項をご覧ください。
>>【動画あり】Vimのコマンドを一覧にまとめてみた
「(c) オブジェクト単位の選択」では2文字を使ってオブジェクトを指定します。
最初の1文字目は、a または i のいずれかを入力してオブジェクトに空白文字等を含めるか指定し、
2文字目でオブジェクトの単位を指定します。
オブジェクト単位には、単語やパラグラフ、括弧で囲まれた範囲や引用符で囲まれた範囲等を指定できます。
たとえばモーション iw は「カーソル上の単語(空白文字を含まない)」を範囲指定し、
消去オペレーター d と組み合わせることで「カーソル上の単語(空白文字を含まない)を消去」というコマンドdiw
になります(Fig.8)。
ci(
コマンドのように括弧内の文字列のオブジェクト指定もできるので、括弧内をすぐ置換できたりするが便利です。
カウント:操作回数
オペレーターの前とモーションの前に数字を入力することができ、これをカウントと言います。
入力されたカウント分だけ、操作が繰り返されます。
カウントが未入力の場合、1 が入力されたときの動作になります。
オペレーターの前とモーションの前の両方にカウントが入力されたときには、
2つの数字の積(掛け算)分の操作が実行されます。
たとえばコマンド2d2j
ではカーソル位置から4行下まで消去します。
特殊な構成
ここまで扱ってきたように、Vimノーマルモードのコマンドはオペレーターとモーション(とカウント)から構成されます(ここでは"一般形"と呼ぶことにします)。
一方で、モーションを必要とするオペレーターを使うにもかかわらず、モーションを省略したコマンドも存在します(ここでは"特殊型"と呼ぶことにします)。
- {オペレーター}x2 : カーソルのある1行にオペレーターを反映
- {オペレーター(大文字)} : カーソル位置から行末までにオペレーターを反映(モーション $ と同等)
まとめ
- コマンドの表記
- 入力方法
- 順に入力 : 入力キーが並んでいるとき(例
yy10p
) - 同時に入力 : ハイフン – で結ばれているとき、大文字のとき(例
Ctrl-g
,P
)
- 順に入力 : 入力キーが並んでいるとき(例
- 表記
- < > : 特殊キー(例 <Enter>)
- { } : 意味を示す文字列(例 {アルファベット1文字})
- [ ] : オプションを示す文字列(例 [数字]
p
)
- 入力方法
- コマンドの構造
- 構成要素
- オペレーター:操作内容
- モーション:操作範囲
- (a) カーソルの左右移動コマンド
- (b) カーソルの上下移動コマンド
- (c) オブジェクト単位の選択
- カウント:繰り返し回数(任意)
- 構造
- 基本形 :[カウント]{オペレーター}[カウント]モーション} (例
diw
) - 特殊型I :{オペレーター} {オペレーター}(例
dd
) - 特殊型II:{オペレーター(大文字)}(例
D
)
- 基本形 :[カウント]{オペレーター}[カウント]モーション} (例
- 構成要素
以上の内容がわかっていると、Vimを使うときに応用が利くようになります。
コマンド一覧のページを作成しましたので、これを参考にいろいろと試してみてください。
>>【動画あり】Vimのコマンドを一覧にまとめてみた