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
Tip Run vimtutor in a terminal to learn the first Vim commands.

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 matchpairs no 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
Tip Adicione um número a um comando de movimento do cursor para repetí-lo. Exemplo: 4j moverá 4 linhas para baixo.

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 - indent (move right) line one shiftwidth during insert mode
  • Ctrl + d - de-indent (move left) line one shiftwidth during insert mode
  • Ctrl + n - insert (auto-complete) next match before the cursor during insert mode
  • Ctrl + p - insert (auto-complete) previous match before the cursor during insert mode
  • Ctrl + rx - insert the contents of register x
  • Ctrl + ox - Temporarily enter normal mode to issue one normal-mode command x.
  • Esc or Ctrl + c - sair do modo de inserção

Editando

  • r - substituir um único caractere
  • R - replace more than one character, until ESC is pressed.
  • J - juntar a linha que está em baixo da linha atual
  • gJ - join line below to the current one without space in between
  • gwip - reflow paragraph
  • g~ - switch case up to motion
  • gu - change to lowercase up to motion
  • gU - change to uppercase up to motion
  • cc - substituir a linha toda
  • c$ or C - substituir no final da linha
  • ciw - change (replace) entire word
  • cw or ce - substituir no final da palavra
  • s - deletar um caractere e substituir texto
  • S - deletar linha e substituir texto (igual o comando cc)
  • xp - transpor duas letras (deletar e colar)
  • u - desfazer
  • U - restaura linha inteira
  • Ctrl + r - refazer
  • . - repetir o último comando

Marcação de texto (modo visual)

  • v - iniciar modo visual, marcar linhas e fazer um comando (como y-yank)
  • V - iniciar modo visual marcando a linha toda
  • o - mover para o fim/inicio da marcação
  • Ctrl + v - iniciar modo de bloco visual
  • O - mover para o fim/inicio do bloco
  • aw - marcar uma palavra
  • ab - um bloco com ()
  • aB - um bloco com {}
  • at - a block with <> tags
  • ib - um bloco interno com ()
  • iB - um bloco interno com {}
  • it - inner block with <> tags
  • Esc or Ctrl + c - sair do modo visual
Tip Instead of b or B one can also use ( or { respectively.

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 - change marked text to lowercase
  • U - change marked text to uppercase

Registradores

  • :reg[isters] - mostrar conteúdo dos registradores
  • "xy - colar no registrador x
  • "xp - colar o conteúdo do registrador x
  • "+y - yank into the system clipboard register
  • "+p - paste from the system clipboard register
Tip Registradores são guardados em ~/.viminfo, e são carregados no início do vim.
Tip Special registers:

0 - last yank
" - unnamed register, last delete or yank
% - current file name
# - alternate file name
* - clipboard contents (X11 primary)
+ - clipboard contents (X11 clipboard)
/ - last search pattern
: - last command-line
. - last inserted text
- - last small (less than a line) delete
= - expression register
_ - black hole register

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 texto para a posição do marcador A
  • `0 - go to the position where Vim was previously exited
  • `" - go to the position when last editing this file
  • `. - go to the position of the last change in this file
  • `` - go to the position before the last jump
  • :ju[mps] - list of jumps
  • Ctrl + i - go to newer position in jump list
  • Ctrl + o - go to older position in jump list
  • :changes - list of changes
  • g, - go to newer position in change list
  • g; - go to older position in change list
  • Ctrl + ] - jump to the tag under cursor
Tip To jump to a mark you can either use a backtick (`) or an apostrophe ('). Using an apostrophe jumps to the beginning (first non-blank) of the line holding the mark.

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 - yank (copy) word under the cursor
  • yaw - yank (copy) word under the cursor and the space after or before it
  • y$ or Y - copiar até o final da linha
  • p - colar depois do cursor
  • P - colar antes do cursor
  • gp - put (paste) the clipboard after cursor and leave cursor after the new text
  • gP - put (paste) before cursor and leave cursor after the new text
  • dd - deletar (cortar) uma linha
  • 2dd - deletar (cortar) duas linhas
  • dw - deletar (cortar) uma palavra
  • diw - delete (cut) word under the cursor
  • daw - delete (cut) word under the cursor and the space after or before it
  • :3,5d - delete lines starting from 3 to 5
Tip You can also use the following characters to specify the range:
e.g.

:.,$d - From the current line to the end of the file
:.,1d - From the current line to the beginning of the file
:10,$d - From the 10th line to the beginning of the file

  • :g/{pattern}/d - delete all lines containing pattern
  • :g!/{pattern}/d - delete all lines not containing pattern
  • d$ or D - deletar (cortar) até o final da linha
  • x - deletar (cortar) caractere

Indent text

  • >> - indent (move right) line one shiftwidth
  • << - de-indent (move left) line one shiftwidth
  • >% - indent a block with () or {} (cursor on brace)
  • <% - de-indent a block with () or {} (cursor on brace)
  • >ib - indent inner block with ()
  • >at - indent a block with <> tags
  • 3== - re-indent 3 lines
  • =% - re-indent a block with () or {} (cursor on brace)
  • =iB - re-indent inner block with {}
  • gg=G - re-indent entire buffer
  • ]p - paste and adjust indent to current line

Saindo

  • :w - escrever (salvar) arquivo, mas não sair
  • :w !sudo tee % - write out the current file using 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 - write (save) and quit on all tabs

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
e.g. :vim[grep] /foo/ **/*
  • :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] - close the quickfix window

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 comando em 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]# - go to a buffer by #
  • :b[uffer] file - go to a buffer by file
  • :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 janelas verticalmente
  • :vert[ical] ba[ll] - edit all buffers as vertical windows
  • :tab ba[ll] - edit all buffers as tabs
  • Ctrl + ws - dividir janela
  • Ctrl + wv - dividir janelas verticalmente
  • Ctrl + ww - trocar de janelas
  • Ctrl + wq - fechar janela
  • Ctrl + wx - exchange current window with next one
  • Ctrl + w= - make all windows equal height & width
  • Ctrl + wh - mover o cursor para a janela a 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 - make current window full height at far left (leftmost vertical window)
  • Ctrl + wL - make current window full height at far right (rightmost vertical window)
  • Ctrl + wJ - make current window full width at the very bottom (bottommost horizontal window)
  • Ctrl + wK - make current window full width at the very top (topmost horizontal window)

Diff

  • zf - manually define a fold up to motion
  • zd - delete fold under the cursor
  • za - toggle fold under the cursor
  • zo - open fold under the cursor
  • zc - close fold under the cursor
  • zr - reduce (open) all folds by one level
  • zm - fold more (close) all folds by one level
  • zi - toggle folding functionality
  • ]c - jump to start of next change
  • [c - jump to start of previous change
  • do or :diffg[et] - obtain (get) difference (from other buffer)
  • dp or :diffpu[t] - put difference (to other buffer)
  • :diffthis - make current window part of diff
  • :dif[fupdate] - update differences
  • :diffo[ff] - switch off diff mode for current window
Tip The commands for folding (e.g. za) operate on one level. To operate on all levels, use uppercase letters (e.g. zA).
Tip To view the differences of files, one can directly start Vim in diff mode by running vimdiff in a terminal. One can even set this as git difftool.