回答:
remap
あるオプションのマッピングは再帰的に動作します。デフォルトではオンになっているので、そのままにしておくことをお勧めします。残りは、以下で説明するマッピングコマンドです。
:map
そして、:noremap
されている再帰と非再帰的な様々なマッピングのコマンドのバージョン。つまり、次のことを行うと、
:map j gg
:map Q j
:noremap W j
j
にマッピングされgg
ます。Q
は再帰マッピングのために展開されるため、にもマッピングされます。は非再帰的マッピング用に展開されないため、にはマッピングされます(にはマッピングされません)。gg
j
W
j
gg
j
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つの非再帰的マッピングが展開チェーンに適用されます(これが最後の展開になります)。
G
to のマッピング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で明示的に無効にされていない限り、それは不可能です。その場合、マッピングは再帰的ではありません(お勧めできません)。remap
set noremap[!]
vnoremap
およびvmap
ビジュアルモードとセレクトモードでの作業。ビジュアルモードでのみマッピングするには、xmap
およびを使用しxnoremap
ます。