come aggiungere righe a un registro vim senza sovrascriverlo


85

Vorrei strappare una riga in un registro: "{register}yma senza sovrascrivere ciò che era precedentemente nel registro. Spesso ho bisogno di copiare righe non contigue in un registro, e mi piacerebbe usare a volte i registri come uno stack.

Esempio:

line1
line2
line3

Voglio copiare line1, posizionando il cursore su di esso e inserendo "ay, quindi vado avanti line3e faccio "ay. Quindi, quando lo farò "ap, ENTRAMBI line1E line3verranno incollati.

È possibile senza plugin? con i plugin?


Ottimo per creare un rapido elenco di definizioni all'inizio del file.
Joe McGrath

Risposte:


133

Se si desidera aggiungere a un registro denominato, utilizzare il carattere maiuscolo corrispondente. ie Nel tuo esempio:

"ayy
"Ayy
"ap

11
C'è un modo possibile per aggiungere a un registro senza nome? (il principale)
Zaffy


Per salvare le persone che visitano una pagina ^^, IMO è più facile usare il registro denominato. Quando digiti "a think", usando register a ... '"A' aggiungendo per registrare a '
Rob Kielty

12

Solo per espandere la risposta di MarkB, sapevi che puoi anche usare i marcatori per selezionare un blocco di testo per il tuo yank?

Vai alla prima riga del blocco che vuoi estrarre e inserisci il comando mark dopo aver selezionato una lettera come marker, es

ma  (entered in command mode, i.e. no colon)

quindi vai in fondo al blocco che vuoi strappare e inserisci il comando:

:'a,.ya A

questo comando significa prendere il blocco di testo dalla riga contenente il mio marker chiamato a fino alla riga corrente e trascinarlo nel buffer a. Si applicano le stesse regole di MarkB menzionate, usa il nome del buffer in minuscolo per sovrascrivere il buffer. Usa il nome del buffer in maiuscolo da aggiungere al buffer. Quindi in questo caso questo verrà aggiunto al contenuto del buffer a.

NB La 'a' usata per il tuo marker non ha nulla a che fare con la 'a' usata per selezionare il tuo registro. (AFAIK ma YMMV)

BTW 'a (apostrofo a) si riferisce alla riga contenente il marcatore a. `a (backquote a) si riferisce al carattere sotto il cursore quando hai inserito ma.

`ad`b (also entered in command mode)

è utile perché cancellerà il testo tra il carattere contrassegnato con il pennarello a fino al carattere appena prima del carattere che hai contrassegnato con il pennarello b.


'a, .ya A funziona ma quando provo con il segno di spunta davanti a -> `a si dice: E492: Non è un comando di editor:` a, .ya A. Avrebbe aiutato a non usare una lettera altra di una per il pennarello nell'esempio, quindi è chiaro quale lettera è quale cosa :)
justin w
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.