Artigo original: Vim Editor Modes Explained

O Vim tem como objetivos alterar código já existente, assim como escrever código novo. Assim, ele é dividido em diversos modos. Cada um serve a finalidades diferentes.

Modo normal

Por padrão, o Vim começa no modo "normal". O modo normal pode ser acessado a partir dos outros modos pressionando Esc ou <Ctrl+[>.

No modo normal, apertar as teclas não funciona como se poderia esperar. Em outras palavras, ao apertar as teclas, você não vai inserir texto em um documento. Algumas teclas podem:

Mover o cursor

  • h move um caractere para a esquerda
  • j move uma linha para baixo
  • k move uma linha para cima
  • l move um caractere para a direita

Do mesmo modo que diversos comandos do vim, o movimento das linhas pode ser prefixado por um número para mover para diversas linhas ao mesmo tempo:

  • 4j move 4 linhas para baixo
  • 6k move 6 linhas para cima

Movimentos básicos em palavras:

  • w move para o começo da próxima palavra
  • b move  para o começo da palavra anterior
  • e move  para o final da palavra
  • W  para o começo da próxima palavra após um espaço em branco
  • B  para o começo da palavra anterior antes de um espaço em branco
  • E move para o final de uma palavra antes de um espaço em branco

Movimento para o começo/final da linha:

  • 0 move para o começo da linha
  • $ move para o final da linha

Manipular texto

Entrando em outros modos

O modo normal é onde se passa a maior parte do tempo usando o Vim. Lembre-se: isso é o que torna o Vim diferente.

No modo normal, há várias maneiras de se mover em um arquivo aberto. Além de usar as teclas do cursor para se mover, é possível usar h (esquerda), j (abaixo), k (acima), e l (direita) para a movimentação. Isso é um auxílio especial aos digitadores mais sensíveis, que não gostam de deixar a linha central do teclado ao fazer alterações.

Você também pode fazer alterações a caracteres únicos no modo normal. Por exemplo, para substituir um único caractere, mova o cursor para cima dele, pressione r e o caractere que você deseja usar para substituí-lo. Da mesma maneira, você pode excluir caracteres únicos movendo seu cursor para cima deles e pressionando x.

Para desfazer uma ação, pressione u no modo normal. Isso desfaz as alterações até a última vez em que você esteve no modo normal. Se quiser refazer (ou seja, desfazer o desfazer), pressione Ctrl+r no modo normal.

Modo de inserção

Este é o segundo modo mais usado. Ele será o que tem o comportamento mais familiar para a maioria das pessoas. No modo de inserção, digitar insere caracteres como em um editor de texto normal. Você pode entrar nele usando um comando de inserção no modo normal.

Os comandos de inserção incluem:

  • i para 'inserir', altera o vim para o modo de inserção
  • a para 'anexar', move o cursor para depois do caractere atual e entra no modo de inserção
  • o insere uma nova linha abaixo da linha atual e entra no modo de inserção na nova linha

Esses comandos acima têm uma versão em maiúsculas também:

  • I move o cursor para o início da linha e entra no modo de inserção
  • A move o cursor para o final da linha e entra no modo de inserção
  • O insere uma nova linha acima da atual e entra no modo de inserção na nova linha

Existem muitas outras maneiras de se inserir texto no Vim que estão além do que pode ser listado aqui. Essas são as mais simples. Tenha cuidado ao permanecer por muito tempo no modo de inserção. O Vim não foi projetado para ficar no modo de inserção o tempo todo.

Para sair do modo de inserção e voltar ao modo normal, pressione Esc ou <Ctrl+[>

Modo visual

O modo visual é usado para fazer seleções de texto de modo semelhante ao comportamento de clicar e arrastar com um mouse. Selecionar o texto permite que os comandos se apliquem somente à seleção, como copiar, excluir, substituir e assim por diante.

Para fazer uma seleção de texto:

  • Pressione v para entrar no modo visual. Isso também marcará o começo de um ponto de seleção
  • Mova o cursor até o ponto final de seleção desejado. O Vim fornecerá um destaque visual à seleção do texto

O modo visual também tem as seguintes variações:

  • V para entrar no modo de linha visual. Isso tornará as seleções de texto linha por linha
  • <Ctrl+V> entrará no modo de bloco. Isso tornará as seleções por bloco. Ao mover o cursor, você fará retângulos de seleção de texto

Para sair do modo visual e voltar ao modo normal, pressione Esc ou <Ctrl+[>.

O modo visual, de fato, tem diversos subtipos: visual, visual de bloco e visual de linha

  • visual: como descrito acima. Entre pressionando v
  • visual de bloco: selecione uma região retangular. Entre pressionando <Ctrl>+v
  • visual de linha: sempre seleciona linhas inteiras. Entre pressionando <Shift>+v

Modo de comando

O modo de comando tem uma grande variedade de comandos e pode fazer coisas que o modo normal não consegue facilmente. Para entrar no modo de comando, digite ':' a partir do modo normal e digite seu comando, que deverá aparecer na parte inferior da janela. Por exemplo, para fazer uma busca global e substituição, digite :%s/foo/bar/g para substituir todos os 'foo' por 'bar'.

  • : entra no modo de comando
  • % significa por todas as linhas
  • s significa substituir
  • /foo é a expressão regular (regex) a ser encontrada
  • /bar/ é a expressão regular (regex) que substituirá a anterior
  • /g significa global – do contrário o comando seria executado apenas uma vez, por linha

O Vim tem diversos outros métodos. Você pode ler sobre eles na documentação de ajudo, com :h ou :help.

Modo de substituição

O modo de substituição permite alterar texto existente por outro texto digitando esse texto novo diretamente sobre o anterior. Antes de entrar nesse modo, vá para o modo normal e coloque seu cursor sobre o primeiro caractere do texto que você deseja substituir. Em seguida, pressione 'R' (R maiúsculo) para entrar no modo de substituição. Agora, o que você digitar substituirá o texto existente. O cursor se move automaticamente para o próximo caractere, como no modo de inserção. A única diferença está no fato de que todo caractere que você digitar substituirá um existente.

Boa programação para você. 😀