Come posso strappare (copiare) il singolo carattere su cui poggia il cursore?


49

Conosco molti modi per copiare le cose:

yiw= yank nella parola corrente
yaw= yank tutta la parola (include uno spazio finale)
yy = yank la riga corrente
3yy= yank tre righe a partire da quella corrente
yap= yank tutto il paragrafo (include la nuova riga finale)

Posso anche eliminare o modificare un singolo carattere:

x= elimina il carattere sotto il cursore
r= sostituisce il carattere sotto il cursore

Ma come fai a copiare semplicemente un singolo personaggio sotto il cursore?

La mia motivazione è che sto programmando in Perl 6 e alcuni degli operatori sono personaggi Unicode. In questo momento sto usando il codice Perl 6 Config :: INI di tadzik come punto di partenza per un parser personalizzato, per esempio, e mi sarebbe piaciuto aver copiato solo quel carattere di citazione francese (un hyper operatore) da questa riga :

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

Potrei usare la versione "Texas" a due caratteri dell'hyper operator >>, ma ho pensato che fosse migliore e meno ambiguo di >>>:

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

inserisci qui la descrizione dell'immagine
inserisci qui la descrizione dell'immagine


1
Facilmente, componi l'operazione con il movimento, come al solito:yl
VanLaser,

@VanLaser Buona idea! Pensavo che il movimento non avrebbe funzionato perché volevo solo quel personaggio. Ma il tuo suggerimento funziona benissimo per ASCII. Posta quella come risposta e la voterò. È interessante notare che non funziona con questo personaggio Unicode, ma ytX(" yank til X") sembra funzionare quando Xil personaggio è sulla destra.
Christopher Bottoms,

Mi chiedo, è quel personaggio, sia esso Unicode, o non ci sono due personaggi, nascosti / sostituiti usando la concealfunzione Vim ?
VanLaser,

@VanLaser Sembra due "personaggi".
Christopher Bottoms,

A proposito, come si presenta il »personaggio?
VanLaser,

Risposte:


41

Comporre l'operazione strattone con il così spesso usato "un carattere a destra" movimento dovrebbe funzionare: yl.

A proposito (per commentare un commento OP), per me »può essere strappato in questo modo, in gVim o Vim terminale. Forse un problema di codifica (file)?


4
Yanking »funziona bene anche per me. Uso vyper strappare un singolo personaggio. Non sono sicuro del motivo per cui lo uso piuttosto che yl, forse ho avuto una ragione consapevole una volta, ma ora è solo un riflesso.
jjaderberg,

3
Ho sempre y<space>pensato che fosse il personaggio sotto il cursore e stavo per aggiungerlo come risposta, ma dopo aver verificato l'aiuto mi rendo conto <space>e lsono la stessa cosa.
Brett Y,

È bello, e apparentemente ancora più facile da colpire, tranne forse quando lo spazio è usato come leader.
VanLaser,

1
@jjaderberg Mi piace il tuo commento, per favore pubblicalo come risposta. Grazie!
Christopher Bottoms,

1
@brettanomyces Mi piace il tuo commento, per favore pubblicalo come risposta. Grazie!
Christopher Bottoms,

14

Di solito premo vy( visual yank ), a volte anche xu( elimina annulla ). Inoltre, se vuoi trascinare il carattere prima del cursore, invece di lvy, puoi premere Xu, penso che sia il motivo per cui premo xuper la corrente. :-)

Nota che, Xuil cursore si sposterà su quel carattere.


Intendi hvy. Ho provato a modificarlo, ma apparentemente correggere un carattere in un comando vim non è una modifica significativa per essere accettabile.
Shahbaz,

9

Il modo più semplice che conosco per farlo è usare xper cancellare il personaggio, che lo mette anche nel buffer, e poi Pper rimetterlo. È quindi possibile spostare il cursore e incollare il carattere nel punto desiderato p(dopo il cursore) o P(prima del cursore), purché non si cambi il buffer.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.