トップ > 初級編 > 入力関連 > マッピング 機能 >
マッピング

  

マッピング機能で複数のコマンドを1キーで実行する

この記事では、マッピング機能について説明します。

マッピング機能を使えば、1つのキー入力で複数のコマンドを実行することができます。 マッピング機能は、複数のコマンドを何度も繰り返すような場面で役立ちます

なお、この記事では以下のテキストを例に操作を説明します

  1. 左側が不揃いのテキストです。
  2. これは2行目ですが、上の行とは開始位置が違います。
  3. 3行目も同じく上の行とはズレています。
  4. 4行目もです。
  5. 5行目もズレています。
  6. 6行目もズレています。
  7. 最終行もズレてます。
 

マッピングを登録する方法

マッピング機能では、複数のコマンドを1つのキーで実行できます。 つまり、1つのキーの押下で複数のコマンドが実行されるようになるわけですが、キーと複数のコマンドの対応は利用者があらかじめ登録しておく必要があります

マッピングを登録するには、map コマンド(exコマンド)を使います

map コマンドは、設定ファイルに記述することも、起動中のviエディタ上でexコマンドとして実行することもできます

map コマンド(exコマンド)は、

:map <キー> <コマンド>

と実行します。 <コマンド>には、1つまたは複数のコマンドを指定します

  
設定ファイル( .exrc や .vimrc や _vimrc )に記述する場合には先頭の :(コロン) は付けません。
  
設定ファイル( .exrc や .vimrc や _vimrc )に記述する場合は map \ dwj のように記述します。

マッピングを削除する方法

マッピングを削除するには、unmap コマンド(exコマンド)を使います

unmap コマンド(exコマンド)は、

unmap <キー>

と実行します。

登録されているマッピングの一覧を表示する方法

登録されているマッピングの一覧を表示するには、map コマンド(exコマンド)を引数無しで実行します。 map コマンド(exコマンド)を引数無しで実行すると、登録されているマッピングの一覧が表示されます。

map コマンド(exコマンド)を引数無しで、

:map

と実行することで、マッピングの一覧が表示されます。

マッピングの使用例

実際に、マッピングを使用してみましょう。 ここでは、\(バックスラッシュ) キーに dwj のコマンドを割り当てます。 つまり、\(バックスラッシュ) キーの押下で、単語の削除と1行下への移動が行われるようにマッピングします

  
\ はバックスラッシュです。 バックスラッシュはUNIX系OSでは \(バックスラッシュ) として正しく表示されますが、Windows では ¥(円マーク) として表示されます。 どちらにしても、日本語キーボードからは ¥(円マーク) で入力します。
  
ウェブ上でのバックスラッシュの表示は、ウェブブラウザによって異なります。 \(バックスラッシュ) として表示するものもあれば ¥(円マーク) として表示されるものもあります。
文字カーソルは文書の先頭行の3文字目にある
文字カーソルは文書の先頭行の3文字目にある

上図のように文字カーソルは文書の先頭行の3文字目にあると仮定して説明を始めます

まずは、マッピングを登録します。

キーボードから :map \ dwj<Enter> を入力してください。

:map \ dwj<Enter>
マッピングが登録される
マッピングが登録される

上図のようにマッピングが登録されます(見た目の変化はありません)。

では、マッピング登録した \(バックスラッシュ) キーを使用しましょう。

キーボードから \(バックスラッシュ) を入力してください。

\
文字カーソルの後ろの空白の連続が削除される
文字カーソルの後ろの空白の連続が削除される

上図のように次の単語までの空白の連続が削除されます。 また、文字カーソルが1行下へ移動しています。

では、再度キーボードから \(バックスラッシュ) を入力してください。

\
文字カーソルの後ろの空白の連続が削除される
文字カーソルの後ろの空白の連続が削除される

上図のようにこの行でも次の単語までの空白の連続が削除されます。 また、文字カーソルがさらに1行下へ移動しています。

では、再度キーボードから \(バックスラッシュ) を5回連続で入力してください。

\\\\\
文字カーソルの後ろの空白の連続が5行ぶん削除される
文字カーソルの後ろの空白の連続が5行ぶん削除される

上図のように次の単語までの空白の連続が5行ぶん削除されます

最後に、\(バックスラッシュ) キーのマッピングを削除しましょう。

キーボードから :unmap \<Enter> を入力してください。

:unmap \<Enter>
マッピングが削除される
マッピングが削除される

上図のようにマッピングが削除されます(見た目の変化はありません)。

このように、ズレていた左端を揃えることができました。 同じキーを繰り返し入力するだけですので、キーを押したままにするだけで複数行を連続して処理することができます

このように、マッピング機能によって複数のコマンドを連続して実行することが容易になります

  
今回の例では7行の文書の左端を揃えましたが、これくらいの行数だと以下のように dwj.j.j.j.j.j. と実行した方が早いです。
dwj.j.j.j.j.j.
  
数十行から数百行までの文書だと今回の例のようにマッピングするのが早いかと思います。
  
数百行を超える文書になると以下のように :%s/^ */ / で置換するのが早いかと思います。
:%s/^  */  /<Enter>
  

複数キーへのマッピング

Vimでは、複数キーに対してマッピングを行うこともできます。 例えば、

:map \1 dwj<Enter>
:map \2 dwk<Enter>

のようにマッピングすることができます。

複数のキーにマッピングすることで、多くの独自コマンドを定義することができます。

  
オリジナルのviエディタで複数キーへのマッピングを行えるかどうかは...覚えていません。
  

まとめ

マッピング機能を使うことで、複数のコマンドを1回のキー入力で実行することができます。

map コマンド(exコマンド)でマッピングを登録し、unmap コマンド(exコマンド)でマッピングを削除することができます。

なお、map コマンド(exコマンド)を引数無しで実行すると、マッピングの一覧が表示されます。

コマンド 説明
:map <キー> <コマンド> キーとコマンドのマッピングを登録する
:unmap <キー> キーのマッピングを削除する
:map マッピングの一覧を表示する
メニュー