+++ 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. 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") }}