まず、map
かつnoremap
それぞれがためのマッピングを作成することという点で類似している、通常の視覚的、選択してオペレータのモードを保留同時に。Vimの詳細は:help map-overview
次のとおりです。
Overview of which map command works in which mode. More details below.
COMMANDS MODES ~
:map :noremap :unmap Normal, Visual, Select, Operator-pending
:nmap :nnoremap :nunmap Normal
:vmap :vnoremap :vunmap Visual and Select
:smap :snoremap :sunmap Select
:xmap :xnoremap :xunmap Visual
:omap :onoremap :ounmap Operator-pending
:map! :noremap! :unmap! Insert and Command-line
:imap :inoremap :iunmap Insert
:lmap :lnoremap :lunmap Insert, Command-line, Lang-Arg
:cmap :cnoremap :cunmap Command-line
上記のヘルプに従って、マッピングを特定のモードに制限したい場合は、先頭に追加する必要があります:
「n」(通常の場合)、「v」(視覚および選択の場合)、「c」(コマンドの場合)、「x」(視覚モードの場合)、「s」(選択の場合)、「o」(オペレーター保留中の場合) )。
例えば、
nmap n nzz
の通常モード、再帰マッピングを作成しますn
。
これnoremap
は、の非再帰バージョンですmap
。
それでは、非再帰的マッピングとは何ですか?Vimにはそれに対する答えもあります:help map-recursive
。
If you include the {lhs} in the {rhs} you have a recursive mapping. When
{lhs} is typed, it will be replaced with {rhs}. When the {lhs} which is
included in {rhs} is encountered it will be replaced with {rhs}, and so on.
This makes it possible to repeat a command an infinite number of times. The
only problem is that the only way to stop this is by causing an error. The
macros to solve a maze uses this, look there for an example. There is one
exception: If the {rhs} starts with {lhs}, the first character is not mapped
again (this is Vi compatible).
For example: >
:map ab abcd
will execute the "a" command and insert "bcd" in the text. The "ab" in the
{rhs} will not be mapped again.
この例は、次のマッピングです。
:imap j k
:imap k j
これで、vimはjをkに、kをjに無限の回数置換し、したがって、再帰マッピングを作成したというエラーを表示します。
このため、通常、マッピングなどを使用する場合を除き、ほぼ常に<Plug>
非再帰マッピングを使用することをお勧めします。これにより、誤って再帰的なマッピングを作成したときにVimがハングするのを防ぎます。したがって、非再帰マッピングは、Vimでコマンドをマッピングするより安全な方法です。
上記の情報が手元にあれば、それ:noreabbrev
は:abbrev
コマンドの非再帰バージョンにすぎないことがわかります。
:abbrev
挿入、置換、およびコマンドモードでのみ使用できます。:abbrev
略語(別名Vimが展開できるショートカット)の作成に使用されます。短い説明は、:map
/ を使用:noremap
してマッピングを作成すること、:abbrev
/ :noreabbrev
を使用して略語を作成すること、またはVimで入力を展開する場合です。