Como alterar as dimensões das janelas dentro do Vim

Ainda há bastante para escrever sobre como usar e manipular o recurso de múltiplas janelas dentro do editor de textos Vim.
O recurso é completo e extenso, mas fácil de aplicar.

Tal como os outros comandos de janelas do Vim, os comandos de redimensionamento começam com a combinação de teclas Ctrl + W ou apenas ^W (para encurtar).

Segue a lista:

  • ^W=     “tenta” equalizar as dimensões das janelas, na horizontal.
    Pode ser influenciado pelos parâmetros winheight e winwidth.
  • ^W-     reduz/diminui a altura da janela atual em uma linha.
  • ^W+     aumenta a altura da janela em uma linha.
  • ^W<     reduz a largura da janela em uma coluna.
  • ^W>     aumenta a largura da janela em uma coluna.
  • ^W|     altera as dimensões horizontais da janela atual para o maior valor possível.

Só pra lembrar, você pode acrescentar um número antes do ^W, para aplicar um valor maior ao comando.
Por exemplo, o comando 5^W- reduz a altura da janela ativa em 5 linhas, de uma vez.

Como redimensionar janelas, com comando na CLI do Vim

Também é possível usar comando CLI dentro do Vim, para controlar os tamanhos das janelas.
Use o seguinte comandos/parâmetros para reajustar as dimensões da janela ativa:


:vertical resize n

No caso, acima, n é o valor em número de colunas para o qual a janela será redimensionada na vertical.

Como repetir e desfazer ações dentro do editor Vim

Repetir e desfazer são ações corriqueiras ao editar texto.
Como o Vim funciona de um modo “pouco convencional”, ou seja, diferente de 99% dos outros editores de texto, os novatos se veem perdidos ao tentar fazer algo tão trivial, como desfazer uma edição acidental.

Sugiro a leitura do texto Como copiar, recortar e colar, para se aprofundar mais no assunto ou tirar eventuais dúvidas que fiquem após a leitura deste post.
Abra um texto de exemplo (um que você possa “estragar”) dentro do Vim e experimente as dicas que seguem.

Como repetir ações no Vim

No Vim, a tecla de comando para repetir ações (repeat) é ‘.’ (ponto).
Cada edição feita no programa é armazenada em um buffer temporário — cujo conteúdo é substituído pelas informações da próxima edição.
Ao teclar Esc e pressionar a tecla ‘.’, o Vim repetirá a última ação.
Experimente.


Ao pressionar a tecla Esc, eu saio do modo de edição e entro no modo de comando do Vim, em que posso pressionar . para repetir a última edição feita.
Ao pressionar a tecla Esc, eu saio do modo de edição e entro no modo de comando do Vim, em que posso pressionar . para repetir a última edição feita.

Para repetir ‘n’ vezes, use o comando ‘n.’ (número de vezes que deseja repetir e . ).
Por exemplo, para repetir a última ação 20 vezes, tecle ’20.’ no modo comando.

Como desfazer ações no Vim

Tão importante quanto refazer, é poder desfazer ações acidentais no editor, como apagar uma linha, seu texto inteiro etc.
No modo comando, tecle ‘u’ (undo), para desfazer a última ação.
Tal como anteriormente, também é possível indicar quantas ações deve ser desfeitas.
Basta adicionar um número ao comando ‘u’. Por exemplo ‘4u’ para desfazer as 4 últimas edições.

Tire um tempo, agora, para experimentar um pouco estas dicas. Assim fica mais fácil memorizar o aprendizado para quando ele for realmente necessário.

Opções de inicialização do editor Vim

O Vim tem inúmeras opções de inicialização.
Neste post, vamos abordar algumas das mais básicas alternativas para abrir arquivos de maneiras específicas.

Como você já sabe (como em qualquer outro editor de textos), é possível já abrir o Vim com o(s) seu(s) arquivo(s) prontos para edição (ou não).
Basta indicar o nome do arquivo na linha de comando:


vim arquivo.txt

Se você estava compilando um código de um arquivo ou rodando um script a partir de um interpretador e se deparou com uma mensagem de erro, é possível já abrir o arquivo na linha em que o interpretador/compilador indicou haver uma inconsistência:

vim +n arquivo

em que ‘n’ é o número da linha dentro do ‘arquivo’, aonde o editor irá posicionar o cursor.
Veja um exemplo mais direto:


