Nota: suppongo che tu stia utilizzando il a
registro per l'intera risposta, ma puoi utilizzare qualsiasi registro
Nota2: <1b>
è Esc; puoi inserirlo con Ctrl+ve poi Esc. Potrebbe anche apparire come ^[
(a seconda display
dell'impostazione).
Non è una mappatura; quindi ha senso che :map
non funzioni. È registrato in un registro e puoi vederlo e modificarlo come qualsiasi altro registro.
Tutto ciò che qfa è "cancella questo registro e accoda qualsiasi sequenza di tasti" , e tutto ciò che @fa è "valuta un registro come comandi" .
Non c'è niente di "diverso" in una macro, puoi invocare qualsiasi registro come macro.
Per visualizzare basta usare:
:echo @a
Proprio come qualsiasi registro.
È inoltre possibile utilizzare :registers
per visualizzare tutti i registri.
Per modificare puoi fare diverse cose:
Il modo più semplice in cui ti devi assegnare @a
, in questo modo:
:let @a='iasd<1b>'
Ciò avvierà la modalità di inserimento ( i
), l'inserimento asd
e il ritorno alla modalità normale.
Questo non è molto utile per modifiche estese; potresti usare le funzioni (es. substitute()
) o forse aggiungere qualcosa ( :let @a=@a . 'more'
), ma cambiare qualcosa nel mezzo non è così facile.
Ho scoperto che il modo migliore per farlo è avviare un nuovo buffer con :split
o :tabnew
e modificare il registro inserendolo lì, modificandolo e copiandolo nuovamente.
Puoi usare "apquale inserirà il testo nel buffer (dov'è il a
tuo registro):
iThis is A<1b>
Ora posso solo cambiare la linea in forse:
iThis is an edited macro<1b>
Quindi faccio ^v$"ayper strappare (copiare) questa riga al a
registro:
- ^ per l'inizio della linea
- v per la modalità visiva
- $ per fine linea
- "ay tira la selezione per registrarti
a
Se lo desideri, puoi farlo senza usare la modalità visiva con ^"ay$.
Ora puoi usare @a, come se questo fosse ciò che hai registrato in origine.
Puoi anche solo usare yy, e quindi @", che è un po 'più veloce. Questo copierà anche la nuova riga finale, e potrebbe causare effetti collaterali ... Un altro modo per renderlo più veloce è usare una macro :-)
Enter
alla fine della registrazione. In molti casi questo potrebbe essere benigno, ma in scenari in cui hai accuratamente creato la posizione del cursore alla fine della registrazione, ciò può influire sulla ripetibilità.