この包括的なガイドでは、操作を自動化するために Vim でキーをマップする方法を説明します。基本的なキー マップの作成から高度なキー マッピング、およびそれらを永続化および削除するプロセスまで。
- 構文
- Vim の特別な引数
- 基本的なキーマップの作成
- キーマップのリスト
- キーマップを永続化する
- 再帰の回避
- モード固有のキーマップの作成
- マウスイベントをマッピングする方法
- Vim でリーダー キーを使用してマッピングする方法
- Vimscript 関数をマップする方法
- Vim で外部コマンドをマップする方法
- Vim でキーマップを削除する方法
- Vim キー マッピングのチートシート
- 結論
構文
Vim でキーをマップするには、次の構文が使用されます。
<モード>マップ <引数>
上記の構文では次のようになります。
<モード>マップ | nmap、imap、vmap、xmap、cmap、または omap | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<引数>* | *上記の構文では、 Vim の特別な引数Vim Special Arguments は、キーマップに追加機能を与えるために使用されるタグです。これらの引数は、:map コマンドの後、{rhs} と {lhs} の前に現れます。 たとえば、マップ バッファー固有のマップを作成するには、次の方法で特別な引数を使用します。 :地図 < バッファ > < C-a > ggVG
Vim の特別なキーの表記については、次の図で説明します。
たとえば、キー マッピングでスペース キーを使用する場合は、 Vim での基本的なキーマップの作成基本的な例で Vim のキー マッピングを理解しましょう。全行選択コマンド( ggVG ) に Ctrl+A キー。 Ctrl+A キーをマップするには、Vim で次のコマンドを実行します。 :地図 < C-a > ggVG ここ、 同様に、行番号をマップするには、 F1 キーの使用: :地図 < F1 > :セット番号 !ここで、F1 キーを押すと行番号が有効になり、もう一度押すと無効になります。 このメソッドは現在のバッファ内のキーのみをマップし、バッファを閉じるときに削除されることに注意してください。 キーマップのリスト通常モード、ビジュアルモード、およびオペレーター保留モードのすべてのキーマッピングをリストするには、:map コマンドを使用します。 :地図キーマッピングをリストするには 入れる そして コマンドライン モードの場合は、:map! を使用してください。指示。 :地図 !特定のモードのキー マッピングを一覧表示するには、マップ キーワードの前にモードの頭文字を入力するだけです。
さらに、プラグイン マップを含むすべてのマップをパスとともにリストするには、次を使用します。 :詳細マップ 指示。 :詳細マップ特定のキーについては、コマンド内でキーを指定するだけです ( :verbose マップ <キー> )。 キーマップを永続化する上のセクションで説明したキーマップは、現在のバッファ内のキーのみをマップします。 Vim キー マッピングを永続的にするには、マップを vimrc ファイルに配置する必要があります。
キーマップを vimrc ファイルの前にコロン (:) を追加しないでください。 地図 指示。 キーマップを配置した後、 vimrc ファイルを保存し、:wq コマンドまたは Shift+ZZ キーを使用して終了します。に配置されたキーマップは、 vimrc ファイルはグローバルになり、すべての Vim セッションで使用できます。ただし、現在のセッションの作業に影響を与える場合は、特定のキーマップを一時的に無効にすることができます。以下の「Vim でキーマップを削除する方法」セクションを参照してください。 の vimrc は、さまざまなコマンドや設定が含まれる Vim の設定ファイルです。それは、 /usr/共有/vim/ macOS 上のディレクトリと /etc/vim Linux 上で。注意することが重要です。 vimrc 前述のディレクトリ内のファイルはシステム固有のファイルです。これらのファイルをキー マッピング用に編集することもできますが、ユーザー固有のファイルを作成することをお勧めします。 vimrc ホームディレクトリにあるファイル。 再帰の回避次に進む前に、Vim キー マッピングの再帰について学ぶことが重要です。その欠点とそれを防ぐ方法。例を使用することで理解できます。 :地図 DD 3jdd上の例では、 DD キーを押して 3 行下に移動し、カーソル下の行を削除します。さて、 を押すと、 DD 、マップを実行しようとします 3jdd 。 Vim が解釈します DD 次の図に示すように、コマンドをマップとして作成し、マップを繰り返し実行します。
注記 : 再帰により Vim エディタがフリーズする可能性があります。凍結を解除するには、 を押します。 Ctrl+C キー。 再帰を避けるために、 地図 キーワード付き ノーアマップ 、 どこ ' のれ ' 手段 非再帰的 。交換させていただきます 地図 キーワード付き ノーアマップ 上記のキーマップの再帰を修正します。 :ノアマップ DD 3jdd使用をお勧めします ノーアマップ の代わりに 地図 再帰マッピングを誤って作成することを避けるため。 モード固有のキーマップの作成Vim はキー マッピングを非常に多用途にできるため、特定のモードのキーマップさえ非常に簡単に作成できます。たとえば、挿入モードのキーマップを作成した場合、 F1 キーを押すと、同じものをマッピングできます F1 まったく新しい操作を行うには、別のモードで キーを押します。 次の例では、 F1 キーを押して 3 行を削除します 普通 モードで 3 行をヤンクします。 入れる モード。 :nmap < F1 > 3dd:imap < F1 > < ち、ち > 最初のマップは通常モードで F1 キーを押すと 3 行を削除しますが、2 番目のマップは挿入モードで同じキーを押すと現在の行に 1 つのインデントを追加します。ここで、各モードのマッピングを理解しましょう。 通常モードのマッピング通常モードでマップを適用するには、次のみを使用します。 nmap キーワード。たとえば、次を使用してファイル内のすべての行をコピーするには、 Ctrl+C キーを押した場合は、次のコマンドを使用します。 :nmap < C-c > ggVGy前に説明したように、キーのマッピングには非再帰的な方法を使用することがベスト プラクティスです。そのため、 nmap と ノアマップ キーワード。 :noremap < C-c > ggVGyコロン (:) を付けずに配置します。 vimrc ファイルを使用して永続的なキーマップにします。 私が使用します ノーアマップ の代わりに 地図 次の例では。 挿入モードのマッピング挿入モードのキーをマップするには、次のようにします。 私 の代わりに n 。たとえば、挿入モードでは、 Ctrl+P そして Ctrl+N キーは、それぞれ後方一致と前方一致に基づいて単語を自動補完するために使用されます。マッピングするには、 Ctrl+P Tab キーを押した場合は、次のコマンドを使用します。 :inoremap < タブ > < CP > さらに重要なのは、地図を作成したい場合 オペレータ保留モード のコマンド 挿入モード 、その後、を挿入する必要があります さて、 を押すと、 Ctrl+X キーを押すと、 3ddi コマンドを実行する代わりに。
それを修正するには、 これで、コマンドが実行され、挿入モードに維持されます。 多くのミニノートパソコンには、 ESC キーは、現在のモードを終了するために重要です。したがって、マッピングするには、 ESC キーを押して挿入モードを終了すると、キー マッピングを利用できます。次の例では、 元 キーを押して通常モードに戻ります。 :inoremap ex < ESC >を素早く押すと、 元 キーを押すと挿入モードが終了し、通常モードに入ります。 ビジュアルモードのマッピングビジュアル モードは、Vim エディターでテキストを選択するための非常に重要なモードです。ビジュアル モードには、基本的な選択の他に、ビジュアル ライン、ビジュアル ブロック モードなどのさまざまなモードがあります。 ビジュアルモードでは、チルダ (~) ケースを切り替えるために使用されます。チルダ (~) を使用するには、2 つのキーを押す必要があります (シフト+~) 。次の例では、c キーをマッピングしています。 ビジュアルモード カーソルの下の単語を選択し、大文字と小文字を変更します。 :vnoremap c iw~次の GIF に示すように、v を押してビジュアル モードに入り、c キーを押してカーソルの下の単語を切り替えます。
コマンドラインモードのマッピングVim に不可欠なコマンドの多くは、コマンドライン モードでのみ動作します。ファイルを保存するなど :で コマンドは同様に保存して終了するために使用されます。 :wq コマンドが使用されます。すべてのタブと分割操作もコマンドライン モードで実行されます。たとえば、新しいタブを作成するには、 :部下 コマンドが使用されます。さて、タブを簡単に作成するには、 Ctrl+T キーで十分です。 :cnoremap < ち、ち > 主題 < CR >次に、コロン (:) を押してコマンドライン モードに入り、 Ctrl+T 新しいタブを開きます。全文を入力するよりもはるかに速いです 主題 コマンドと 戻る 鍵。
Vim カスタム コマンドの作成 次に、コマンドモードに入り、次のコマンドを実行します。 :Mycmd 指示。 オペレータ保留モードのマッピングオペレーター保留モードは、オペレーター・キーが押された後、Vim がモーション・コマンドを待つモードです。一般的な演算子は y、d、c です。たとえば、現在の行とそれに続く 3 行を削除するには、d 演算子を次のように使用します。 3j モーション(d3j)。これらのキーを同時に押して、目的の操作を行うことはできません。 このモードは通常、モーションをマッピングするために使用されます。現在の行とそれに続く 3 行を選択するモーションをマップしてみましょう。 :onoremap < F2 > 3jここで、現在の行とそれに続く 3 行をヤンクするには、 ザF2 キーも同様に、 d 演算子も適用できます。 心に留めておくべきもう 1 つの重要な点は、上記のマップされたモーションにカウントを追加するとします。 2 マウスイベントをマッピングする方法Vim は完全にカスタマイズ可能なキーボード中心のテキスト エディターですが、マウス機能が利用できることでさらに優れたものになります。通常のキーボード キーとは別に、すべてのマウス イベントも Vim にマッピングできます。たとえば、右ダブルクリックと左ダブルクリックをそれぞれ前後にマークをジャンプするようにマッピングする場合は、次のマッピングを使用します。 :ノアマップ < 2 -右マウス > 】 `:ノアマップ < 2 -マウスの左 > [ ` マッピングできるその他のマウス イベントを次の表に示します。
Vim でリーダー キーを使用してマッピングする方法Vim マッピングはリーダー キーがないと不完全です。リーダー キーは、他のタスクを実行するためにキーがマップされている場合でも、キーのマップに使用できるデフォルト キーです。たとえば、 d キーを押してすべての行を削除すると、リーダー キーを使用して同じキーをマップして 5 行だけを削除できます。 なじみのない人のために、Vim リーダー キーを使用します。これは、コマンドまたは操作をマッピングするために、別のキーまたはキーのセットが接頭辞として付けられたキーです。 Vim のデフォルトのリーダー キーはバックスラッシュ (\) ですが、カスタマイズ可能です。 たとえば、 DD コマンドはカーソル下の行を削除するために使用されます。マッピングしたい場合は、 DD コマンドを使用してファイル内のすべての行を削除すると、リーダー キーを使用できるようになります。 :ノアマップ < リーダー > DD ggVGdこれで、 を押すたびに、 \dd キーを押すと、ファイル内のすべての行が削除されます。 Vim リーダー キーを Windows のコントロール キーまたは macOS のコマンド キーとして割り当てることができます。 Vimscript 関数をマップする方法Vim エディターはコマンドや操作に限定されません。 Vim には、Vimscript と呼ばれるカスタム機能を作成するためのプログラミング言語全体が存在します。スクリプトまたは関数を簡単に作成してキーにマッピングできます。たとえば、行番号、マウス機能、テキスト幅などの設定を有効にする関数を作成してみましょう。 関数 私の設定 ( )セット 番号 セット ねずみ =a セット 文字幅 = 80 エンドファンクション この関数を vimrc ファイルに配置します。 この機能をリーダーと s キーにマッピングしましょう。私が使用します :ノアマップ < リーダー > s :MySettings を呼び出す ( ) < CR >これで、 を押すたびに、 \s キーを押すと、関数が呼び出され、関数内のすべての機能が実行されます。 注記 : Vim でカスタム関数を作成するときは、関数名の最初の文字を常に大文字にする必要があります。 Vim で外部コマンドをマップする方法外部コマンドは Vim にマッピングすることもできます。外部コマンドとは、Linux または Unix コマンドを指します。たとえば、外部をマップする場合は、 選別 現在のバッファ内のすべての行を次のようにソートするコマンド F1 キーを押すには、次のコマンドを使用します。 :ノアマップ < F1 > : %! 選別 < CR >同様に、スクリプト ファイルを作成し、Vim セッションを終了せずにそれを実行可能にしている場合は、 chmod 内部的にコマンドを実行します。たとえば、現在のファイルを実行可能にするには、次のコマンドを実行します。 :!chmod +x % ヴィムで。このタスクを頻繁に実行する場合は、キーをそれにマップするだけです。 :ノアマップ < F1 > : ! chmod +x %Vim では、任意の外部コマンドを感嘆符 (!) 記号とともに使用できます。 Vim でキーマップを削除する方法Vim でキーマップを削除するには、まずキーマップが定義されている場所を特定します。前に説明したように、キーマップはバッファローカルで永続的なものにすることができます。キーマップが永続的で vimrc ファイルに配置されている場合は、キーマップをファイルから削除するだけでキーのマップが解除されます。 マッピングが現在のバッファ内で行われている場合は、次のコマンドを使用して削除できます。 :マップ解除 または :マップを解除してください! コマンド。
たとえば、
現在のバッファ内のすべてのマップを削除するには、 :マップクリア 指示。 :マップクリア上記のコマンドは、ノーマル、ビジュアル、選択、またはオペレーター保留モードのすべてのキーマップをクリアします。 挿入モードとコマンド ライン モードのすべてのキーマップをクリアするには、次のコマンドを使用します。 :マップクリア !デフォルトの Vim コマンドはクリアできないことに注意してください。ただし、これは次のコマンドを使用して無効にすることができます。 :マップ解除 とのコマンド <いいえ> 。たとえば、カーソル下の行を削除する dd 機能を無効にしたい場合は、次を使用します。 :unmap dd <いいえ>。 :マップ解除 DD < いや >dd は現在のバッファーでは機能しなくなります。この方法を使用すると、現在のセッションに対してキーマップを無効にすることができます。 Vim キー マッピングのチートシート次の画像は、参照用にすべてのコマンドとその特定のモードのリストを示しています。
結論Vim キー マッピングは、タスク、頻繁に使用されるキー バインド、コマンド、その他の操作を自動化する便利な方法です。これは多岐にわたるトピックであり、このガイドでは、Vim のキー マッピングに関連する主要な側面をすべてカバーしました。一般的な構文から基本的なキーマップの作成、そして高度な Vimscript 関数と外部コマンドのマッピングに至るまで。 Vim キー マッピングの詳細については、 :ヘルプキーマッピング Vim のコマンド。 |