terça-feira, 13 de dezembro de 2011

Sobrevivendo no Vim (Parte 2)

No último post, demos uma rápida olhada no editor Vim e descobrimos como criar e salvar um documento nele, bem como se movimentar pelo texto e sair do editor. Hoje, vamos aprender mais alguns comandos de movimentação e como localizar, substituir, copiar e colar texto.




Repetindo uma ação n vezes


O Vim suporta a inserção de um número antes do comando a ser executado que informa quantas vezes este será repetido. Por exemplo: ao pressionar j no modo de comando, você desce o cursor uma linha; mas se você pressionar nj, você vai descer o cursor n linhas. Não digite : antes do número n. Abaixo estão alguns exemplos:




  • 2j move o cursor 2 linhas para baixo;

  • 5k move o cursor 5 linhas para cima;

  • 12h move o cursor 12 caracteres para a esquerda;


Se você estiver na última linha do documento e mandar o cursor descer, o Vim emitirá um bip. Se você mandá-lo se deslocar um número maior de linhas ou de colunas existente, ele irá para a primeira ou última linha ou coluna do documento ou da linha, conforme o caso.

Apesar de banal, o comando de repetições, que pode ser utilizado em combinação com quase qualquer outro comando, é muito poderoso. Por exemplo: a maioria dos códigos-fonte tem textos até a octogésima coluna. Se você quiser criar uma linha de comentários feita de 80 barras para separar duas funções do seu código (////) você não precisa ficar contando quantas barras já digitou: basta, no modo de comandos, escrever 80i/ e pressionar Esc!

Início e fim do documento


Os arrastadores de mouse costumam utilizar as barras de rolagem ou as combinações Ctrl + Home ou Ctrl + End para ir respectivamente para o início ou o fim de um documento. Esqueça! No Vim a coisa é muito mais simples.


Em qualquer lugar que você esteja, para ir ao início do documento basta digitar gg no modo de comandos. Se desejar ir ao final do arquivo digite G maiúsculo ou Shift+g caso o caps lock não esteja ligado.



Mais comandos de movimentação pelo texto


Ficar pressionando h,j,k e l pode fazê-lo perder muito tempo caso você precise se deslocar para uma localização específica do texto. Felizmente há métodos mais rápidos.


O comando gg também serve para ir diretamente a uma determinada linha. Por exemplo: se independente da posição na qual você esteja você precisa ir para a linha 78, basta digitar 78gg e voilá! Outra maneira de ir para uma determinada linha é digitar :n no modo de comando onde n é o número da linha desejada.


O Vim utiliza muitos dos conceitos de expressões regulares e, assim, é interessante que você dê uma olhadinha neles para melhor utilizar o editor. Dois comandos onde estes conceitos são gritantes são os de se movimentar para o início e para o fim da linha atual: digite $ (ou shift + 4) para ir ao último caractere da linha onde está o cursor e ^para ir ao primeiro caractere desta linha (nota: dependendo da configuração de seu teclado, talvez seja necessário pressionar ^duas vezes; caso não funcione, experimente pressionar ~duas vezes para obter o efeito).


O comando w move o cursor para o início da próxima palavra, ou seja, a palavra imediatamente à direita daquela sobre a qual está o cursor; e move para o fim da próxima palavra e b para o começo da palavra anterior. É possível utilizar os comandos de repetição, por exemplo: 5w moverá o cursor para o início da quinta palavra após o cursor.



Localizando e substituindo texto


Lembra que eu disse que o Vim usa vários conceitos de expressões regulares? Pois estes facilitam em muito a tarefa de buscar ou de substituir um texto.


Para buscar um texto basta digitar /texto no modo de comandos. Ao pressionar Enter, a primeira ocorrência do texto aparecerá destacada na tela. Não é necessário utilizar aspas para buscar por textos com espaços (ao menos aqui não precisou xd). Por exemplo: para buscar por Brasil, digite /Brasil .


É importante salientar que /texto busca da posição atual para o fim do documento; se quiser procurar da posição atual para o início, utilize ? ao invés de / como em ?Brasil.


Para buscar a próxima ocorrência, basta pressionar n.


A busca do Vim é, por padrão, sensível à diferença entre maiúsculas e minúsculas. Assim, buscar /amor não é o mesmo que buscar /Amor. Felizmente, para ignorar tais diferenças basta utilizar a opção c como em /camor , que buscará amor, Amor, AMOR ou quaisquer outras combinações.


A substituição de textos é similar à busca com a diferença que você usa o comando :s/antigo/novo onde antigo é a palavra que você quer substituir e novo é a palavra que tomará o lugar da original. Por exemplo: :s/Brasil/Argentina vai substituir a primeira ocorrência de Brasil no texto por Argentina.


É possível especificar um intervalo de linhas no texto no qual a substituição deve ocorrer. Assim, :1,10 s/Brasil/Argentina realiza a substituição anterior da primeira à décima linha. Você pode substituir 10 por $ para substituir até a última linha.



Desfazendo alterações


Se você fizer algo errado, não se preocupe: pressione u para desfazer sua última ação ou U para desfazer todas as ações na linha atual. Pressione Ctrl + R para refazer as ações.



Copiando e colando


Esqueça os famosos Ctrl + C, Ctrl + V e Ctrl + X, o Vim utiliza sua própria sintaxe.


Para recortar texto, utilize x ou d: eles apagam o texto atual e o colocam na memória. x apaga um caractere e d deve ser utilizado com outro comando, por exemplo: dw deleta a palavra sobre o cursor e dd a linha sobre o cursor. Obviamente você pode utilizar a repetição: 5dw deleta as 5 palavras próximas ao cursor.


Para apenas copiar o texto sem apagá-lo, utilize yy, que é o comando que copia a linha atual. Colocar um número antes de yy faz o editor copiar esse número de linhas.


Para colar o texto, posicione o cursor no local desejado e pressione p.


Por enquanto é isso; na terceira parte, vamos ver como trabalhar com mais de um arquivo ao mesmo tempo e como dividir a tela do Vim em múltiplas janelas. Até!

Nenhum comentário:

Postar um comentário