vim +11 helloworld.py

No exemplo, acima, o Vim irá abrir o arquivo ‘helloworld.py’, com o cursor na linha 11, no modo de comando.
Veja um exemplo de como abrir o arquivo, com o cursor posicionado na última linha:


vim + helloworld.py

O padrão do editor é começar a edição na primeira linha do arquivo, se nenhum parâmetro ou opção for dada na linha de comando.
Se quiser abrir um arquivo-texto com o cursor posicionado sobre a primeira ocorrência de uma palavra ou sentença, use a opção ‘+’ seguido da string a ser encontrada e do nome do arquivo a ser aberto.
Segue um exemplo:


vim +/print helloworld.py

O comando, acima, abrirá o arquivo com o cursor sobre a primeira ocorrência (se houver) da palavra ‘print’.

Opcionalmente, você pode usar ‘-c’ (conforme recomendação do POSIX), em vez de ‘+’.

Usar a opção ‘+/’ para encontrar uma string dentro do texto, pode ser útil para ajudar a chegar a um determinado ponto do trabalho em que você o gostaria de retomar.
Por exemplo, digite ‘ZZZZ’ dentro do seu texto e, mais tarde, ao iniciar novamente o Vim, use esta mesma sequência para chegar ao ponto em que parou:

'vim +/ZZZZ nome-do-arquivo'

Como abrir um arquivo no modo somente leitura do Vim

Há basicamente 2 maneiras de abrir arquivos em read only mode ou “modo somente leitura” — no qual não é possível fazer alterações nem intencionais nem acidentais.
Este modo é muito útil para realizar a leitura de arquivos de configuração sensíveis do sistema ou ler código de algum programa — sem correr o risco de inserir um caractere ou apagar alguma coisa acidentalmente.
Use a opção ‘-R’, seguida do nome do arquivo que deseja abrir:

vim -R nome-do-arquivo

ou use o utilitário view:

view nome-do-arquivo

O view costuma ser apenas um link de sistema para o vi (com a opção ‘somente leitura’ habilitada) ou para o programa vim.basic.
Caso você mude de ideia e queira fazer alterações no arquivo, use o comando ‘:w!’ dentro editor.

Leia o artigo Como usar criptografia com o Vim para ver como abrir um arquivo em modo seguro (criptografado) e com o buffer previamente desligado.

Resumindo

A melhor forma de aprender a usar todos os macetes de um programa (como um editor de textos) é praticar.
Abra um terminal e experimente os comandos:

  • +n nome-do-arquivo — abre ‘nome-do-arquivo’ na linha ‘n’.
  • + nome-do-arquivo — abre ‘nome-do-arquivo’ na última linha.
  • +/string nome-do-arquivo — abre ‘nome-do-arquivo’ e posiciona o cursor sobre a string indicada.
  • -R nome-do-arquivo — abre no modo ‘apenas leitura’.
  • -r nome-do-arquivo — em caso de ter havido um crash, em que o Vim tenha sido interrompido acidentalmente, é possível recuperar arquivos danificados com esta opção.

Como copiar, recortar e colar no editor Vim

Copiar uma parte do texto em um arquivo, para usar em outros locais ajuda a poupar tempo e digitação.
Copiar/colar ou recortar/colar são funções existentes no Vim, que muitos novatos desconhecem.

Ambas estão ali, presentes, e são fáceis de usar.
Abra o Vim, com um texto qualquer, que você possa usar para fazer testes e experimente os exemplos que seguem.

Como recortar e colar texto no Vim

Esta função faz (re)uso de outras 2 funções do editor:

  1. os comandos de apagar uma linha, uma palavra, um caractere e
  2. o buffer (memória intermediária) do Vim, onde é guardado o conteúdo descartado.

Basicamente, a operação de recortar/colar consiste de “apagar” primeiro e, depois, recuperar o texto do buffer.

Veja 3 exemplos básicos de como apagar (recortar, neste caso) texto, no modo comando do Vim:

  • ‘dd’, recorta a linha (atual) em que o cursor se encontra
  • ‘dw’, recorta a palavra que se encontra à direita do cursor ou ‘db’, recorta a palavra à esquerda
  • ‘3d’, recorta 3 linhas inteiras

