+++
title = "01.04. Mudando de Modos – Modo Visual"
date = 2015-12-22
weight = 260
+++

Esta é a parte em que VIM deixa de ser um editor tão alienígena.

<!-- more -->

Na nota de rodapé do primeiro capítulo eu comentei que a maior parte dos
comandos do modo visual podem ser feitos no modo de comando. Como já vimos o
modo de comando, fica mais fácil entender o modo visual.

Em suma, o modo visual é a versão do VIM para o "Shift+Direcionais" dos demais
editores: Vai selecionando texto, deixando visível o que está sendo
selecionado. A diferença é que não é preciso ficar segurando o Shift o tempo
todo. E todos os demais comandos de movimentação ainda são válidos.

Para entrar no modo visual, você usa, em modo normal, `v` -- e, de novo, você não
precisa pressionar ou ficar segurando nenhuma tecla: o modo ficará ativo até
que você cancele o modo visual (voltando para o modo normal com `[Esc]`) ou seja
utilizado algum comando de alteração de texto (como `s`).

Uma vez que a região fique selecionada, você pode usar qualquer comando de
alteração de textos para executar somente naquela região. Assim, ao invés de
ficar contando quantos pontos a linha tem para chegar no número certo de saltos
para o commando `f`, você pode facilmente ativar o modo visual, navegar a bel
prazer, usado qualquer combinação de comandos de movimentação (incluindo
repetir `f` a vontade) até chegar no ponto que quiser e executar o comando
somente naquela região.

Além de `v`, existem outros dois outros comandos para entrar em modo visual:
`[Shift]+v` e `[Ctrl]+v`.

`[Shift]+v` é chamado de "modo visual de linha" porque, bem, são selecionadas
linhas inteiras neste modo, incluíndo o caracter de nova linha de cada uma das
linhas selecionadas. Neste modo, não é possível selecionar apenas parte de uma
linha, somente linhas inteiras -- que é útil quando se quer remover aquela
função inteira[^1].

`[Ctrl]+v` é chamado de "modo visual de bloco" e faz algo que poucos outros
editores conseguem: seleção de regiões retangulares. A pergunta que você deve
estar se fazendo agora é: e como é que o VIM junta as linhas se eu apagar um
bloco inteiro? Resposta indireta: O modo visual de bloco funciona como se
várias seleções fossem feitas ao mesmo tempo, o que significa que cada linha é
uma seleção diferente e que cada comando de alteração de texto é executado
individualmente em cada linha. Assim, se você iniciar o modo visual de bloco,
selecionar várias linhas mas apenas uma coluna, e executar o comando `c,[Esc]`, o
que vai acontecer é que o VIM irá substituir o caracter na coluna indicada por
vírgula em cada uma das linhas. Ou seja, respondendo a pergunta feita logo no
começo deste parágrafo: o VIM irá juntar as linhas como se você tivesse ido na
primeira linha, executado o comando, retornado a coluna inicial, ido para a
linha seguinte, repetido o comando e passado para a próxima linha.

[^1] Ou copiar para outro arquivo, que nós vamos ver mais pra frente.

{{ chapters(prev_chapter_link="./01-03-modo-de-insercao", prev_chapter_title="Modo de Inserção", next_chapter_link="./02-outros-comandos", next_chapter_title="Outros Comandos") }}
