Jak wyciągnąć (skopiować) pojedynczy znak, na którym spoczywa kursor?

49

Znam wiele sposobów kopiowania rzeczy:

yiw= szarpnięcie w bieżącym słowie
yaw= szarpnięcie całym słowem (zawiera spację końcową)
yy = szarpnięcie bieżącej linii
3yy= szarpnięcie trzech wierszy rozpoczynających się od bieżącego
yap= szarpnięcie wszystkich akapitów (zawiera ostatnią linię )

Mogę również usunąć lub zmienić pojedynczy znak:

x= usuń znak pod kursorem
r= zamień znak pod kursorem

Ale jak, na świecie, po prostu kopiujesz pojedynczy znak pod kursorem?

Moją motywacją jest to, że programuję w Perlu 6, a niektórzy operatorzy to znaki Unicode. Teraz używam na przykład kodu Perl 6 Config :: INI tadzika jako punktu wyjścia dla niestandardowego analizatora składni, i chciałbym skopiować tylko jeden francuski znak cudzysłowu (operator hiper) z tej linii :

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

Przydałby mi się dwuznakowy „operator Texas” hiperoperatora >>, ale pomyślałem, że wygląda to lepiej i mniej niejednoznacznie niż >>>:

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

wprowadź opis zdjęcia tutaj
wprowadź opis zdjęcia tutaj

Christopher Bottoms
źródło
1
Łatwo skomponuj operację z ruchem, jak zwykle:yl
VanLaser
@VanLaser Dobry pomysł! Myślałem, że ruch nie zadziała, ponieważ chciałem tylko tej jednej postaci. Ale twoja sugestia działa świetnie dla ASCII. Opublikuj to jako odpowiedź, a ja zagłosuję. Co ciekawe, nie działa z tym znakiem Unicode, ale wydaje się , że ytX(„ yank til X”) działa, gdy Xznak jest po prawej stronie.
Christopher Bottoms,
Zastanawiam się, czy to jedna postać, czy to Unicode, czy też nie ma dwóch znaków ukrytych / zastąpionych za pomocą concealfunkcji Vima ?
VanLaser,
@VanLaser Wydaje się, że są to dwa „znaki”.
Christopher Bottoms
BTW, jak wprowadzić »postać?
VanLaser,

Odpowiedzi:

41

Komponowanie operację yank z tak często używane „o jeden znak w prawo” ruchu powinno działać: yl.

BTW (aby skomentować komentarz OP), dla mnie »można szarpać w ten sposób, w gVim lub terminal Vim. Być może problem z kodowaniem (pliku)?

VanLaser
źródło
4
Yanking też »działa dobrze dla mnie. Używam vyszarpać pojedynczy znak. Nie jestem pewien, dlaczego raczej tego używam yl, może kiedyś miałem świadomy powód, ale teraz to tylko odruch.
jjaderberg,
3
Zawsze y<space>myślałem, że to szarpnięcie postaci pod kursorem i zamierzałem dodać ją jako odpowiedź, ale po sprawdzeniu pomocy zdaję sobie sprawę <space>i lsą takie same.
Brett Y
To miłe i pozornie jeszcze łatwiejsze do trafienia, z wyjątkiem sytuacji, gdy przestrzeń jest wykorzystywana jako lider.
VanLaser,
1
@jjaderberg Podoba mi się twój komentarz, proszę zamieść go jako odpowiedź. Dzięki!
Christopher Bottoms
1
@ brettanomyces Podoba mi się twój komentarz, proszę opublikuj go jako odpowiedź. Dzięki!
Christopher Bottoms
14

Zwykle naciskam vy( szarpnięcie wizualne ), a czasem xu( usuwam cofanie ). Ponadto, jeśli chcesz szarpnąć znak przed kursorem, zamiast lvynaciskać Xu, myślę, że to jest powód, dla którego naciskam xuna prąd. :-)

Zauważ, że Xuspowoduje, że kursor przesunie się na ten znak.

Kent
źródło
Masz na myśli hvy. Próbowałem go edytować, ale najwyraźniej poprawienie jednego znaku w poleceniu vim nie jest znaczącą zmianą, aby można go było zaakceptować.
Shahbaz
9

Najprościej wiem, jak to zrobić, xaby usunąć znak, który również umieszcza go w buforze, a następnie Pumieścić z powrotem. Następnie możesz przesuwać kursor i wklejać znak z powrotem w dowolne miejsce p(za kursorem) lub P(przed kursorem), o ile nie zmienisz bufora.

BruceK
źródło