Global

  • :help termo - abrir ajuda para termo
  • :saveas ficheiro - gravar como
  • :close - fechar painel actual
  • K - abrir página do manual para o termo onde está o cursor

Movimento do cursor

  • h - mover o cursor para a esquerda
  • j - mover o cursor para baixo
  • k - mover o cursor para cima
  • l - mover o cursor para a direita
  • H - ir para o topo do ecrã
  • M - ir para o meio do ecrã
  • L - ir para o fundo do ecrã
  • w - ir para o início da próxima palavra
  • W - ir para o início da próxima palavra (podendo conter pontuação)
  • e - ir para o fim da próxima palavra
  • E - ir para o fim da próxima palavra (podendo conter pontuação)
  • b - ir para o início da palavra anterior
  • B - ir para o início da palavra anterior (podendo conter pontuação)
  • % - ir para o carácter correspondente (pares reconhecidos originalmente: '()', '{}', '[]' - use :h matchpairs no vim para mais informação
  • 0 - ir para o início da linha
  • ^ - ir para o primeiro carácter da linha que não seja espaço
  • $ - ir para o fim da linha
  • g_ - ir para o último carácter da linha que não seja espaço
  • gg - ir para a primeira linha do documento
  • G - ir para a última linha do documento
  • 5G - ir para a linha 5
  • fx - ir para a próxima ocorrência do caracter 'x'
  • tx - ir para o carácter anterior à próxima ocorrência do caracter 'x'
  • Fx - ir para a ocorrência anterior do caracter 'x'
  • Tx - ir para depois da ocorrência anterior do caracter 'x'
  • ; - repetir movimento f, t, F ou T
  • , - repetir movimento f, t, F ou T, no sentido contrário
  • } - ir para o próximo parágrafo (ou função/bloco, ao editar código)
  • { - ir para o parágrafo anterior (ou função/bloco, ao editar código)
  • zz - centrar o cursor no ecrã
  • Ctrl + e - move screen down one line (without moving cursor)
  • Ctrl + y - move screen up one line (without moving cursor)
  • Ctrl + b - retroceder um ecrã completo
  • Ctrl + f - avançar um ecrã completo
  • Ctrl + d - avançar meio ecrã
  • Ctrl + u - retroceder meio ecrã
Tip Para repetir um movimento do cursor adicione um prefixo numérico. Por exemplo, 4j move o cursor 4 linhas para baixo.

Modo de inserção - inserir/acrescentar texto

  • i - inserir antes do cursor
  • I - inserir no início da linha
  • a - inserir depois do cursor
  • A - inserir no fim da linha
  • o - inserir uma nova linha por baixo da actual
  • O - inserir uma nova linha por cima da actual
  • ea - inserir no fim da palavra
  • Esc - sair do modo de inserção

Edição

  • r - substituir um único carácter
  • J - juntar a linha seguinte com a linha actual
  • gJ - join line below to the current one without space in between
  • gwip - reflow paragraph
  • cc - substituir a linha toda
  • C - change (replace) to the end of the line
  • c$ - substituir até ao fim da linha
  • ciw - change (replace) entire word
  • cw - substituir até ao fim da palavra actual
  • s - apagar um carácter e substituir texto
  • S - apagar um carácter e substituir até ao fim da linha (igual ao cc)
  • xp - transpor duas letras (cortar e colar)
  • u - anular
  • Ctrl + r - refazer
  • . - repetir o último comando

Marcação de texto (modo visual)

  • v - começar modo visual, marcar linhas e executar um comando (como o y - copiar)
  • V - começar modo visual de linha
  • o - ir alternadamente para o fim/início da área marcada
  • Ctrl + v - iniciar modo visual de bloco
  • O - ir alternadamente para o fim/início do bloco na linha actual
  • aw - marcar uma palavra
  • ab - marcar bloco dentro de (), incluindo ()
  • aB - marcar bloco dentro de {}, incluindo {}
  • ib - marcar bloco dentro de (), excluindo ()
  • iB - marcar bloco dentro de {}, excluindo {}
  • Esc - sair do modo visual

Comandos no modo visual

  • > - deslocar texto para a direita
  • < - deslocar texto para a esquerda
  • y - copiar texto marcado
  • d - apagar texto marcado
  • ~ - alternar maiúsculas/minúsculas

Registos

  • :reg - mostrar conteúdo dos registos
  • "xy - copiar para o registo 'x'
  • "xp - colar conteúdo do registo 'x'
Tip Os registos são guardados em ~/.viminfo e serão carregados novamente quando reiniciar o vim
Tip O registo 0 (zero) contém sempre o último valor copiado

Marcas

  • :marks - lista das marcas
  • ma - definir a marca 'a' na posição actual
  • `a - ir para a posição da marca 'a'
  • y`a - copiar texto da posição actual até à marca 'a'

Macros

  • qa - começar a gravar a macro 'a'
  • q - parar de gravar a macro
  • @a - correr a macro 'a'
  • @@ - correr novamente a última macro executada

Cortar/copiar e colar

  • yy - copiar uma linha
  • 2yy - copiar duas linhas
  • yw - copiar os caracteres até ao início da próxima palavra
  • y$ - copiar até ao fim da linha
  • p - colar depois do cursor
  • P - colar antes do cursor
  • dd - cortar uma linha
  • 2dd - cortar duas linhas
  • dw - cortar até ao início da próxima palavra
  • D - cortar até ao fim da linha
  • d$ - cortar até ao fim da linha (igual ao D)
  • x - cortar o carácter actual

Sair

  • :w - gravar ficheiro, mas sem sair
  • :w !sudo tee % - gravar o ficheiro actual com sudo
  • :wq or :x or ZZ - gravar e sair
  • :q - sair (não sai se houver alterações por gravar)
  • :q! or ZQ - sair sem gravar alterações
  • :wqa - write (save) and quit on all tabs

Procurar e substituir

  • /pattern - procurar por próxima ocorrência de padrão
  • ?pattern - procurar por ocorrência anterior de padrão
  • \vpattern - padrão 'muito mágico': caracteres não-alfanuméricos são interpretados como símbolos especiais de expressões regulares (sem necessidade de escape)
  • n - repetir procura na mesma direcção
  • N - repetir procura na direção oposta
  • :%s/old/new/g - substituir todas as ocorrências de 'old' por 'new' no documento
  • :%s/old/new/gc - substituir todas as ocorrências de 'old' por 'new' no documento, com confirmação
  • :noh - remover destaque das ocorrências encontradas

Procurar em múltiplos ficheiros

  • :vimgrep /pattern/ {file} - procurar por padrão em múltiplos ficheiros
e.g. :vimgrep /foo/ **/*
  • :cn - ir para a próxima ocorrência
  • :cp - ir para a ocorrência anterior
  • :copen - abrir uma janela com a lista de ocorrências encontradas

Trabalhar com múltiplos ficheiros

  • :e ficheiro - editar um ficheiro numa nova área de memória temporária
  • :bnext or :bn - ir para a próxima área de memória temporária
  • :bprev or :bp - ir para a área de memória temporária anterior
  • :bd - apagar uma área de memória temporária (fechar um ficheiro)
  • :ls - listar as áreas de memória temporárias abertas
  • :sp ficheiro - abrir um ficheiro numa nova área de memória temporária e dividir a janela
  • :vsp ficheiro - abrir um ficheiro numa nova área de memória temporária e dividir a janela verticalmente
  • Ctrl + ws - dividir a janela
  • Ctrl + ww - alternar janelas
  • Ctrl + wq - sair de uma janela
  • Ctrl + wv - dividir janela verticalmente
  • Ctrl + wh - mover o cursor para a janela da esquerda (divisão vertical)
  • Ctrl + wl - mover o cursor para a janela da direita (divisão vertical)
  • Ctrl + wj - mover o cursor para a janela de baixo (divisão horizontal)
  • Ctrl + wk - mover o cursor para a janela de cima (divisão horizontal)

Separadores

  • :tabnew or :tabnew ficheiro - abrir um ficheiro num novo separador
  • Ctrl + wT - mover a janela dividida actual para o seu próprio separador
  • gt or :tabnext or :tabn - ir para o próximo separador
  • gT or :tabprev or :tabp - ir para o separador anterior
  • #gt - ir para o separador número '#'
  • :tabmove # - mover o separador actual para a posição '#' (começa no zero)
  • :tabclose or :tabc - fechar o separador actual e todas as suas janelas
  • :tabonly or :tabo - fechar todos os separadores excepto o actual
  • :tabdo command - correr commando para todos os separadores (por exemplo, :tabdo q - fecha todos os separadores abertos)