Global
- :h[elp] palavra chave - abrir a página de ajuda para um termo
 - :sav[eas] arquivo - salvar um arquivo como
 - :clo[se] - fechar o painel atual
 - :ter[minal] - open a terminal window
 - K - abrir a página do manual para a palavra abaixo do cursor
 
Movimento do cursor
- h - movimenta o cursor para esquerda
 - j - movimenta o cursor para baixo
 - k - movimenta o cursor para cima
 - l - movimenta o cursor para direita
 - gj - movimenta o cursor para baixo (texto multilinha)
 - gk - movimenta o cursor para cima (texto multilinha)
 - H - movimenta o cursor até a parte superior da tela
 - M - movimenta o cursor até o meio da tela
 - L - movimenta o cursor até a parte inferior da tela
 - w - pula para frente até o inicio de uma palavra
 - W - pula para frente até o inicio de uma palavra (palavras podem ter pontuação)
 - e - pula para frente até o fim de uma palavra
 - E - pula para frente até o fim de uma palavra (palavras podem ter pontuação)
 - b - pula para trás até o início de uma palavra
 - B - pula para trás até o início de uma palavra (palavras podem ter pontuação)
 - ge - pula para trás até o fim de uma palavra
 - gE - pula para trás até o fim de uma palavra (palavras podem ter pontuação)
 - 
            % - movimenta o cursor para o caracter correspondente (pares parão suportados: '()', '{}', '[]' - use 
:h matchpairsno vim para mais informações) - 0 - pula até o início da linha
 - ^ - pula até o primeiro caractere não vazio da linha
 - $ - pula até o fim da linha
 - g_ - pula até o último character não vazio da linha
 - gg - vai para a primeira linha do documento
 - G - vai para a última linha do documento
 - 5gg or 5G - vai para a linha 5
 - gd - movimenta para a declaração local
 - gD - movimenta para a declaração global
 - fx - pula para a próxima ocorrência do caractere x
 - tx - pula para antes da próxima ocorrência do caractere x
 - Fx - pula para a ocorrência anterior do caractere x
 - Tx - pula para depois da ocorrência anterior do caractere x
 - ; - repete o último movimento de f, t, F ou T
 - , - repete o último movimento de f, t, F ou T para trás
 - } - pula para o próximo parágrafo (ou função/bloco, ao editar o código)
 - { - pular para o parágrafo anterior (ou função/bloco, ao editar o código)
 - zz - centraliza o cursor na tela
 - zt - posiciona o cursor no início da tela
 - zb - posiciona o cursor no fim da tela
 - Ctrl + e - movimenta a tela uma linha para baixo (sem mover o cursor)
 - Ctrl + y - movimenta a tela uma linha para cima (sem mover o curso)
 - Ctrl + b - movimenta a tela uma página para cima (cursor na última linha)
 - Ctrl + f - movimenta a tela uma página para baixo (cursor na primeira linha)
 - Ctrl + d - movimenta a tela e o cursor 1/2 página para baixo
 - Ctrl + u - movimenta a tela e o cursor 1/2 página para cima
 
Modo de inserção - inserir/acrescentar texto
- i - insere antes do cursor
 - I - insere no começo da linha
 - a - insere depois do cursor
 - A - insere no final da linha
 - o - insere uma nova linha abaixo da linha atual
 - O - insere uma nova linha acima da linha atual
 - ea - insere no final da palavra
 - Ctrl + h - apaga o caractere antes do cursor no modo de inserção
 - Ctrl + w - apaga a palavra antes do cursor no modo de inserção
 - Ctrl + j - adiciona uma quebra de linha na posição do cursor no modo de inserção
 - Ctrl + t - recuar (mover para a direita) uma linha em um shiftwidth durante o modo de inserção
 - Ctrl + d - desrecuar (mover para a esquerda) uma linha em um shiftwidth durante o modo de inserção
 - Ctrl + n - inserir (auto-completar) a próxima correspondência antes do cursor durante o modo de inserção
 - Ctrl + p - inserir (auto-completar) a correspondência anterior antes do cursor durante o modo de inserção
 - Ctrl + rx - inserir o conteúdo do registrador x
 - Ctrl + ox - Entrar temporariamente no modo normal para executar um comando do modo normal x.
 - Esc or Ctrl + c - sair do modo de inserção
 
Editando
- r - substituir um único caractere
 - R - substituir mais de um caractere, até pressionar ESC.
 - J - juntar a linha abaixo da linha atual
 - gJ - juntar a linha abaixo à linha atual sem espaço entre elas
 - gwip - refazer parágrafo
 - g~ - alternar maiúsculas e minúsculas até o movimento
 - gu - alterar para minúsculas até o movimento
 - gU - alterar para maiúsculas até o movimento
 - cc - substituir toda a linha
 - c$ or C - substituir até o final da linha
 - ciw - substituir a palavra inteira
 - cw or ce - substituir até o final da palavra
 - s - deletar um caractere e substituir texto
 - S - deletar a linha e substituir texto (igual ao comando cc)
 - xp - trocar duas letras (deletar e colar)
 - u - desfazer
 - U - restaurar a linha inteira
 - Ctrl + r - refazer
 - . - repetir o último comando
 
Marcação de texto (modo visual)
- v - iniciar modo visual, selecionar linhas e executar um comando (como y-yank)
 - V - iniciar modo visual selecionando a linha inteira
 - o - mover para o fim/início da seleção
 - Ctrl + v - iniciar modo de bloco visual
 - O - mover para o fim/início do bloco
 - aw - selecionar uma palavra
 - ab - selecionar um bloco com ()
 - aB - selecionar um bloco com {}
 - at - selecionar um bloco com tags <>
 - ib - selecionar um bloco interno com ()
 - iB - selecionar um bloco interno com {}
 - it - selecionar um bloco interno com tags <>
 - Esc or Ctrl + c - sair do modo visual
 
Comandos visuais
- > - deslocar texto para direita
 - < - deslocar texto para esquerda
 - y - copiar texto marcado
 - d - deletar texto marcado
 - ~ - alterar entre maiúscula e minúscula
 - u - alterar o texto marcado para minúsculas
 - U - alterar o texto marcado para maiúsculas
 
Registradores
- :reg[isters] - mostrar conteúdo dos registradores
 - "xy - colar no registrador x
 - "xp - colar o conteúdo do registrador x
 - "+y - copiar para a área de transferência do sistema
 - "+p - colar da área de transferência do sistema
 
             0 - último yank
             " - registrador sem nome, último delete ou yank
             % - nome do arquivo atual
             # - nome do arquivo alternativo
             * - conteúdo da área de transferência (primário do X11)
             + - conteúdo da área de transferência (área de transferência do X11)
             / - último padrão de busca
             : - último comando de linha
             . - último texto inserido
             - - última exclusão pequena (menos que uma linha)
             = - registrador de expressão
             _ - registrador buraco negro
          
Marcadores
- :marks - listar todos os marcadores
 - ma - atribuir a posição atual no marcador A
 - `a - pular para a posição do marcador A
 - y`a - copiar (yank) texto para a posição do marcador A
 - `0 - vai para a posição onde o Vim foi anteriormente encerrado
 - `" - vai para a posição quando foi editado este arquivo pela última vez
 - `. - vai para a posição da última alteração neste arquivo
 - `` - vai para a posição antes do último salto
 - :ju[mps] - lista de saltos
 - Ctrl + i - vai para a posição mais recente na lista de saltos
 - Ctrl + o - vai para a posição mais antiga na lista de saltos
 - :changes - lista de alterações
 - g, - vai para a posição mais recente na lista de alterações
 - g; - vai para a posição mais antiga na lista de alterações
 - Ctrl + ] - vai para a tag sob o cursor
 
Macros
- qa - gravar o macro a
 - q - parar a gravação do macro
 - @a - executar o macro a
 - @@ - re executar o último macro
 
Copiar e colar
- yy - copiar uma linha
 - 2yy - copiar duas linhas
 - yw - copiar uma palavra
 - yiw - copiar palavra sob o cursor
 - yaw - copiar palavra sob o cursor e o espaço depois ou antes dela
 - y$ or Y - copiar até o final da linha
 - p - colar depois do cursor
 - P - colar antes do cursor
 - gp - colar o conteúdo da área de transferência após o cursor e deixar o cursor após o novo texto
 - gP - colar o conteúdo da área de transferência antes do cursor e deixar o cursor após o novo texto
 - dd - deletar (cortar) uma linha
 - 2dd - deletar (cortar) duas linhas
 - dw - deletar (cortar) uma palavra
 - diw - deletar (cortar) a palavra sob o cursor
 - daw - deletar (cortar) a palavra sob o cursor e o espaço depois ou antes dela
 - :3,5d - deletar linhas do 3 ao 5
 
e.g.
            :.,$d - Da linha atual até o final do arquivo 
            :.,1d - Da linha atual até o início do arquivo 
            :10,1d - Da 10ª linha até o final do arquivo 
          
- :g/{pattern}/d - deletar todas as linhas que contêm o padrão
 - :g!/{pattern}/d - deletar todas as linhas que não contêm o padrão
 - d$ or D - deletar (cortar) até o final da linha
 - x - deletar (cortar) caractere
 
Indentar texto
- >> - indentar (mover para a direita) uma linha com um shiftwidth
 - << - desindentar (mover para a esquerda) uma linha com um shiftwidth
 - >% - indentar um bloco com () ou {} (cursor na chave)
 - <% - desindentar um bloco com () ou {} (cursor na chave)
 - >ib - indentar bloco interno com ()
 - >at - indentar um bloco com tags <>
 - 3== - re-indentar 3 linhas
 - =% - re-indentar um bloco com () ou {} (cursor na chave)
 - =iB - re-indentar bloco interno com {}
 - gg=G - re-indentar o buffer inteiro
 - ]p - colar e ajustar a indentação para a linha atual
 
Saindo
- :w - escrever (salvar) arquivo, mas não sair
 - :w !sudo tee % - escrever o arquivo atual usando sudo
 - :wq or :x or ZZ - escrever (salvar) arquivo e sair
 - :q - sair (não funciona se existirem mudanças não salvas)
 - :q! or ZQ - sair e descartar mudanças não salvas
 - :wqa - escrever (salvar) e sair em todas as abas
 
Procurar e substituir
- /pattern - procurar por padrão
 - ?pattern - procurar por padrão na direção oposta
 - \vpattern - padrão `mágico`: caracteres não-alfanuméricos são interpretados como símbolos especias de expressões regulares (sem necessidade de escapar os caracteres)
 - n - repetir busca na mesma direção
 - N - repetir busca na direção oposta
 - :%s/old/new/g - substituir todas as ocorrências de old por new dentro do buffer
 - :%s/old/new/gc - substituir todas as ocorrências de old por new dentro do buffer pedindo confirmação
 - :noh[lsearch] - remover o destaque dos resultados de busca
 
Procurar em múltiplos arquivos
- :vim[grep] /pattern/ {`{file}`} - procurar por padrão em múltiplos arquivos
 
- :cn[ext] - pular para próxima ocorrência
 - :cp[revious] - pular para ocorrência anterior
 - :cope[n] - abrir uma janela com a lista de ocorrências
 - :ccl[ose] - fechar a janela de resultados rápidos
 
Abas
- :tabnew or :tabnew {page.words.file} - abrir um arquivo em uma aba nova
 - Ctrl + wT - mover a janela atual para uma aba própria
 - gt or :tabn[ext] - mover para a próxima aba
 - gT or :tabp[revious] - mover para a aba anterior
 - #gt - mover para a aba de número #
 - :tabm[ove] # - mover aba atual para posição # (indexado do 0)
 - :tabc[lose] - fechar a aba atual e todas suas janelas
 - :tabo[nly] - fechar todas as abas exceto a aba atual
 - 
            :tabdo command - executar o 
comandoem todas as abas (e.g.:tabdo q- fechar todas as abas abertas) 
Trabalhando com múltiplos arquivos
- :e[dit] arquivo - editar um arquivo em um novo buffer
 - :bn[ext] - ir para o próximo buffer
 - :bp[revious] - ir para o buffer anterior
 - :bd[elete] - deletar um buffer (fechar um arquivo)
 - :b[uffer]# - ir para um buffer pelo número
 - :b[uffer] file - ir para um buffer pelo arquivo
 - :ls or :buffers - listar todos os buffers abertos
 - :sp[lit] arquivo - abrir um arquivo em um novo buffer e dividir a janela
 - :vs[plit] arquivo - abrir um arquivo em um novo buffer e dividir as janelas verticalmente
 - :vert[ical] ba[ll] - editar todos os buffers como janelas verticais
 - :tab ba[ll] - editar todos os buffers como abas
 - Ctrl + ws - dividir janela
 - Ctrl + wv - dividir janelas verticalmente
 - Ctrl + ww - trocar de janelas
 - Ctrl + wq - fechar janela
 - Ctrl + wx - trocar janela atual com a próxima
 - Ctrl + w= - tornar todas as janelas de altura e largura iguais
 - Ctrl + wh - mover o cursor para a janela à direita (vertical)
 - Ctrl + wl - mover o cursor para a janela a esquerda (vertical)
 - Ctrl + wj - mover o cursor para a janela abaixo (horizontal)
 - Ctrl + wk - mover o cursor para a janela acima (horizontal)
 - Ctrl + wH - tornar a janela atual com altura total à extrema esquerda (janela vertical mais à esquerda)
 - Ctrl + wL - tornar a janela atual com altura total à extrema direita (janela vertical mais à direita)
 - Ctrl + wJ - tornar a janela atual com largura total na parte inferior (janela horizontal mais abaixo)
 - Ctrl + wK - tornar a janela atual com largura total na parte superior (janela horizontal mais acima)
 
Diferenças
- zf - definir manualmente um fold até o movimento
 - zd - excluir o fold sob o cursor
 - za - alternar o fold sob o cursor
 - zo - abrir o fold sob o cursor
 - zc - fechar o fold sob o cursor
 - zr - reduzir (abrir) todos os folds em um nível
 - zm - reduzir (fechar) todos os folds em um nível
 - zi - alternar a funcionalidade de folding
 - ]c - ir para o início da próxima alteração
 - [c - ir para o início da alteração anterior
 - do or :diffg[et] - obter a diferença (do outro buffer)
 - dp or :diffpu[t] - colocar a diferença (no outro buffer)
 - :diffthis - tornar a janela atual parte da diferença
 - :dif[fupdate] - atualizar as diferenças
 - :diffo[ff] - desativar o modo de diferença para a janela atual