6 votes

Le mode '(insert) VISUAL' de Vim?

Le mode "(insert) VISUAL" peut être activé en appuyant sur CTRL+O, v à partir du mode insertion. Cela active le mode visuel, mais est affiché comme "(insert) VISUAL" à l'intérieur de vim, et en appuyant sur Esc depuis ce mode vous ramène en mode insertion, et non en mode normal. Le mode "(insert) VISUAL" est également activé en utilisant les touches fléchées shiftées à partir du mode insertion.

Deux questions connexes :

  1. Il ne semble pas y avoir beaucoup de documentation sur ce mode spécial. Existe-t-il un moyen facile de rechercher des informations à ce sujet ? (note : je suis conscient de ce que fait normalement CTRL+O. L'interaction avec le mode visuel semble être spéciale. Le premier paragraphe était le moyen le plus simple de faire référence à ce qu'est ce mode en premier lieu, car je ne connais pas de nom recherchable pour cela.)

  2. Comment écrivez-vous des vmap mappings de manière fiable ? Notamment, y a-t-il un moyen constant de quitter le mode visuel et de se retrouver, par exemple, en mode normal ? Ou de manière constante se retrouver en mode insertion ?

14voto

romainl Points 55506

Dans le mode insertion, vous permet d'exécuter des commandes du mode normal sans quitter le mode insertion. Vim essaie d'indiquer le nouvel état avec (insert). Comme vous êtes maintenant temporairement dans le mode normal, en appuyant sur v, vous basculerez en mode visuel et Vim essaie à nouveau d'indiquer le nouvel état avec (insert) VISUEL. Vim se trouve dans cet état uniquement à cause de la séquence des commandes que vous avez effectuées et, comme d'autres l'ont souligné, ce comportement est documenté. À ce stade, il est normal et attendu que vous ramène en mode insertion puisque c'est votre mode d'origine.

Quelqu'un ayant une compréhension plus profonde de Vim que moi pourrait vous dire s'il existe un moyen fiable de passer du mode insertion au mode normal -> (normal) -> visuel, mais je dirais que toute cette idée me semble louche.

L'utilisation appropriée est la suivante :

  1. faire des choses en mode normal
  2. entrer en mode insertion pour "insérer" quelque chose
  3. sortir du mode insertion pour revenir en mode normal
  4. faire plus de choses en mode normal
  5. entrer en mode visuel
  6. faire des choses en mode visuel
  7. sortir du mode visuel pour revenir en mode normal
  8. etc.

En gros, vous ne devriez pas être à plus d'un du mode normal.

Je ne peux pas imaginer un scénario où utiliser v après aurait du sens.

La meilleure et la plus recommandée façon d'utiliser Vim est de rester le moins possible en dehors du mode insertion. Utiliser pour éviter de quitter le mode insertion est une stratégie très médiocre. Je ne sais pas si c'est ce que vous faites, mais si c'est le cas, vous devriez reconsidérer cette approche dès que possible.

Mais je soupçonne que vous essayez de faire autre chose que vous, d'une manière ou d'une autre, avez pensé que nous n'avions pas besoin de savoir.

6voto

ZyX Points 26516

Concernant la deuxième question : vous pouvez passer en mode normal à partir de n'importe quel autre en utilisant . Il n'existe pas de commandes pour passer de manière fiable aux modes visuel ou insertion de cette manière, mais si vous avez seulement besoin de passer toujours en mode normal après le mode visuel, cela est suffisant. Notez que la plupart des mappings du mode visuel fonctionnent en mode spécial iv sans modifications.

2voto

Conner Points 10373

Il est documenté à :h Operator-pending et juste en dessous à :h mode-switching. Les mappages pour le mode visuel fonctionneront également pour le mode (insertion) visuel. Consultez :h map-modes pour une révision des mappages de mode. vmap mappera à la fois pour les modes visuel et sélection, xmap mappera uniquement pour le mode visuel mais pas pour le mode sélection, et smap mappera uniquement pour le mode sélection mais pas pour le mode visuel. En général, vous devriez utiliser les versions noremap de ces commandes de mappage pour éviter tout comportement inattendu.

0voto

FDinoff Points 13897

Pour la première question.

CTRL+O en mode insertion exécute une commande et revient ensuite en mode insertion. Voir :h i_CTRL-O.

Pour la deuxième question.

Je ne pense pas qu'il y ait un moyen fiable de passer d'un mode à un autre. Le moyen le plus fiable, à mon avis, est de commencer dans le mode dans lequel vous voulez terminer.

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