Esta é uma solicitação bastante curiosa, pois não há "modo" para gravar uma macro. Depois de pesquisar alguns documentos, encontrei o seguinte emusr_10
Você começa movendo para o primeiro caractere da primeira linha. Em seguida, você executa os seguintes comandos:
qa Comece a gravar uma macro no registro a .
^ Mover para o início da linha.
i # include "Insira a string #include" no início da linha.
$ Mova para o final da linha.
a "Anexe as aspas duplas de caracteres (") no final da linha.
j Vá para a próxima linha.
q Pare de gravar a macro.
O destaque para mim foi a linha sobre "Iniciar a gravação de uma macro no registro a"
Como cada macro será salva em um registro por padrão, eu esperava que pudéssemos vê-lo na :reg
lista. Acontece que funciona como um encanto!
Exemplo:
No modo normal: qaisomething<Esc>
e dentro de :reg
nós vemos a entrada!
"a isomething^[
Com esse conhecimento, você poderá "espionar" os registros para confirmar que uma macro está sendo gravada (use um registro nomeado em todas as gravações [mapa q
para sempre usar o mesmo registro (ou algo parecido)]
Se você tiver problemas, avise-me e tentarei ajudá-lo (já que essa funcionalidade também é nova para mim: D)
edit
Para resolver o problema de um registro que está sendo usado durante o arranco, recomendo procurar um tipo especial de registro que você possa usar apenas para o vimL
que está escrevendo (nenhum arranco jamais estaria envolvido no registro ( "ay
))
Aqui estão algumas informações :help registers
sobre os registros disponíveis
Existem dez tipos de registradores: registradores E354
O registro sem nome ""
10 registros numerados "0 a" 9
O pequeno registro de exclusão "-
26 registra os nomes "a a" z ou "A a" Z
três registros somente leitura ":,"., "%
registro de buffer alternativo "#
o registro da expressão "=
A seleção e o descarte registram "*," + e "~
O registro do buraco negro "_
Último registro de padrão de pesquisa "/
Supondo que você tenha um registro que usará agora, o problema passa a ser "como sei quando a gravação parou?". Para cuidar do presente eu dar uma olhada no autocmd-event
para CursorHold
; a observação nos documentos de ajuda parece bastante promissora (eu tentaria descobrir como diferenciar cursorHold normal versus o evento ocioso / inexistente que ocorre quando o registro está sendo gravado para os fins da macro)
CursorHold
Quando o usuário não pressiona uma tecla durante o tempo especificado com 'updatetime'. Não é acionado novamente até que o usuário tenha pressionado uma tecla (ou seja, não dispara todos os ms de 'horário de atualização' se você deixar o Vim para fazer um café. :) Consulte | Exemplo do CursorHold | para visualizar tags. Este evento é acionado apenas no modo Normal. Não é acionado ao aguardar que um argumento de comando seja digitado ou um movimento após um operador. Durante a gravação do evento CursorHold não é acionado. | q |