Lorsque nous sommes en mode insertion dans Vim: p>
où Et nous revenons en mode normal, le curseur va une position à gauche: p>
Y a-t-il un avantage de cela? P> foo b [a] r code> p>
[] code> dénote la position du curseur p>
foo [b] ar code> p>
5 Réponses :
Je ne vois pas un avantage direct sur seulement taper Le mouvement observé à gauche est un produit latéral d'une convention dans VIM - laissez toujours un mode d'insertion «à gauche» - que je trouve très pratique. p>
pratique, car il existe de nombreuses façons d'entrer en mode insertion et, après avoir effectué certaines insertions, je me soucie de savoir comment sortir de la manière dont je suis entré en mode insertion. P>
Il existe des moyens de changer ce comportement, cf. Ces postes SE: P>
h code>. p>
Cela pourrait être parce que vous n'êtes pas autorisé à déplacer le curseur dans la zone écrite, par exemple, la barre [] doit devenir BA [R] lorsqu'il n'est pas en mode d'insertion, mais vous avez raison, il n'a pas besoin d'arriver toujours p>
@Jan Changer de ligne est toujours un changement valide dans le document lorsque vous échappez à l'insertion-mode, le curseur recule du caractère suivant à la nouvelle ligne qui ne fait aucune différence. par exemple de [] à [\ n] qui signifie nouvelle ligne (donc cela n'échappe pas à la nouvelle ligne)
Eh bien, la convention est Vim est différente de ce que nous sommes habitués. Voir, par exemple, comment la pâte Et où est le curseur situé à la fin de la pâte code> code>? Il est situé un personnage avant la fin du nouveau texte! Donc, si vous voulez continuer à écrire après le texte, vous devez passer à droite, puis appuyez sur Vous devez simplement passer à penser que le curseur réel est un caractère à droite (ou en bas) que celui que vous voyez. C'est la convention Vim. P>
Si vous commencez à utiliser Quelques mots supplémentaires pour répondre à votre question (plutôt que de vous aider à faire face au comportement) p>
La caractéristique la plus importante de VIM est la cohérence du comportement. L'objectif est de vous permettre de savoir exactement ce qui va se passer sans même regarder l'écran. P>
Donc, lorsque vous quittez En raison de la nécessité de cohérence - si cela ne peut parfois pas être après le texte inséré, il ne faut jamais être là. Sinon, si vous tapez sans regarder l'écran, vous ne savez pas où le curseur sera - vous devrez regarder et vérifier! P>
Beaucoup de comportements de Vim peuvent être expliqués comme ceci: pourquoi "^ 'est-ce que" ^' vous donne-t-il au premier personnage et non à un avant-avant-première? (de sorte que Coller par défaut code> fonctionne. Si vous appuyez sur P CODE> - Le texte timbre apparaît après le curseur au lieu du curseur comme nous nous habituons. p>
i code>! P>
A code> / o code> Pour saisir le mode insertion par défaut au lieu de i code> / o code>, Cela pourrait vous aider à faire cela. Il suffit de transmettre votre pensée afin que a code> est la valeur par défaut, puis la pâte et l'emplacement du curseur en sortie insert code>, et beaucoup d'autres choses auront plus de sens. p>
Insérer le mode CODE>, où le curseur doit-il être? Il ne peut pas em> après le texte, car si le texte se termine à la fin de la ligne, le curseur ne peut pas y arriver! (ne peut pas être après em> fin de ligne). Idem pour coller code> - Si vous collez à la fin d'une ligne, le curseur résultant ne peut pas être après le texte inséré!. P>
a code> fonctionnerait pour insérer, comme s'il le fait avec coller code>, $ code> etc.) car si le premier caractère est au début de La ligne - vous ne pouvez pas aller "un avant". Et vous voulez être cohérent. P>
du Vim FAQ :
10.2. In insert mode, when I press the <Esc> key to go to command mode, the cursor moves one character to the left (except when the cursor is on the first character of the line). Is it possible to change this behavior to keep the cursor at the same column? No. It is not possible to change this behavior. The cursor is *always* positioned on a valid character (unless you have virtual-edit mode enabled). So, if you are appending text to the end of a line, when you return to command mode the cursor *must* drop back onto the last character you typed. For consistency sake, the cursor drops back everywhere, even if you are in the middle of a line. You can use the CTRL-O command in insert mode to execute a single ex command and return back to insert mode without moving the cursor column.
Je ne pense pas, c'est une bonne argumentation pour cette interaction de i code> et i code> n'est pas le moyen prévu de "annoncer le texte à une ligne". (2): revenir à "Toujours" sur un caractère valide n'est pas vrai, par exemple lorsqu'il est situé au début d'une ligne (éventuellement vide).
@Benj 'Non. Il n'est pas possible de changer ce comportement. Pourquoi Wiki dit-il que ce n'est pas possible, c'est parfaitement possible. Il suffit d'ajouter ceci à votre VIMRD. inoremap
@saga Essayez de faire cela lorsque vous êtes sur le premier personnage de la ligne et vous trouverez que c'est un peu frustrant.
Votre «état» initial est faux, c'est ce que vous obtenez en mode insertion: en mode insertion, le curseur est entre les caractères em> pendant qu'il est sur em> un caractère en mode normal. Lorsque vous laissez un mode insertion, le curseur a em> pour être sur un caractère: quel personnage pourrait-il être? Celui de gauche du curseur de mode insertion ou celui de droite? Comment Vim est-il censé décider de quel côté est le bon? P> Un indice serait la commande utilisée pour entrer en mode insertion: laissant le mode insertion après Quoi qu'il en soit, le mode Insérer est destiné à insérer du texte exclusivement em>. fait beaucoup plus de sens que: p> n'est-ce pas? P > p> i code> pourrait probablement laisser le curseur sur Le côté gauche et A code> pourraient probablement laisser tomber sur le côté droit. Mais, quel serait le point d'avoir le curseur sur le personnage qui est à droite du dernier caractère que nous avons tapé? P> i A
Cela n'a pas plus de sens, pas pour moi
@theonlygusti Lorsque vous quittez le mode Insertion, le curseur est positionné au dernier caractère que vous avez entré.
@saga mais je ne pense pas que cela devrait être, à moins que ce soit la fin d'une ligne. Je me sens comme le curseur doit être positionné, bien, le curseur
@theonlygusti Supposons que vous souhaitiez ajouter Nom: myName code> à une chaîne et myName code> est dans un registre. Étant donné que le curseur est placé au dernier caractère entré, vous pouvez simplement taper nom: code>, appuyez sur Echap et copiez le contenu avec p code>. Si le curseur se comporte comme si vous le dites, vous devrez le déplacer un personnage avant de coller le registre. Il deviendra intuitif une fois que vous l'essayerez. (On peut dire que Vim aussi ;-)
BTW, vous pouvez obtenir le comportement souhaité en ajoutant ceci à votre VIMRC: inoremap
@saga Dans ce cas, vous pouvez simplement utiliser p code>
Quel est "un tel état"? Insérer le mode?
@Marcb Oui, Mode Insérer
Pourquoi cette question a-t-elle été marquée «duplicata», quand il demande clairement à propos de laissant b> le mode insertion, alors que la "droite" question pose sur entrant b> le mode insertion?