Dicas de Vim > cleiver.com

Dicas de Vim

22.08.2008 | Linux
Tags: , ,

Desde que comecei o curso de linux, to meio viciado nesse editor. Antigamente só sabia entrar e sair dele, mas agora que peguei o jeito, não custa nada compartilhar, muita gente ainda pode se enrolar um bocado. ;P

Para copiar e colar linhas no vi, basta estar no modo de comando (pressione ESC caso esteja em dúvida) e ir para a linha desejada:

yy = Copia toda a linha
3yy = Copia 3 linhas a partir do cursor
p = Cola a linha copiada
5p = Cola cinco vezes a linha copiada
dd = Recorta a linha
4dd = Recorta quatro linhas a partir do cursor

Caso você deseje copiar apenas uma palavra ou trecho da linha, basta entrar no modo visual. Para isso, vá para o primeiro caractere do trecho desejado e pressione a tecla v, depois, mova o cursor com as teclas de direção para selecionar o que você deseja. Após selecionar, basta digitar y para copiar, d para recortar e p para colar.

Caso tenha feito alguma coisa errada, basta pressionar u para cada ação que você deseja desfazer. Caso tenha desfeito mais ações que o necessário, basta refazer, pressionando ctrl+r.

Tá fazendo um script e deu erro na linha 1387 e tá cansado de pressionar a seta pra baixo e pensar na vida? Digite :1387 e seja feliz. Ou então você quer ir direto pra última linha do arquivo mas não quer ter que digitar :10000000 e ainda correr o risco de não funcionar, basta pressionar shift+g.

Se o que você quer é procurar por uma palavra específica no arquivo, basta digitar / seguido da palavra desejada (sem o :), por exemplo: /todo. Se a ocorrência encontrada não for a que você queria, basta ir pressionando n até chegar na que você quiser, se na pressa você passou direto pela palavra, basta pressionar shift+n que o vi vai voltando para ocorrências anteriores.

Mas se ao invés de somente localizar, você quiser substituir a ocorrência de uma palavra, basta executar o seguinte comando (supondo que você queira substituir “todo” por “done”): :s/todo/done/. Sem espaços e com a barra no final! Mas esse comando funciona somente na linha onde está o cursor. para substituir todas as ocorrências do texto, basta digitar :%s/todo/done/g. Esse g no final do comando que diz que vai trocar todas as ocorrências. Sem ele, o vi troca somente a primeira ocorrência de cada linha. Resumindo então: Sem o sinal de %, troca somente na linha onde está o cursor. Com o sinal de %, troca em todo o arquivo. Sem o g no final troca somente a primeira ocorrência de cada linha. Com o g no final, troca todas as ocorrências de cada linha.

Se por algum motivo, no meio da edição do arquivo você precisar executar algum comando no shell do linux, mas não quer fechar o editor nem usar outro terminal, basta digitar o comando desejado dessa forma, por exemplo: :!date. O vi vai executar o comando e voltar para a edição do arquivo como se nada tivesse acontecido. Caso você queira colocar o resultado do comando dentro do seu arquivo, basta colocar o cursor no local desejado para a inserção e digitar seu comando com um ponto antes da exclamação, assim: :.!date. O vi executará o comando date e escreverá a data atual dentro do seu arquivo.

Agora vamos supor que você queira copiar o conteúdo de um outro arquivo dentro do seu. Digite /split arquivo. Por exemplo, :split /etc/motd. O vi vai dividir a tela em dois blocos e você poderá editar os dois arquivos normalmente. para trocar entre os paineis, basta pressionar ctrl+ww. Você pode abrir vários arquivos dessa forma, mas a área de edição de cada um vai diminuindo, claro. :P

Caso você esteja pensando “Pô, bem que o vi poderia ter abas também, todo mundo tem abas hoje em dia!” fique feliz, desde a versão 7 o vi possui esse recurso. Para abrir uma nova aba, basta digitar :tabnew arquivo. Para navegar através delas, basta usar os comandos: :tabnext, :tabprev, :tabfirst, :tablast ou :tab n, onde n é o número da tab desejada.

De forma similar, quando você abrir vários arquivos simultâneos no vi ($vi arq1 arq2 arq3, por exemplo), para navegar entre esses arquivos basta usar os comandos: :next, :previous, :first, :last ou :3next ou :5prev. Nos dois últimos casos, o vi vai pular tantos arquivos quanto for o valor do número antes do comando (se tiver isso tudo de arquivo, claro).

E finalmente para sair do editor, além do famigerado :wq para salvar e sair, você também pode pressionar shift+zz.

Dois comandos que eu aconselho colocar direto no arquivo de configuração do Vim para ele já abrir com essas funcionalidades é o syntax highlight e a numeração de linhas.

Para fazer isso, basta editar o arquivo /etc/vim/vimrc e descomentar a linha syntax on para habilitar o highlight e incluir o comando set number para numerar as linhas.

Além desses, o Vim possui milhares de outros comandos e formas de fazer essas mesmas ações que falei aqui. Para saber mais, basta ler a documentação do programa.

Nenhum post relacionado.

6 Comentários

  1. Rafael Dx7

    show de bola!!!

    mas eu prefiro o textmate! :P

  2. Pedro Mendes

    Ae, humilhou meu post falando das abas :-(
    Sensacional o post, sua mãe deve estar orgulhosa!

  3. Pedro Mendes

    Rafael e seu textmate…. Textmate é para moças, viva ao vim!

  4. Cleiver

    Minha mãe me ama mesmo eu não tendo sido médico! =~

  5. Rafael Dx7

    Textmate é pra moças! Mas algum cara tem que ensiná-las a usá-lo! rs

  6. Sérgio Luiz Araújo Silva

    Contribua com o livro em português sobre o vim!
    http://code.google.com/p/vimbook

    Sua ajuda irá contribuir para o defloramento dessas moças!

Faça um comentário!

Você deve estar logado para comentar.