回答:
remapあるオプションのマッピングは再帰的に動作します。デフォルトではオンになっているので、そのままにしておくことをお勧めします。残りは、以下で説明するマッピングコマンドです。
:mapそして、:noremapされている再帰と非再帰的な様々なマッピングのコマンドのバージョン。つまり、次のことを行うと、
:map j gg
:map Q j
:noremap W j
jにマッピングされggます。Qは再帰マッピングのために展開されるため、にもマッピングされます。は非再帰的マッピング用に展開されないため、にはマッピングされます(にはマッピングされません)。ggjWjggj
Vimはモーダルエディターであることを思い出してください。それは持っているノーマルモード、ビジュアル・モードと他のモードを。
マッピングのこれらのセットの各々について、あるマッピングビジュアル正常で動作し、選択し、オペレータモード(すなわち:mapと:noremap)、通常モード(で動作するもの:nmapと:nnoremap)、ビジュアルモードで1(:vmap及び:vnoremap)などが。
これに関する詳細なガイダンスについては、以下を参照してください。
:help :map
:help :noremap
:help recursive_mapping
:help :map-modes
noremap反対であると想定していましたmap。マッピングを削除するものを意味します。答えてくれてありがとう。それは私を明確にしました
:map、などはすべてのモードでは機能せず、正確には、すべての一般的なモード(特に、通常モード、ビジュアルモード、選択モード、オペレーター保留モード)。マッピングを挿入、コマンドライン、またはlang-argモードで機能させたい場合は:map!、などを使用する必要があります(出典:vimdoc.sourceforge.net/htmldoc/map.html#map-overview)
Vimのドキュメントでは、これらのコマンドの命名の背後にある意味を説明しているはずです。彼らが何をするかをあなたに告げるだけでは、あなたは名前を覚えるのを助けません。
mapすべての再帰的マッピングコマンドの「ルート」です。ルートフォームは、「通常」、「ビジュアル+選択」、および「オペレーター保留」モードに適用されます。(私は言語学のように「ルート」という用語を使用しています。)
noremapすべての非再帰的マッピングコマンドの「ルート」です。ルートフォームは、と同じモードに適用されますmap。(nore「非再帰的」を意味する接頭辞を考えてください。)
(挿入とコマンドラインに適用される!ようなモードもあることに注意してくださいmap!。)
この文脈での「再帰的」の意味については、以下を参照してください。
nマッピングが機能するモードの変更など、モード文字を付加します。適用可能なモードのリストのサブセットを選択できます(たとえば、「ビジュアル」のみ)、またはmap適用されない他のモードを選択できます(たとえば、「挿入」)。
使用するhelp map-modesと、マッピングが適用されるモードを制御する方法を説明するいくつかの表が表示されます。
モード文字:
n:通常のみv:ビジュアルおよび選択o:オペレーター保留x:視覚のみs:選択のみi:挿入c: コマンドラインl:挿入、コマンドライン、regexp-search(およびその他。総称して "Lang-Arg"疑似モード)「再帰的」とは、マッピングが結果に展開されてから、結果が別の結果に展開されるということです。
次のいずれかに該当する場合、展開は停止します。
その時点で、最終結果のVimのデフォルトの「意味」が適用/実行されます。
「非再帰的」とは、マッピングが1度だけ展開され、その結果が適用/実行されることを意味します。
例:
nmap K H
nnoremap H G
nnoremap G gg
上記はK、に展開しH、次にH展開しGて停止します。nnoremap展開してすぐに停止するため、停止します。の意味Gが実行されます(つまり、「最後の行にジャンプ」)。最大で1つの非再帰的マッピングが展開チェーンに適用されます(これが最後の展開になります)。
Gto のマッピングggは、を押した場合にのみ適用され、を押した場合は適用されGませんK。このマッピングは、再帰的にマッピングされたKかどうかGに関係なく、押すことに影響しません。これは、2行目が展開Kを停止させるため、3行目は使用されないためです。
mapすべてのモードではなく、通常、ビジュアル、選択、およびオペレーター保留モードにのみ適用されます。
1つの違いは、
:map するnvo==通常+(視覚+選択)+オペレーター保留:map!するic ==挿入+コマンドラインモードhelp map-modes表に記載されています。
だから:mapすべてのモードにマップされません。
すべてのモードにマッピングするには、:mapとの両方が必要:map!です。
command mode別の歴史的な名前ですnormal mode。chapt 5 vimdoc.sourceforge.net/htmldoc/intro.html#vim-modes-intro)。省略形「c」は「コマンドライン」を表します。言い換えると、デフォルトでは、挿入+コマンドラインモードでlhsをrhsにmap! lhs rhs 再帰的にマッピングします。デフォルトのオプションが〜/ .vimrcで明示的に無効にされていない限り、それは不可能です。その場合、マッピングは再帰的ではありません(お勧めできません)。remapset noremap[!]
vnoremapおよびvmapビジュアルモードとセレクトモードでの作業。ビジュアルモードでのみマッピングするには、xmapおよびを使用しxnoremapます。