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:
- Iniciar o modo visual com
v
,V
ouCtrl+V
- Mover o cursor para selecionar o texto
- 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