1445 votes

Quelle est la différence entre le reconfigurer, noremap, nnoremap et vnoremap cartographie des commandes de vim?

Quelle est la différence entre le reconfigurer, noremap, nnoremap et vnoremap cartographie des commandes de vim?

2069voto

DrAl Points 29528

remap est une option qui rend les mappages de travail de manière récursive. Par défaut il est sur et je vous recommande de le laisser comme ça. Le reste sont des commandes de mappage, décrit ci-dessous:

:map et :noremap sont récursives et non récursives versions de différentes commandes de mappage. Ce que cela signifie est que si vous ne:

:map j gg
:map Q j
:noremap W j

j sera mappé gg. Q va également être mappé ggcar j sera étendu pour le récursive de la cartographie. W sera mappé j (et non pas à l' gg) parce qu' j ne sera pas augmenté pour les non-récursive de la cartographie.

Maintenant, rappelez-vous que Vim est un éditeur modal. Il a un normal mode, visual mode et d'autres modes de transport.

Pour chacun de ces ensembles de correspondances, il y a une cartographie qui fonctionne dans des conditions normales, visuel, sélectionnez l'opérateur et des modes (:map et :noremap), qui fonctionne en mode normal (:nmap et :nnoremap), l'un en mode visuel (:vmap et :vnoremap) et ainsi de suite.

Pour plus de renseignements sur cette question, voir:

:help :map
:help :noremap
:help recursive_mapping
:help :map-modes

399voto

Kelvin Points 5810

Je pense que la documentation de vim devraient ai expliqué la signification derrière le nommage de ces commandes. Juste vous dire ce qu'ils font ne vous aide pas à se rappeler les noms.

map est la "racine" de tous les récursive de la cartographie des commandes. La racine s'applique à la "normale", "visual+select" et "opérateur en attente de" modes.

noremap est la "racine" de tous les non-récursive de la cartographie des commandes. La racine s'applique aux mêmes modes d' map.

(Noter qu'il existe également l' ! mode de map! qui s'appliquent à insérer et ligne de commande.)

Voir ci-dessous pour quoi "récursive" signifie dans ce contexte.

Ajouter un mode de lettre comme n modifier les modes de la cartographie. Il peut choisir un sous-ensemble de la liste des modes de fonctionnement (par exemple uniquement les "visuels"), ou de choisir d'autres modes d' map ne s'applique pas (par exemple, "insert").

Utiliser help map-modes vais vous montrer quelques tables qui expliquent comment contrôler les modes de la cartographie s'applique.

Mode de lettres:

  • n: normale seulement
  • v: visuel et sélectionnez
  • o: opérateur en attente de
  • x: visual seulement
  • s: sélectionnez uniquement
  • i: insérer
  • c: ligne de commande
  • l: insertion, de la ligne de commande, regexp-la recherche (et des autres. Collectivement appelés "Lang-Arg" pseudo-mode)

"Récursive" signifie que la cartographie est élargi à un résultat, alors le résultat est étendu à un autre résultat, et ainsi de suite.

L'expansion s'arrête lorsque l'un de ces est vrai:

  1. le résultat n'est plus mappé à autre chose.
  2. un non-récursive de la cartographie a été appliqué (c'est à dire le "noremap" [ou l'un de ses semblables] est la dernière extension).

À ce point, vim par défaut du "sens" de la le résultat final est appliquée/exécuté.

"Non récursif" signifie que la cartographie n'est élargi une fois, et le résultat est appliquée/exécuté.

Exemple:

 nmap K H
 nnoremap H G
 nnoremap G gg

Les causes ci-dessus K de l'étendre à d' H, alors H de l'étendre à d' G et s'arrêter. Il s'arrête à cause de l' nnoremap, qui s'étend et s'arrête immédiatement. Le sens de l' G sera exécuté (c'est à dire "aller à la dernière ligne"). Tout au plus un non-récursive de la cartographie sera jamais appliquée dans une expansion de la chaîne (il serait de la dernière extension d'arriver).

La cartographie de l' G de gg s'applique uniquement si vous appuyez sur G, mais pas si vous appuyez sur K. Cela est vrai indépendamment du fait que G a été cartographié de manière récursive ou non, puisque c'est la ligne 2 qui a provoqué l'expansion de l' K pour l'arrêter.

78voto

Benoit Points 35553

Attention, vnoremap et vmap Visuelle ET Sélectionnez le mode. Pour avoir une cartographie uniquement en mode Visuel, utilisez xmap et xnoremap.

25voto

Ciro Santilli Points 3341

Remarque: map n'a pas la carte à tous les modes.

Citant le help map-modes tables

  • :map t nvo == normal + (visuel + select) + opérateur en attente
  • :map! t ic == insert + commande

Donc, à la carte à tous les modes, vous avez besoin d' :map et :map!.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X