position du curseur après collage dans vi / vim

11

Une chose qui m'a toujours dérangé dans vi / vim :

Si je "tire" (alias "copier") du texte, puis je me déplace à un autre endroit du fichier et je fais un "collage", mon curseur reste au début du texte que je viens de coller. C'est différent de ce que font la plupart des éditeurs modernes, qui est de placer le curseur à la fin du texte que j'ai collé.

Par exemple, en supposant que le "tampon de copie" contient le mot "génial" que je veux coller après le mot "an" dans la phrase:

This is an editor

Dans, par exemple, gedit , après le collage:

This is an awesome editor
                  ^ Cursor is here

Dans vi :

This is an awesome editor
           ^ Cursor is here

Puis-je changer vi pour agir comme (par exemple) gedit à cet égard?

JoelFan
la source
Ce qui est encore plus bizarre, dans la liste avec ma version de Vim: si le texte tiré s'étend sur plus d'une ligne, alors le curseur est laissé au début du texte collé, sinon il est laissé à la fin du texte collé.
Alexey
désolé, au moins
Alexey

Réponses:

12

Dans vim, utilisez gpet gPau lieu de pet Ppour laisser le curseur après le texte collé. Si vous souhaitez échanger les liaisons, mettez les lignes suivantes dans votre .vimrc:

noremap p gp
noremap P gP
noremap gp p
noremap gP P

Curieusement, dans vim, pet Plaissez le curseur sur le dernier caractère collé pour un tampon de caractères, même en mode compatible.

Je ne sais pas comment changer cela dans d'autres versions de vi.

Gilles 'SO- arrête d'être méchant'
la source
1
Je pense que "vi" est généralement "vim" dans la plupart des distributions, non?
JoelFan
@JoelFan: La plupart des distributions Linux non intégrées, peut-être. Ailleurs, non. Si vous êtes d'accord avec une solution uniquement pour vim, ne mettez pas vi dans le jeu: 99% de la configurabilité de vim n'est pas dans vi de base.
Gilles 'SO- arrête d'être méchant'
Qu'en est-il de "nvi"? Je suis confus à propos de tous les différents vi. Je suis surtout intéressé par Debian et Ubuntu
JoelFan
1
@JoelFan: nvi est un vi assez basique, il vise la compatibilité avec l'implémentation d'origine et rien de plus. Si vous êtes uniquement intéressé par les installations de bureau ou les serveurs sur lesquels vous pouvez installer des programmes facilement, vous pouvez supposer que vim est disponible. La familiarité avec les implémentations vi inférieures n'est utile que sur les serveurs verrouillés et les appareils intégrés.
Gilles 'SO- arrête d'être méchant'
1
J'utilise "vi" principalement pour les serveurs, où je peux installer des choses, oui
JoelFan
0

Je suis presque sûr que c'est par conception. Si vous collez en utilisant "p" (minuscule P), il est censé coller après la position ou la ligne actuelle. Cependant, si vous collez à l'aide de "P" (P majuscule), il est collé avant la position ou la ligne actuelle. Si votre comportement souhaité est d'avoir le curseur à la fin de votre texte nouvellement collé, essayez de prendre l'habitude d'utiliser "P" au lieu de "p".

Je parie que si vous avez creusé assez profondément, vous pourriez trouver une recette vim à mettre dans votre .vimrc qui déplacerait toujours le curseur à la fin de votre pâte, même si vous utilisez "p".

SethG
la source
2
Plaisse le curseur au début du texte collé dans vi (au moins dans nvi et par POSIX).
Gilles 'SO- arrête d'être méchant'
p et P affectent la position de l'insert par rapport au texte environnant. ils n'affectent pas la position du curseur lui-même qui est toujours à la même position par rapport au texte inséré.
eMBee