Comment puis-je copier (copier) le caractère unique sur lequel repose le curseur?

49

Je connais plusieurs façons de copier des choses:

yiw= Yank dans le mot en cours
yaw= Yank tout le mot (y compris un espace de fin)
yy = Yank la ligne en cours
3yy= yank de trois lignes commençant à la ligne en cours
yap= yank tout le paragraphe (y compris le retour à la ligne suivant)

Je peux aussi supprimer ou modifier un seul caractère:

x= efface le caractère sous le curseur
r= remplace le caractère sous le curseur

Mais comment dans le monde copiez-vous simplement un seul caractère sous le curseur?

Ma motivation est que je programme en Perl 6 et que certains opérateurs sont des caractères Unicode. Pour le moment, j'utilise le code Perl 6 Config :: INI de tadzik comme point de départ pour un analyseur personnalisé, par exemple, et j'aurais bien aimé copier uniquement ce caractère de citation français (un opérateur hyper) à partir de cette ligne :

my %hash = $<sections>».ast;

Je pourrais utiliser la version "Texas" à deux caractères de l’opérateur hyper >>, mais j’ai pensé qu’elle était meilleure et moins ambiguë que >>>:

my %hash = $<sections>>>.ast;

entrez la description de l'image ici
entrez la description de l'image ici

Christopher Bottoms
la source
1
Facilement, composez l'opération avec la motion, comme d'habitude:yl
VanLaser
@VanLaser Bonne idée! Je pensais que le mouvement ne fonctionnerait pas parce que je ne voulais que ce personnage. Mais votre suggestion fonctionne très bien pour ASCII. Postez cela comme réponse et je voterai. Fait intéressant, cela ne fonctionne pas avec ce caractère Unicode, mais ytX(" yank til X") semble fonctionner quand Xle caractère est juste à droite.
Christopher Bottoms
Je me demande si ce caractère est unique, qu’il s’agisse d’un Unicode ou si deux caractères ne sont pas masqués / remplacés à l’aide de la concealfonctionnalité Vim ?
VanLaser
@VanLaser On dirait deux "personnages".
Christopher Bottoms
BTW, comment présentez-vous le »personnage?
VanLaser

Réponses:

41

L'opération de composer avec le coup sec si souvent utilisé « un caractère à droite » mouvement devrait fonctionner: yl.

BTW (pour commenter un commentaire OP), pour moi »peut être tiré de cette manière, dans gVim ou Vim terminal. Peut-être un problème d'encodage (fichier)?

VanLaser
la source
4
Yanking »fonctionne bien pour moi aussi. J'avais l' vyhabitude de tirer un seul personnage. Je ne sais pas pourquoi je l’utilise plutôt que ylpeut-être, j’avais une raison consciente une fois, mais c’est maintenant un réflexe.
jjaderberg
3
Je l' ai toujours fait y<space>penser qu'il était Yank le caractère sous le curseur, et je vais l'ajouter comme une réponse , mais après vérification de l'aide , je me rends compte <space>et lsont la même chose.
Brett Y
C'est agréable et apparemment encore plus facile à toucher, sauf peut-être lorsque l'espace est utilisé comme chef.
VanLaser
1
@jjaderberg J'aime votre commentaire, merci de le poster en guise de réponse. Merci!
Christopher Bottoms
1
@brettanomyces J'aime votre commentaire, merci de le poster en guise de réponse. Merci!
Christopher Bottoms
14

D'habitude j'appuie vy( visuellement ), parfois xu( supprime défait ) aussi. De plus, si vous voulez tirer le caractère devant votre curseur, lvyvous pouvez appuyer sur Xu, mais c'est la raison pour laquelle j'appuie sur xule courant. :-)

Notez que, Xuvotre curseur se déplacera sur ce caractère.

Kent
la source
Tu veux dire hvy. J'ai essayé de le modifier, mais apparemment, corriger un caractère dans une commande vim n'est pas un changement significatif pour être acceptable.
Shahbaz
9

Le moyen le plus simple que je connaisse est de xsupprimer le caractère, qui le place également dans le tampon, puis Pde le remettre. Vous pouvez ensuite déplacer le curseur et coller le caractère où vous le souhaitez avec p(après le curseur) ou P(avant le curseur), tant que vous ne modifiez pas le tampon.

BruceK
la source