O que é a gravação do Vim e como ela pode ser desativada?

761

recordingContinuo vendo a mensagem na parte inferior da minha janela do gVim 7.2.

O que é e como faço para desligá-lo?

vehomzzz
fonte
55
Para desativar a gravação do vim definitivamente, adicione map q <Nop>ao seu arquivo .vimrc.
Joey Adams
4
Não acredito que você deseja desativar a gravação! Eu mostraria um pop-up realmente irritante: "Tem certeza?" se alguém pedir para desativá-lo (ou provavelmente desejar dar opções como a atualização do Windows 10).
0xc0de
Relacionado: Como faço para sair do editor Vim?
Peter Mortensen

Respostas:

1055

Você começa a gravar q<letter> e pode terminar digitando qnovamente.

A gravação é um recurso realmente útil do Vim.

Ele grava tudo que você digita. Você pode reproduzi-lo simplesmente digitando @<letter>. Gravar pesquisa, movimento, substituição ...

Uma das melhores características do Vim IMHO.

yogsototh
fonte
109
Como visto em outros lugares, é q seguido por um registro. Uma parte muito interessante (e possivelmente não intuitiva) disso é que esses são os mesmos registros usados ​​por coisas como excluir, puxar e colocar. Isso significa que você pode puxar o texto do editor para um registro e executá-lo como um comando.
Cascabel
68
Só mais uma coisa a notar é que você pode bater qualquer número antes do @ para reproduzir a gravação que muitas vezes como (100 @ <letra>) irá desempenhar suas ações 100 vezes
Tolga E
7
Você pode adicioná-lo posteriormente, editando o registro com put / yank. Mas não sei por que você deseja ativar ou desativar a gravação como parte de uma macro. ( 'q' não afeta qualquer coisa quando digitado no modo de inserção.)
anisoptera
3
@Wade "- é chamado de registro padrão.
Cascabel 29/07
4
and how to turn offtambém foi a pergunta #
n611x007
103

Digite :h recordingpara saber mais.

                           * q *  * gravação * 
q {0-9a-zA-Z "} Grave caracteres digitados no registro {0-9a-zA-Z"}
                        (maiúsculas para acrescentar). O comando ' q ' está desativado
                        durante a execução de um registo , e ele não funciona dentro
                        um mapeamento . {Vi: sem gravação}

q                        Pára a gravação . (Nota de implementação: o ' q ' que
                        interrompe a gravação não é armazenado no registro , a menos que
                         tenha sido o resultado de um mapeamento ) {Vi: no recording}


                                                        * @ *
@ {0-9a-z ". = *} Execute o conteúdo do registro {0-9a-z". = *} [Contagem] 
                        vezes. Observe que o registro ' % ' (nome do atual
                        ) e ' # ' (nome do arquivo alternativo) não pode ser
                        usava. Para " @ = ", você será solicitado a inserir uma
                         expressão . O resultado da expressão é então
                        executado. Veja também @: |. {Vi: somente registros nomeados}
efémero
fonte
31

A digitação qinicia a gravação em macro e a gravação para quando o usuário bate qnovamente.

Como Joey Adams mencionou, para desativar a gravação, adicione a seguinte linha .vimrcno seu diretório pessoal:

map q <Nop>
mitchus
fonte
11
responda apenas sobre "como desativar" parte da pergunta. Bem, isso torna a gravação inacessível, efetivamente desativando-a - pelo menos ninguém espera que o vi tenha uma thread separada para esse código, eu acho, inclusive eu.
N611x007
25

Como já foi dito, é uma gravação macro e você a desliga com q. Aqui está um bom artigo sobre como fazer e por que é útil.

JeffH
fonte
15

Isso significa que você está no modo "gravar macro". Este modo é inserido digitando qseguido de um nome de registro e pode ser encerrado digitando qnovamente.

John Millikin
fonte
É realmente entrou pela digitação qseguido de qualquer nome de registo, que é 0-9, az, AZ, e".
ephemient
3
Na verdade, é q {0-9a-zA-Z "} - você pode gravar uma macro em qualquer registro (nomeado por dígito, letra"). Caso você realmente queira usá-lo ... você executa o conteúdo de um registro com @ <register>. Veja :help qe :help @se você estiver interessado em usá-lo.
Cascabel