Seleção VI-sual

Seja um guru do Vim (VI) na arte de selecionar texto, usando caracteres, linhas e até colunas inteiras, para depois recortar, copiar ou alterar o texto.

O nome do VI vem da palavra "Visual". Editor de textos revolucionário em sua época, sua primeira versão já trazia uma impressionante característica: podia mostrar na tela o texto que estava sendo editado!

Já pensou ter que editar um texto com o monitor desligado, só digitando os comandos e torcendo para que tudo fique certo? Pois assim eram os editores antes do VI, como o seu antecessor ed. Nada de cursor, setinhas, letras aparecendo e sumindo na tela. A edição era feita às escuras. E você achando que o VI é que é complicado, hein?

Pois bem, neste artigo vamos conhecer o "modo visual" do VI. O nome pode causar confusão, mas esse modo nada tem a ver com o fato do VI ser um editor visual. O modo visual é o nome que se dá quando fazemos uma seleção de texto, igual aos editores gráficos quando selecionamos um texto com o mouse.

Como o VI não depende de mouse para ser operado, há meios de selecionar um texto somente com o teclado. A tecla chave é o V (de Visual, claro!).

Variantes do modo visual

Comando Nome Ação
v -- VISUAL -- Seleciona caracteres
V -- VISUAL LINE -- Seleciona linhas
Ctrl+V -- VISUAL BLOCK -- Seleciona blocos (seleção vertical)

Diferente da seleção de texto em outros editores, que só serve para apagar o texto selecionado, copiá-lo ou trocá-lo por outro texto, a seleção visual do VI é um aliado poderoso para se fazer edições complicadas com pouco esforço.

Abra um texto qualquer no VI e brinque de selecionar trechos para se familiarizar com os três modos de seleção. Primeiro posicione o cursor no meio de uma linha, tecle v e mova o cursor com as setas do teclado para ver a seleção se formando: o texto selecionado ficará em destaque. Tecle v novamente (ou Esc) para cancelar a seleção.

Agora volte ao mesmo meio da linha inicial e tecle V (maiúsculo). Surpresa! A linha inteira foi selecionada. Usando as setas para cima e para baixo podemos incluir mais linhas inteiras na seleção. Tecle V ou Esc, para cancelar a seleção.

Volte novamente ao meio da linha e agora tecle Ctrl+V para fazer a seleção de blocos. Mova o cursor para baixo e para a direita e veja o retângulo se formando. Antes de cancelar esta seleção, veja que é possível mudar o modo de seleção sem perder o posicionamento atual! Ainda com o bloco selecionado, tecle v para trocar para seleção de caracteres, depois tecle V para selecionar as linhas.

Tecle Esc para cancelar a seleção. Um comando bacana é o gv (Go Visual), que restaura a última seleção feita. Agora, com algumas linhas selecionadas, vamos fazer algo com elas. Veja na tabela 2 alguns dos comandos disponíveis.

Alguns comandos do VI

Comando Ação no texto selecionado
d Apaga
y Copia
p Cola
c Troca por outro texto
r Troca cada letra por um caractere
J Junta todas as linhas em uma só
U Converte para maiúsculas
u Converte para minúsculas
~ Inverte maiúsculas e minúsculas
gq Reformata as linhas para a largura desejada
! Manda as linhas para um comando externo (!sort)
: Aplica um comando 'ex' nas linhas (:s/isso/aquilo/)

Brinque bastante com cada um desses comandos para se acostumar e veja que seu uso do VI ficará muito mais ágil. Por exemplo, quer apagar todo um conjunto de linhas? Vá até a primeira, aperte V e desça com o cursor até a última linha, então aperte d e pronto: linhas apagadas.

O comando r é interessante no modo de seleção: ele troca todos os caracteres do trecho selecionado por um caractere à sua escolha, bom para "esconder" uma parte do texto.

Muito úteis também são o u e o U, para deixar o texto todo em minúsculas ou maiúsculas, não importando como era o trecho original. Experimente também o gq, que reformata as linhas, juntando-as e dividindo novamente para que a largura máxima (:set textwidth) seja respeitada.

E por último, o poder dos comandos "!" e ":" aplicados à seleção. Para ordenar alfabeticamente apenas algumas linhas do texto, e não ele todo, selecione as linhas desejadas com o V e digite !sort seguido de ENTER. Para substituir palavras apenas na seleção, novamente selecione o texto desejado e tecle :s/isso/aquilo/ e tecle ENTER.

Ao usar esses comandos, surge na última linha da tela o texto :'<,'>. Não se preocupe, ele está ali para indicar que o comando digitado em seguida será aplicado apenas ao trecho selecionado.

Note que após aplicado o comando, o VI volta para o modo anterior, abandonando o modo visual. Resumindo, este modo é composto por três operações:

  1. Iniciar o modo visual com v, V ou Ctrl+V
  2. Mover o cursor para selecionar o texto
  3. Aplicar um comando à seleção

Durante o passo 2 de demarcar a seleção, se você apertar a tecla o (letra o de ontem, minúscula), o cursor alterna entre o início e o fim do trecho marcado. Dessa maneira é possível aumentar o tamanho de uma seleção já iniciada.

Isso é tudo o que qualquer usuário normal precisa saber para usar e abusar da seleção visual e tornar a edição de textos no vi mais confortável. A partir daqui entraremos num mundo bizarro, onde coisas estranhas e surpreendentes acontecem. Continue lendo por sua conta e risco.

A seleção de blocos (Ctrl+V) reserva algumas surpresas. Para entender o que vai acontecer com os comandos a seguir, é imprescindível que você tenha o VI aberto com um texto qualquer e repita exatamente em sua máquina todos os procedimentos descritos.

Já precisou incluir no início de algumas linhas um texto padrão? É possível fazer isso com um :s/^/TEXTO/, mas com a seleção visual isso é muito mais divertido. Vá com o cursor até o início de uma linha qualquer, aperte Ctrl+V e desça 7 linhas com a seta. Tecle I (maiúsculo) e logo em seguida digite "MÁGICA". Agora pare, respire fundo, olhe atentamente para a tela e tecle Esc. Meio segundo se passa e PLIM!, letras pipocam na tela. Isso é mágica!

Este foi o comando I, que Insere um texto antes da seleção. Para inserir depois, o comando é A, de Anexar. Este fica de exercício para você brincar sozinho. O comando que fecha a trinca é o c (minúsculo), de Change, que troca o texto selecionado por outro.

O comando c é muito útil para editar tabelas. Selecione uma coluna vertical no meio da linha com o Ctrl+V, digamos cinco linhas e cinco colunas. Tecle c, depois digite @@@@@. Novamente respire fundo, tecle Esc e PLIM!, a mágica acontece!

A última dica da seleção em bloco é útil para quando o bloco precisar ir até o final de todas as linhas, mas estas têm tamanhos diversos. Nesse caso o bloco sairá incompleto se a última linha não a for a mais longa. Enquanto estiver movendo o cursor para marcar o bloco, aperte $ para expandir o bloco até o final de todas as linhas selecionadas.

Ah! E antes tarde do que nunca, um aviso: este modo visual não faz parte do VI original, é uma característica presente no Vim, o Vi IMproved. Como ele é o "Vi" padrão da maioria das distros recentes, a seleção visual está disponível a praticamente todos os usuários.

Artigo originalmente publicado na Linux Magazine edição 2, de outubro de 2004. Veja o PDF original
— EOF —

Aprenda mais sobre Vim