REFERÊNCIA RÁPIDA DO VIM
Modos, navegação, edição, busca, macros, buffers
Modos
Troca de Modo
| i | Modo de inserção (antes do cursor) |
| a | Modo de inserção (após o cursor) |
| o | Inserir linha abaixo e entrar no modo de inserção |
| O | Inserir linha acima e entrar no modo de inserção |
| v | Modo visual (caractere) |
| V | Modo visual (linha) |
| Ctrl+v | Modo de bloco visual |
| : | Modo de linha de comando |
| R | Modo de substituição |
| Esc | Voltar ao modo normal |
Navegação
Movimento por Caractere e Linha
| h j k l | Esquerda, baixo, cima, direita |
| 0 / ^ | Início da linha / primeiro não-espaço |
| $ | Fim da linha |
| w / W | Próxima palavra / PALAVRA |
| b / B | Palavra anterior / PALAVRA |
| e / E | Fim da palavra / PALAVRA |
| f{c} / F{c} | Encontrar caractere para frente / trás |
| t{c} / T{c} | Até o caractere para frente / trás |
Movimento por Tela e Arquivo
| gg / G | Ir para a primeira / última linha |
| :{n} | Ir para a linha n |
| Ctrl+d / Ctrl+u | Meia página abaixo / acima |
| Ctrl+f / Ctrl+b | Página completa abaixo / acima |
| H / M / L | Topo / meio / base da tela |
| % | Pular para o delimitador correspondente |
Edição
Inserir e Acrescentar
| I | Inserir no início da linha |
| A | Acrescentar no fim da linha |
| ea | Acrescentar no fim da palavra |
| gi | Inserir na última posição de inserção |
Excluir e Alterar
| x / X | Excluir caractere sob / antes do cursor |
| dd | Excluir linha |
| dw | Excluir palavra |
| d$ / D | Excluir até o fim da linha |
| cc / S | Alterar linha inteira |
| cw | Alterar palavra |
| c$ / C | Alterar até o fim da linha |
| ci" / ci( | Alterar dentro de aspas / parênteses |
Copiar e Colar
| yy | Copiar (yank) linha |
| yw | Copiar palavra |
| y$ | Copiar até o fim da linha |
| p / P | Colar após / antes do cursor |
| J | Unir a linha de baixo à atual |
Desfazer e Repetir
| u | Desfazer |
| Ctrl+r | Refazer |
| . | Repetir último comando |
Busca e Substituição
Busca
| /pattern | Buscar para frente |
| ?pattern | Buscar para trás |
| n / N | Próxima / ocorrência anterior |
| * | Buscar palavra sob o cursor (para frente) |
| # | Buscar palavra sob o cursor (para trás) |
Substituição
:s/old/new/ " substituir primeiro na linha
:s/old/new/g " substituir todos na linha
:%s/old/new/g " substituir todos no arquivo
:%s/old/new/gc " substituir todos, confirmar cada um
Modo Visual
Seleção
| v | Iniciar seleção de caractere |
| V | Iniciar seleção de linha |
| Ctrl+v | Iniciar seleção de bloco |
| o | Mover para o outro extremo da seleção |
| gv | Reselecionar última seleção visual |
Ações na Seleção
| d | Excluir seleção |
| y | Copiar seleção |
| c | Alterar seleção |
| > | Indentar seleção |
| < | Remover indentação da seleção |
| ~ | Alternar maiúsculas/minúsculas |
| U / u | Maiúsculas / minúsculas da seleção |
Buffers e Janelas
Buffers
| :ls | Listar buffers abertos |
| :bn / :bp | Próximo / buffer anterior |
| :b{n} | Ir para o buffer n |
| :bd | Fechar buffer atual |
| :e file | Abrir arquivo em novo buffer |
Janelas
| :sp file | Divisão horizontal |
| :vsp file | Divisão vertical |
| Ctrl+w h/j/k/l | Navegar para janela |
| Ctrl+w = | Equalizar tamanhos de janela |
| Ctrl+w q | Fechar janela |
Abas
| :tabnew file | Abrir arquivo em nova aba |
| gt / gT | Próxima / aba anterior |
| :tabclose | Fechar aba atual |
Registros
Usando Registros
| "ay | Copiar para o registro a |
| "ap | Colar do registro a |
| "Ay | Acrescentar cópia ao registro a |
| :reg | Mostrar todos os registros |
Registros Especiais
| "" | Sem nome (último excluído/copiado) |
| "0 | Última cópia |
| "+ | Área de transferência do sistema |
| "/" | Último padrão de busca |
| ". | Último texto inserido |
| "_ | Buraco negro (descartar) |
Macros
Gravar e Reproduzir
| q{a} | Iniciar gravação de macro no registro a |
| q | Parar gravação |
| @{a} | Reproduzir macro do registro a |
| @@ | Repetir última macro |
| 5@a | Reproduzir macro a 5 vezes |
Exemplo de Macro
qa " iniciar gravação em a
I// " inserir // no início da linha
Esc j " voltar ao normal, descer
q " parar gravação
10@a " comentar as próximas 10 linhas
Configurações
Opções Comuns
:set number " mostrar números de linha
:set relativenumber " números de linha relativos
:set tabstop=4 " largura do tab
:set expandtab " espaços em vez de tabs
:set ignorecase " busca sem distinção de maiúsculas
Exibição e Comportamento
:set wrap / nowrap " alternar quebra de linha
:set hlsearch " realçar correspondências de busca
:set incsearch " busca incremental
:set cursorline " realçar linha atual
:syntax on " ativar realce de sintaxe
Operações de Arquivo
Salvar e Sair
| :w | Salvar |
| :w file | Salvar como arquivo |
| :q | Sair (falha se não salvo) |
| :q! | Sair sem salvar |
| :wq / :x / ZZ | Salvar e sair |
| :wa | Salvar todos os buffers |
| :qa | Sair de todos os buffers |
Informações do Arquivo e Externo
| Ctrl+g | Mostrar informações do arquivo |
| :!cmd | Executar comando do shell |
| :r !cmd | Inserir saída do comando |
| :r file | Inserir conteúdo do arquivo |
Objetos de Texto
Objetos Internos e ao Redor
| iw / aw | Dentro / ao redor da palavra |
| is / as | Dentro / ao redor da sentença |
| ip / ap | Dentro / ao redor do parágrafo |
| i" / a" | Dentro / ao redor de aspas duplas |
| i' / a' | Dentro / ao redor de aspas simples |
| i( / a( | Dentro / ao redor de parênteses |
| i{ / a{ | Dentro / ao redor de chaves |
| it / at | Dentro / ao redor de tag HTML |
Combinações Comuns
ciw " alterar palavra interna
di" " excluir dentro de aspas
ya{ " copiar ao redor de chaves
vip " selecionar parágrafo interno
Marcas e Saltos
Marcas
| m{a} | Definir marca a na posição do cursor |
| 'a | Saltar para a linha da marca a |
| `a | Saltar para a posição exata da marca a |
| :marks | Listar todas as marcas |
Lista de Saltos
| Ctrl+o | Saltar para posição anterior |
| Ctrl+i | Saltar para próxima posição |
| :jumps | Mostrar lista de saltos |
| '' | Saltar para a última posição de salto |