マッピング機能で複数のコマンドを1キーで実行する
この記事では、マッピング機能について説明します。
マッピング機能を使えば、1つのキー入力で複数のコマンドを実行することができます。 マッピング機能は、複数のコマンドを何度も繰り返すような場面で役立ちます。
なお、この記事では以下のテキストを例に操作を説明します。
- 左側が不揃いのテキストです。
- これは2行目ですが、上の行とは開始位置が違います。
- 3行目も同じく上の行とはズレています。
- 4行目もです。
- 5行目もズレています。
- 6行目もズレています。
- 最終行もズレてます。
マッピングを登録する方法
マッピング機能では、複数のコマンドを1つのキーで実行できます。 つまり、1つのキーの押下で複数のコマンドが実行されるようになるわけですが、キーと複数のコマンドの対応は利用者があらかじめ登録しておく必要があります。
マッピングを登録するには、map コマンド(exコマンド)を使います。
map コマンドは、設定ファイルに記述することも、起動中のviエディタ上でexコマンドとして実行することもできます。
map コマンド(exコマンド)は、
:map <キー> <コマンド>
と実行します。 <コマンド>には、1つまたは複数のコマンドを指定します。
登録されているマッピングの一覧を表示する方法
登録されているマッピングの一覧を表示するには、map コマンド(exコマンド)を引数無しで実行します。 map コマンド(exコマンド)を引数無しで実行すると、登録されているマッピングの一覧が表示されます。
map コマンド(exコマンド)を引数無しで、
:map
と実行することで、マッピングの一覧が表示されます。
マッピングの使用例
実際に、マッピングを使用してみましょう。 ここでは、\(バックスラッシュ) キーに dwj のコマンドを割り当てます。 つまり、\(バックスラッシュ) キーの押下で、単語の削除と1行下への移動が行われるようにマッピングします。

上図のように文字カーソルは文書の先頭行の3文字目にあると仮定して説明を始めます。
まずは、マッピングを登録します。
キーボードから :map \ dwj<Enter> を入力してください。
:map \ dwj<Enter>

上図のようにマッピングが登録されます(見た目の変化はありません)。
では、マッピング登録した \(バックスラッシュ) キーを使用しましょう。
キーボードから \(バックスラッシュ) を入力してください。
\

上図のように次の単語までの空白の連続が削除されます。 また、文字カーソルが1行下へ移動しています。
では、再度キーボードから \(バックスラッシュ) を入力してください。
\

上図のようにこの行でも次の単語までの空白の連続が削除されます。 また、文字カーソルがさらに1行下へ移動しています。
では、再度キーボードから \(バックスラッシュ) を5回連続で入力してください。
\\\\\

上図のように次の単語までの空白の連続が5行ぶん削除されます。
最後に、\(バックスラッシュ) キーのマッピングを削除しましょう。
キーボードから :unmap \<Enter> を入力してください。
:unmap \<Enter>

上図のようにマッピングが削除されます(見た目の変化はありません)。
このように、ズレていた左端を揃えることができました。 同じキーを繰り返し入力するだけですので、キーを押したままにするだけで複数行を連続して処理することができます。
このように、マッピング機能によって複数のコマンドを連続して実行することが容易になります。
dwj.j.j.j.j.j.
:%s/^ */ /<Enter>
複数キーへのマッピング
Vimでは、複数キーに対してマッピングを行うこともできます。 例えば、
:map \1 dwj<Enter>
:map \2 dwk<Enter>
のようにマッピングすることができます。
複数のキーにマッピングすることで、多くの独自コマンドを定義することができます。





