Questa è una richiesta piuttosto curiosa poiché non esiste una "modalità" per la registrazione di una macro. Dopo aver esaminato alcuni documenti, ho trovato quanto segue inusr_10
Si inizia passando al primo carattere della prima riga. Successivamente si eseguono i seguenti comandi:
qa Inizia a registrare una macro nel registro a .
^ Sposta all'inizio della riga.
i # include "Inserisci la stringa #include" all'inizio della riga.
$ Sposta alla fine della riga.
a "Aggiungi le virgolette doppie (") alla fine della riga.
j Passa alla riga successiva.
q Interrompere la registrazione della macro.
La cosa straordinaria per me è stata la frase "Inizia a registrare una macro nel registro a"
Poiché ogni macro verrà salvata in un registro per impostazione predefinita, speravo che saremmo stati in grado di vederlo :reg
nell'elenco. Si scopre che funziona come un fascino!
Esempio:
In modalità normale: qaisomething<Esc>
e dentro di :reg
noi vediamo l'entrata!
"a isomething^[
Con questa conoscenza dovresti essere in grado di "spiare" i registri per confermare che una macro viene registrata (usa un registro con nome su ogni registrazione [mappa q
per usare sempre lo stesso registro (o qualcosa del genere)]
Se riscontri problemi fammi sapere e cercherò di aiutarti (dal momento che questa funzionalità è nuova anche per me: D)
modifica
Per risolvere il problema di un registro in uso durante lo yank, ti consiglio di esaminare un tipo speciale di registro che puoi usare solo per quello vimL
che stai scrivendo (nessuno yank sarebbe mai impegnato sul registro ( "ay
))
Ecco alcune informazioni dai :help registers
registri disponibili
Esistono dieci tipi di registri: registri E354
Il registro senza nome ""
10 registri numerati da "0 a" 9
Il piccolo registro di cancellazione "-
26 registri nominati da "a a" z o da "A a" Z
tre registri di sola lettura ":,"., "%
registro buffer alternativo "#
l'espressione register "=
La selezione e il drop registri "*," + e "~
Il registro del buco nero "_
Registro ultimo modello di ricerca "/
Supponendo che tu abbia un registro che intendi utilizzare ora il problema diventa "come faccio a sapere quando la registrazione è stata interrotta?". Per prendersi cura di questo mi piacerebbe prendere uno sguardo al autocmd-event
di CursorHold
; la nota nei documenti di aiuto sembra piuttosto promettente (proverei a capire come potrei differenziare il cursore normale Tenere premuto rispetto all'evento inattivo / inesistente che si verifica quando il tuo registro viene scritto ai fini della macro)
CursorHold
Quando l'utente non preme un tasto per il tempo specificato con 'updatetime'. Non riattivato fino a quando l'utente non ha premuto un tasto (ovvero non attiva ogni ms di "aggiornamento" se lasci Vim per fare un caffè. :) Vedi | CursorHold-example | per l'anteprima dei tag. Questo evento viene attivato solo in modalità Normale. Non viene attivato quando si attende la digitazione di un argomento di comando o un movimento dopo un operatore. Durante la registrazione dell'evento CursorHold non viene attivato. | Q |