O comando ‘p’ é usado para inserir o conteúdo do buffer no texto.
Depois de recortar o que queria, basta posicionar o cursor no ponto em que deseja colar o texto “apagado” e pressionar ‘p’ — para reinserir o conteúdo do buffer.
Se quiser, é possível multiplicar a quantidade de vezes em que é reinserido.
Tecle ‘5p’, por exemplo, para inserir o conteúdo do buffer 5 vezes.

copiar e colar com o editor Vim

Como copiar e colar no editor Vim

Para copiar conteúdo, use o comando ‘y’ (yank).
Veja alguns exemplos:

  • ‘yy’, para copiar a linha atual
  • ‘yw’, para copiar a próxima palavra. Se quiser copiar as próximas 3 palavras, use ‘y3w’
  • ‘y$’, para copiar do ponto atual até o final da linha

Depois de copiado, basta mover o cursor para o local, no texto, em que deseja inserir o conteúdo do buffer e teclar ‘p’.

Como mover o cursor dentro do editor Vim

Fora do modo de inserção (i), dentro do modo de comando (Esc), é possível movimentar o cursor através das teclas direcionais do seu teclado ou usando teclas de comando para isto.
As teclas direcionais são as setinhas

 ↓   →   ←   ↑

Há também as teclas de comando:

  • h ← move o cursor um caractere para a esquerda
  • j ↓ move o cursor uma linha para baixo
  • k ↑ move o cursor uma linha para cima
  • l → move o cursor um caractere para a direita

As teclas de movimentação do cursor vão muito além disto no Vim.
Além de poder “andar” um caractere de cada vez, também há comandos para:

  1. se mover entre blocos de texto, como palavras, sentenças ou parágrafos
  2. se mover entre telas de um mesmo arquivo

Por que usar as teclas de comando em vez das direcionais do teclado?

Não se esqueça: tudo no Vi ou no Vim, é pensado para a máxima produtividade de quem digita.
Claro que “o que é produtivo e satisfatório para um, pode não ser para outro”.
Cabe a você decidir se vale a pena incorporar uma maneira nova de fazer as coisas ou não.
Aprender a usar este método de movimentação dentro do texto, vai tomar alguns minutos ou talvez mais.
Ao se permitir o aprendizado, você pode perceber que ele poupa tempo, no modo de comando.
A principal vantagem é que este caminho possibilita posicionar o cursor aonde você quiser no texto, sem precisar retirar a mão do centro do teclado.

Use valores numéricos para ter mais controle sobre a movimentação

Você pode indicar por quantos caracteres ou linhas o cursor irá se mover, dentro do seu texto.
Veja estes exemplos:

  1. 4l — o comando faz o cursor ‘andar’ 4 espaços para a direita
  2. 5j — o comando faz o cursor se mover 5 linhas para cima

Desta maneira, o Vim oferece meios de multiplicar os efeitos de um comando antes de sua execução.

Mais comandos para mover o cursor no Vim

Para se movimentar por entre blocos de texto, use os seguintes comandos de teclado:

  • 0 — (zero) para ir para o início de uma sentença ou parágrafo. Equivale a Home.
  • $ — para ir para o final de um parágrafo. Equivale a End.
  • w — (word) se move uma palavra de cada vez para frente.
  • b — (backwards?) se move uma palavra de cada vez para trás.
  • – — sobe uma linha.
  • + — desce uma linha.

Obviamente, as teclas + e – fogem daquele objetivo de realizar uma movimentação mais natural no teclado.

Uma linha, no Vim, não é a mesma coisa que a sua representação visível, na tela, com 80 colunas.
Uma linha é um bloco de texto compreendido entre uma quebra de linha e outra.
Em outras palavras, começa com um Enter e termina no próximo Enter.

Em todas estas teclas é possível acrescentar argumentos numéricos para multiplicar os efeitos de cada comando. Por exemplo:

  1. 4b — para mover 4 palavras para trás
  2. 5- — para subir 5 linhas

Você pode usar o comando G para ir até o fim do arquivo.
Com argumentos numéricos, é possível dizer ao comando G exatamente em que linha o cursor deve ficar.
Desta forma, 1G leva o cursor para o início do arquivo e 42G leva até a linha 42.

erro na linha 15
Quando você está tentando executar um script ou compilar código, frequentemente pode se deparar com avisos de erros.
Os avisos podem indicar exatamente em que linha do seu programa há alguma inconsistência.

Leia mais sobre o editor Vim.