Réponses:
remap
est une option qui permet aux mappages de fonctionner récursivement. Par défaut, il est activé et je vous recommande de le laisser de cette façon. Les autres sont des commandes de mappage , décrites ci-dessous:
:map
et :noremap
sont des versions récursives et non récursives des différentes commandes de mappage. Cela signifie que si vous le faites:
:map j gg
:map Q j
:noremap W j
j
sera mappé gg
. Q
sera également mappé gg
, car j
sera étendu pour le mappage récursif. W
sera mappé sur j
(et non sur gg
) car j
ne sera pas développé pour le mappage non récursif.
Souvenez-vous maintenant que Vim est un éditeur modal . Il a un mode normal , visuel mode et d'autres modes.
Pour chacun de ces ensembles de mappages, il existe un mappage qui fonctionne en modes normal, visuel, sélection et opérateur ( :map
et :noremap
), un qui fonctionne en mode normal ( :nmap
et :nnoremap
), un en mode visuel ( :vmap
et :vnoremap
) et ainsi de suite.
Pour plus d'informations à ce sujet, voir:
:help :map
:help :noremap
:help recursive_mapping
:help :map-modes
noremap
être un opposé map
. Je veux dire quelque chose qui supprime un mappage. Merci d'avoir répondu. Cela m'a clarifié
:map
, etc. ne fonctionnent pas dans tous les modes, exactement, juste tous les modes communs (en particulier, le mode normal, le mode visuel, le mode de sélection et en attente de l'opérateur). Si vous voulez qu'un mappage fonctionne en mode insertion, ligne de commande ou lang-arg, vous devez utiliser :map!
, etc. (Source: vimdoc.sourceforge.net/htmldoc/map.html#map-overview )
Je pense que la documentation de Vim aurait dû expliquer la signification du nom de ces commandes. Le simple fait de vous dire ce qu'ils font ne vous aide pas à vous souvenir des noms.
map
est la "racine" de toutes les commandes de mappage récursives. La forme racine s'applique aux modes "normal", "visuel + sélection" et "en attente de l'opérateur". (J'utilise le terme "racine" comme en linguistique .)
noremap
est la "racine" de toutes les commandes de mappage non récursives. La forme racine s'applique aux mêmes modes que map
. (Pensez au nore
préfixe pour signifier "non récursif".)
(Notez qu'il existe également des !
modes commemap!
celui-ci qui s'appliquent à l'insertion et à la ligne de commande.)
Voir ci-dessous ce que signifie "récursif" dans ce contexte.
Faire précéder une lettre de mode comme n
modifier les modes dans lesquels le mappage fonctionne. Il peut choisir un sous-ensemble de la liste des modes applicables (par exemple uniquement "visuel"), ou choisir d'autres modes qui map
ne s'appliqueraient pas (par exemple "insérer").
Utilisation help map-modes
vous montrera quelques tableaux qui expliquent comment contrôler les modes auxquels le mappage s'applique.
Lettres de mode:
n
: normal seulementv
: visuel et sélectionnezo
: en attente de l'opérateurx
: visuel uniquements
: sélectionner uniquementi
: insérerc
: ligne de commandel
: insert, ligne de commande, regexp-search (et autres. Appelé collectivement pseudo-mode "Lang-Arg")" Récursif " signifie que le mappage est étendu à un résultat, puis le résultat est étendu à un autre résultat, etc.
L'expansion s'arrête lorsque l'une d'entre elles est vraie:
À ce stade, la «signification» par défaut de Vim du résultat final est appliquée / exécutée.
" Non récursif " signifie que le mappage n'est développé qu'une seule fois et que le résultat est appliqué / exécuté.
Exemple:
nmap K H
nnoremap H G
nnoremap G gg
Ce qui précède provoque K
une expansion vers H
, puis H
une expansion vers G
et un arrêt. Il s'arrête à cause de la nnoremap
, qui se développe et s'arrête immédiatement. Le sens deG
sera exécutée (c'est-à-dire "sauter à la dernière ligne"). Au plus, un mappage non récursif sera jamais appliqué dans une chaîne d'expansion (ce serait la dernière expansion à se produire).
Le mappage de G
à gg
s'applique uniquement si vous appuyez sur G
, mais pas si vous appuyez sur K
. Ce mappage n'affecte pas la pression, K
qu'il ait G
été mappé récursivement ou non, car c'est la ligne 2 qui provoque l'arrêt de l'expansion de K
, donc la ligne 3 ne serait pas utilisée.
map
s'applique uniquement aux modes normal, visuel, sélection et en attente de l'opérateur, pas à tous les modes.
Une différence est que:
:map
fait nvo
== normal + (visuel + sélection) + opérateur en attente:map!
fait ic
== insérer + mode ligne de commandecomme indiqué sur les help map-modes
tableaux.
Donc: map
ne correspond pas à tous les modes .
Pour mapper à tous les modes, vous avez besoin des deux :map
et :map!
.
command mode
est un autre nom historique pour normal mode
savoir. chapitre 5 vimdoc.sourceforge.net/htmldoc/intro.html#vim-modes-intro ). L'abréviation «c» signifie «ligne de commande». En d'autres termes, par défaut: mappe map! lhs rhs
récursivement lhs à rhs pour les modes insert + command-LINE . C'est à moins que l' remap
option par défaut ne soit explicitement désactivée avec set noremap[!]
dans ~ / .vimrc. Dans ce cas, la cartographie ne serait pas récursive (déconseillée).
vnoremap
etvmap
travaillez en mode Visual AND Select. Pour avoir un mappage uniquement en mode visuel, utilisezxmap
etxnoremap
.