header image
  • プログラム・ソフト
  • 物理学・工学
  • ガジェット
  • 当サイトについて
  • お問い合わせ
  • プログラム・ソフト
  • 物理学・工学
  • ガジェット
  • 当サイトについて
  • お問い合わせ
  • HOME
  • プログラム・ソフト
  • Vim
  • Vimのコマンドの表記とコマンドの基本構造(オペレーターとモーション)

Vimのコマンドの表記とコマンドの基本構造(オペレーターとモーション)

投稿日:2022年4月29日 更新日:2022年6月15日

  • Tags: [コマンド集], [テキストエディター], [使い方],

サムネイル

コマンドの使用を基本とするテキストエディター Vimですが、
はじめのうちは書いてあるコマンドの表記の意味がわからない、ということもあるかと思います。
そこで前半では、コマンドの入力の仕方をまとめてみました。

また後半ではVimコマンドの基本的な構造について取り上げます。
操作内容(オペレーター)と操作範囲(モーション)の組み合わせでできており、
知っているといろいろと応用が利きます。

  • コマンドの表記の意味
    • 入力方法について
      • 順に入力
      • 同時に入力
    • 表記について
      • 特殊キーの入力
        • コマンドモードのコマンドについて
      • 意味を示す文字
      • オプションを示す文字
  • コマンドの構造
    • 基本的な構成
      • オペレーター:操作内容
      • モーション:操作範囲
      • カウント:操作回数
    • 特殊な構成
  • まとめ

コマンドの表記の意味

コマンド表記は人によって異なるものがみられますが、ここではVimのヘルプでの表記を基準にしています。

入力方法について

順に入力

順に入力するコマンドの例"yy10p"
Fig.1. 順に入力するコマンドの例”yy10p”

アルファベットや数字(一部記号)が羅列してあるだけの場合は、左から順に入力します。
コマンドの例としては、yy10pやgg等があげられます。
人によっては、文字の間に"→"を入れる場合もあります(例:yy → 10p)。
本サイトでも入力するキーが多い場合、この表記を使用しています。

  • yy10p, yy → 10p : y→y→1→0→pの順に入力

同時に入力

同時にキー入力するコマンドの例"Ctrl-g"
Fig.2. 同時にキー入力するコマンドの例”Ctrl-g”

マイナス記号で結ばれているコマンドは、同時に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 : [数字] 回繰り返し貼り付ける

上の例では、{数字} を入力しなくてもコマンドとして機能します。

コマンドの構造

「d:削除」「2j:2行下まで」を組み合わせたコマンド"d2j"
Fig.3. 「d:削除」「2j:2行下まで」を組み合わせたコマンド”d2j”

ノーマルモードで使用するコマンドには、操作する内容とその適用範囲を組み合わせたものがあります。
この、操作する内容をオペレーター、操作範囲の指定をモーションといいます。

ここからは、下記の2つを取り扱います。

  • オペレーターとモーションを組み合わせた、基本な構成のコマンド
  • モーションを省略した、特殊なコマンド

ノーマルモードのコマンドは、ほとんど上記のどちらかに該当しているはずです。
ただし、操作範囲を指定できない操作(オペレーター)もあり、その場合はモーションが不要となります。

基本的な構成

ノーマルモードのコマンドの基本的な構成
Fig.4. ノーマルモードのコマンドの基本的な構成

Figure 4がノーマルモードのコマンドの基本的な構成となります。ここで出てきた各要素は次の通りです。

  1. オペレーター: 操作内容(必須)
  2. モーション: 操作範囲(オペレーターによっては不要)
  3. カウント: 繰り返し回数(任意)

それぞれについて説明していきます。

オペレーター:操作内容

オペレーターというのは、操作する内容を指します。たとえば、下記のようなものがあります。
モーションを必要とするものは、オペレーターを単独で入力しただけでは何も起きません。

オペレーター操作内容
c変更
d削除
yヤンク(コピー)
pプット(ペースト)※モーション不要

オペレーターとして機能するキーは他にもあります。
下記記事の「テキスト編集」の項をご覧ください。
>>【動画あり】Vimのコマンドを一覧にまとめてみた

モーション:操作範囲

横方向のカーソル移動によるモーション
Fig.5. 横方向のカーソル移動によるモーション

縦方向のカーソル移動によるモーション
Fig.6. 縦方向のカーソル移動によるモーション

カーソル上のオブジェクト指定によるモーション
Fig.7. カーソル上のオブジェクト指定によるモーション

オペレーターを適用する範囲を指定するのがモーションです。
モーションは大きく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のコマンドを一覧にまとめてみた

オブジェクト指定によるモーションを使ったコマンド例"diw"
Fig.8. オブジェクト指定によるモーションを使ったコマンド例”diw”

「(c) オブジェクト単位の選択」では2文字を使ってオブジェクトを指定します。
最初の1文字目は、a または i のいずれかを入力してオブジェクトに空白文字等を含めるか指定し、
2文字目でオブジェクトの単位を指定します。
オブジェクト単位には、単語やパラグラフ、括弧で囲まれた範囲や引用符で囲まれた範囲等を指定できます。

たとえばモーション iw は「カーソル上の単語(空白文字を含まない)」を範囲指定し、
消去オペレーター d と組み合わせることで「カーソル上の単語(空白文字を含まない)を消去」というコマンドdiwになります(Fig.8)。

