Nota: suppongo che tu stia utilizzando il aregistro 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 displaydell'impostazione).
Non è una mappatura; quindi ha senso che :mapnon 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 :registersper 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 asde 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 :splito :tabnewe modificare il registro inserendolo lì, modificandolo e copiandolo nuovamente.
Puoi usare "apquale inserirà il testo nel buffer (dov'è il atuo 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 aregistro:
- ^ 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 :-)
Enteralla 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à.