Obra: Vim/Repetição de comandos
Matéria: Português
Nível: médio
repetição de comandos para repetir última edição saia do modo de inserção pressione ponto para inserir um texto que deve ser repetido várias vezes posicione cursor no local desejado digite número de repetições entre em modo de inserção digite texto saia do modo de inserção tecle esc por exemplo se você quiser inserir oitenta traços numa linha em vez de digitar um por um você pode digitar comando veja passo passo que aconteceu repetir vezes comando seguir entrar no modo de inserção insere caractere finaliza inserção repetindo digitação de uma linha para repetir linha acima modo insert use control para repetir linha abaixo modo insert control para copiar linha atual yy para colar linha copiada para repetir uma linha completa control control atalho acima só funcionará para uma linha semelhante experimente digitar uma linha qualquer com algum conteúdo uma linha veja resultado registradores guardando trechos em gavetas os registradores são uma espécie de área de transferência múltipla você deve estar em modo normal então digitar uma aspa dupla uma das letras do alfabeto em seguida uma ação por exemplo yy copiar dd apagar depois mova cursor para linha desejada cole com rp onde corresponde ao registrador para onde trecho foi copiado exemplo explicação ayy copia linha atual para registrador ap cola conteúdo do registrador abaixo bdd apaga linha atual para registrador macros gravando uma seqüência de comandos imagine que você tem seguinte trecho de código stdio fcntl unistd stdlib quer que ele fique assim include stdio include fcntl include unistd include stdlib não podemos simplesmente executar repetidas vezes um comando do vim pois precisamos incluir texto tanto no começo quanto no fim da linha necessário mais de um comando para isso aí que entram as macros podemos gravar até macros já que elas são guardadas nos registros do vim que são identificados pelas letras do alfabeto para começar gravar uma macro no registro digitamos qa no modo normal tudo que for digitado partir daí será gravado no registro até que terminemos com comando novamente no modo normal assim podemos solucionar nosso problema qa inicia gravação da macro no registro ou qualquer outro escolha move para começo da linha include insere string include no começo da linha inicia modo insert no final da linha coloca aspas sai com vai para próxima linha para gravação da macro agora você só precisa posicionar cursor na primeira letra de uma linha como esta stdio executar macro do registro quantas vezes for necessário usando comando para executar quatro vezes digite este comando executa quatro vezes conteúdo do registro caso tenha executado macro uma vez pode repeti la com comando repetindo substituições se você fizer uma substituição em um intervalo como abaixo isto aquilo pode repetir esta substituição em qualquer linha que estiver apenas usando este símbolo vim substituirá na linha corrente isto por aquilo repetindo comandos atalho acima repete último comando no próprio modo de comandos script
por aquilo repetindo comandos atalho acima repete último comando no próprio modo de comandos scripts vim usando um script para modificar um nome em vários arquivos crie um arquivo chamado subs vim contendo os comandos de substituição comando de salvamento wq wq para executar um script digite comando source nome_do_script vim usando comando bufdo com comando bufdo podemos executar um comando em um conjunto de arquivos de forma rápida no exemplo seguir abriremos todos os arquivos html do diretório atual efetuarei uma substituição em seguida salvo todos vim html bufdo bgcolor white bgcolor eeeeee wall para fechar todos os arquivos faça qall comando wall salva write todos all os arquivos abertos pelo comando vim html opcionalmente você pode combinar wall qall com comando wqall que salva todos os arquivos abertos em seguida sai do vim colocando última busca em um comando observação lembre se ctrl inserindo nome do arquivo no comando inserindo último comando se preceder com você repete comando equivale acessar histórico de comandos com as setas para repetir exatamente última inserção