ci(コマンドのように括弧内の文字列のオブジェクト指定もできるので、括弧内をすぐ置換できたりするが便利です。

カウント:操作回数

オペレーターの前とモーションの前に数字を入力することができ、これをカウントと言います。
入力されたカウント分だけ、操作が繰り返されます。
カウントが未入力の場合、1 が入力されたときの動作になります。

オペレーターの前とモーションの前の両方にカウントが入力されたときには、
2つの数字の積(掛け算)分の操作が実行されます。
たとえばコマンド2d2jではカーソル位置から4行下まで消去します。

特殊な構成

ノーマルモードのコマンドの通常型と特殊型の構成
Fig.9. ノーマルモードのコマンドの通常型と特殊型の構成

ここまで扱ってきたように、Vimノーマルモードのコマンドはオペレーターとモーション(とカウント)から構成されます(ここでは"一般形"と呼ぶことにします)。
一方で、モーションを必要とするオペレーターを使うにもかかわらず、モーションを省略したコマンドも存在します(ここでは"特殊型"と呼ぶことにします)。

オペレーターx2の特殊型コマンドの例"dd"
Fig.10. オペレーターx2の特殊型コマンドの例”dd”

オペレーター(大文字)の特殊型コマンドの例"D"
Fig.11. オペレーター(大文字)の特殊型コマンドの例”D”

  • {オペレーター}x2 : カーソルのある1行にオペレーターを反映
  • {オペレーター(大文字)} : カーソル位置から行末までにオペレーターを反映(モーション $ と同等)

まとめ

  • コマンドの表記
    • 入力方法
      • 順に入力 : 入力キーが並んでいるとき(例 yy10p)
      • 同時に入力 : ハイフン – で結ばれているとき、大文字のとき(例 Ctrl-g, P)
    • 表記
      • < > : 特殊キー(例 <Enter>)
      • { } : 意味を示す文字列(例 {アルファベット1文字})
      • [ ] : オプションを示す文字列(例 [数字]p )
  • コマンドの構造
    • 構成要素
      • オペレーター:操作内容
      • モーション:操作範囲
        • (a) カーソルの左右移動コマンド
        • (b) カーソルの上下移動コマンド
        • (c) オブジェクト単位の選択
      • カウント:繰り返し回数(任意)
    • 構造
      • 基本形  :[カウント]{オペレーター}[カウント]モーション} (例 diw)
      • 特殊型I :{オペレーター} {オペレーター}(例 dd)
      • 特殊型II:{オペレーター(大文字)}(例 D)

以上の内容がわかっていると、Vimを使うときに応用が利くようになります。
コマンド一覧のページを作成しましたので、これを参考にいろいろと試してみてください。
>>【動画あり】Vimのコマンドを一覧にまとめてみた

コメントを残す コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


VSCodeのPython(Jupyter)のショートカットと表示設定

Vim (Vi)でコピー&ペーストするコマンドまとめとエディタ外部間で行う方法

【動画あり】Vimのコマンドを一覧にまとめてみた

【超初心者向け】Vim(Vi)でなんとかファイル編集する方法

Vimの行番号の表示設定と移動方法

Vimのレジスタの種類とコマンドの使い方・構造

【初心者向け】FreeCADの基本的な使い方と手順の流れ

Win11にWSLインストール(エラー発生したので備忘録)

  • プロフィール

  • Yoshiharu

  • 現在、ひよっこ光学系エンジニアをやっている一般人です。我流でプログラムをいじったりしています。備忘録、知識整理を兼ねてアウトプットをしていく予定です。

    • 【ラズパイ】格安な抵抗式・静電容量式の土壌湿度センサーを実際に使って比較

      2022.11.23

      【ラズパイ】格安な抵抗式・静電容量式の土壌湿度センサーを実際に使って比較


    • ELEGOO Neptune 2Sをレビュー!2万円台3Dプリンターの実力を実際に使って評価!

      2022.11.03

      ELEGOO Neptune 2Sをレビュー!2万円台3Dプリンターの実力を実際に使って評価!


    • 自作ラズパイゼロケースを3Dプリンター用にモデリング【FreeCAD】

      2022.10.13

      自作ラズパイゼロケースを3Dプリンター用にモデリング【FreeCAD】


    • 【初心者向け】FreeCADの基本的な使い方と手順の流れ

      2022.10.11

      【初心者向け】FreeCADの基本的な使い方と手順の流れ


    • 【Python】ラズパイでLチカ:LEDの取り扱い~抵抗値の計算

      2022.09.07

      【Python】ラズパイでLチカ:LEDの取り扱い~抵抗値の計算


  • アーカイブ

    • 2022年11月
    • 2022年10月
    • 2022年9月
    • 2022年8月
    • 2022年5月
    • 2022年4月
    • 2022年3月
    • 2022年1月
    • 2021年11月
    • 2021年9月
    • 2021年8月
    • 2021年7月
    • 2021年2月
    • 2021年1月
    • 2020年12月
    • 2020年10月
    • 2020年9月
    • 2020年8月
    • 2020年7月
    • 2020年3月
    • 2020年2月
    • 2020年1月
  • カテゴリー

    • Vim
    • ガジェット
    • プログラム・ソフト
    • 光学
    • 情報処理
    • 物理学・工学
    • プログラム・ソフト
    • 物理学・工学
    • ガジェット
    • 当サイトについて
    • お問い合わせ
    Y Lab Desk

    Copyright © Y Lab Desk, 2022 All Rights Reserved.