Vimで次のアクションを実行するようにキーをマップしたいと思います。ファイルを編集しているとしましょう。F2を押した場合に、次のようにした場合と同じことを実行できるように設定したいと思います。
- 押すESC
- コロン(
:
)と入力します - タイプ
w
- 押すEnter
- ESCもう一度押す
- 入力
i
して挿入モードに戻ります
これは可能ですか?
はい、それは可能ですが、カーソルが行の終わりにある場合、それはあなたが望むことをしません。
挿入モードでファイルを保存するにF2は、次のマッピングを使用します。
:imap <F2> <C-O>:w<CR>
文字通りの答え:はい。あなたはこれを使うことができます:
:inoremap <F2> <Esc>:w<CR>I
しかし、それはあなたが望むことを正確には行いません(カーソルは間違った場所にあります)。
アントンは私を文字通りではない(しかし正しい)答えに打ち負かしました。
ただし、最善の答えは次のとおりです。Vimを誤って使用しないでください。挿入モードで時間をかけすぎて、ファイルから抜け出し、ファイルを保存してから戻るためのショートカットが必要になることはありません。他のすべてのエディターでは、常に「挿入モード」になっています。メニューやダイアログなどに一時的にポップします。Vimでは、これを逆にすることを学ぶ必要があります。何かを編集または追加するには、挿入モードに入るだけです。挿入モードでは、矢印キーを使用してカーソルを移動しないでください。ほとんどの時間をコマンド(通常)モードで過ごし、新しいパラダイムに少し調整した後、編集速度が向上したことがわかります。
マッピングの記述は、説明よりもほとんど簡単です。
まず、どのモードからマッピングを使用するかを決定する必要があります。これにより、:map
使用するバリアントが決定されるためです。おそらくこれを挿入モードで使用したいので、を使用します:inoremap
。
マッピングの形式は次のとおりです。
:..noremap {keys} {rhs}
が必要です<F2>
(を参照:help key-notation
)keys
。について{rhs}
は、説明にリストされているキーを連結するだけです。
マッピングを永続化するには、マッピングをに追加し~/.vimrc
ます。(を参照してください:help vimrc
。)
PS Anton Kovalenkoによって提供された代替案は、おそらくあなたがやろうとしていることに適していますが、ここでは、将来のキーマッピングの一般的なレシピを提供しました。