Global

  • :h[elp] termo - abrir axuda para o termo
  • :sav[eas] ficheiro - gravar como
  • :clo[se] - pechar panel actual
  • :ter[minal] - abrir unha xanela de terminal
  • K - abrir páxina do manual para o termo onde está o cursor
Tip Executa vimtutor nunha terminal para aprender os primeiros comandos do vim.

Movemento do cursor

  • h - mover o cursor cara a esquerda
  • j - mover o cursor cara embaixo
  • k - mover o cursor cara enriba
  • l - mover o cursor cara a dereita
  • gj - move cursor abaixo (texto multi-liña)
  • gk - move cursor arriba (texto multi-liña)
  • H - posiciona o cursor na parte superior da pantalla
  • M - posiciona o cursor no medio da pantalla
  • L - posiciona o cursor na parte inferior da pantalla
  • w - ir ao inicio da próxima palabra
  • W - ir ao inicio da próxima palabra (podendo conter puntuación)
  • e - ir á fin da próxima palabra
  • E - ir á fin da próxima palabra (podendo conter puntuación)
  • b - ir ao inicio da palabra anterior
  • B - ir ao inicio da palabra anterior (podendo conter puntuación)
  • ge - salta atrás ata a fin da palabra
  • gE - salta atrás ata a fin da palabra (podendo conter puntuación)
  • % - ir ao carácter correspondente (pares recoñecidos orixinalmente: '()', '{}', '[]' - use :h matchpairs no vim para máis información
  • 0 - ir ao inicio da liña
  • ^ - ir ao primeiro carácter da liña que non sexa espazo
  • $ - ir á fin da liña
  • g_ - ir ao último carácter da liña que non sexa espazo
  • gg - ir á primeira liña do documento
  • G - ir á derradeira liña do documento
  • 5gg or 5G - ir á liña 5
  • gd - moverse ata a declaración local
  • gD - moverse ata a declaración global
  • fx - ir ata a próxima aparición do caracter 'x'
  • tx - ir ata o carácter anterior á próxima aparición do caracter 'x'
  • Fx - ir ata a aparición anterior do caracter 'x'
  • Tx - ir ata despois da aparición anterior do caracter 'x'
  • ; - repetir movemento f, t, F ou T
  • , - repetir movemento f, t, F ou T, no sentido contrario
  • } - ir ao próximo parágrafo (ou función/bloque, ao editar código)
  • { - ir ao parágrafo anterior (ou función/bloque, ao editar código)
  • zz - centrar o cursor na pantalla
  • zt - posiciona o cursor no alto da pantalla
  • zb - posiciona o cursor no baixo da pantalla
  • Ctrl + e - move a pantalla unha liña abaixo (sen mover o cursor)
  • Ctrl + y - move a pantalla unha liña arriba (sen mover o cursor)
  • Ctrl + b - retroceder unha pantalla completa
  • Ctrl + f - avanzar unha pantalla completa
  • Ctrl + d - avanzar media pantalla
  • Ctrl + u - retroceder media pantalla
Tip Para repetir un movemento do cursor engada un prefixo numérico. Por exemplo, 4j move o cursor 4 liñas cara embaixo.

Modo de inserción - inserir/engadir texto

  • i - inserir antes do cursor
  • I - inserir no inicio da liña
  • a - inserir despois do cursor
  • A - inserir na fin da liña
  • o - inserir unha nova liña por baixo da actual
  • O - inserir unha nova liña por riba da actual
  • ea - inserir na fin da palabra
  • Ctrl + h - borra o carácter antes do cursor durante o modo de inserción
  • Ctrl + w - borra a palabra antes do cursor durante o modo de inserción
  • Ctrl + j - comeza unha líña nova durante o modo de inserción
  • Ctrl + t - indenta (move á dereita) a liña un ancho de desprazamento durante o modo de inserción
  • Ctrl + d - desindenta (move á esquerda) a liña un ancho de desprazamento durante o modo de inserción
  • Ctrl + n - inisire (auto-completa) o seguinte achado antes do cursor durante o modo de inserción
  • Ctrl + p - insire (auto-completa) o previo achado antes do cursor durante o modo de inserción
  • Ctrl + rx - insire o contido do rexistro 'x'
  • Ctrl + ox - Entra temporalmente no modo normal para executar un comando 'x' do modo normal
  • Esc or Ctrl + c - saír do modo de inserción

Edición

  • r - substituír un único carácter
  • R - trocar máis dun carácter, ata premer ESC
  • J - xuntar a liña seguinte coa liña actual
  • gJ - xuntar a liña seguinte coa liña actual sen espazo entre medio
  • gwip - refluxo de parágrafo
  • g~ - trocar maiúsculas/minúsculas ata o movemento
  • gu - trocar a minúsculas ata o movemento
  • gU - trocar a maiúsculas ata o movemento
  • cc - substituír a liña enteira
  • c$ or C - substituír ata a fin da liña
  • ciw - troca (substitúe) a palabra enteira
  • cw or ce - substituír ata a fin da palabra actual
  • s - eliminar un carácter e substituír texto
  • S - eliminar un carácter e substituír texto ata a fin da liña (igual a cc)
  • xp - transpor dúas letras (cortar e pegar)
  • u - desfacer
  • U - restaurar (desfacer) a última liña cambiada
  • Ctrl + r - refazer
  • . - repetir o último comando

Marcación de texto (modo visual)

  • v - iniciar modo visual, marcar liñas e executar un comando (como y - copiar)
  • V - iniciar modo visual de liña
  • o - ir alternadamente á fin/inicio da área marcada
  • Ctrl + v - iniciar modo visual de bloque
  • O - ir alternadamente á fin/inicio do bloque na liña actual
  • aw - marcar unha palabra
  • ab - marcar bloque dentro de (), incluíndo ()
  • aB - marcar bloque dentro de {}, incluíndo {}
  • at - marcar bloque dentro das etiquetas <>, incluíndo <>
  • ib - marcar bloque dentro de (), excluíndo ()
  • iB - marcar bloque dentro de {}, excluíndo {}
  • it - marcar bloque dentro das etiquetas <>, excluíndo <>
  • Esc or Ctrl + c - saír do modo visual
Tip En troques de b ou B, pódese tamén usar ( ou {, respectivamente.

Comandos no modo visual

  • > - indentar texto cara á dereita
  • < - indentar texto cara á esquerda
  • y - copiar texto marcado
  • d - eliminar texto marcado
  • ~ - alternar maiúsculas/minúsculas
  • u - cambiar texto marcado a minúsula
  • U - cambiar texto marcado a maiúscula

Rexistros

  • :reg[isters] - mostrar contido dos rexistros
  • "xy - copiar ao rexistro 'x'
  • "xp - pegar contido do rexistro 'x'
  • "+y - copiar no rexistro de portapapeis do sistema
  • "+p - pergar dende o rexistro de portapapeis do sistema
Tip Os rexistros son gardados en ~/.viminfo e serán carregados novamente ao reiniciar o vim.
Tip Rexistros especiais:

0 - última copia
" - rexistro sen nome, última eliminación ou copia
% - nome do ficheiro actual
# - nome de ficheiro alternativo
* - contido do portapapeis (X11 primario)
+ - contido do portapapeis (X11 portapapeis)
/ - último patron de busca
: - último comando da liña de comandos
. - último texto inserido
- - último texto curto (menos dunha liña) eliminado
= - registro de expresión
_ - rexistro do burato negro

Marcas

  • :marks - lista das marcas
  • ma - definir a marca 'a' na posición actual
  • `a - ir á posición da marca 'a'
  • y`a - copiar texto da posición actual ata a marca 'a'
  • `0 - ir á posición dende onde vim saiu na última vez
  • `" - ir á posición da última edición no ficheiro actual
  • `. - ir á posición do último cambio no ficheiro actual
  • `` - ir á posición anterior ao último chimpo
  • :ju[mps] - lista de chimpos
  • Ctrl + i - ir a posición máis nova na lista de chimpos
  • Ctrl + o - ir á posición máis vella na lista de chimpos
  • :changes - lista de cambios
  • g, - ir á posición máis nova na lista de cambios
  • g; - ir á posición máis vella na lista de cambios
  • Ctrl + ] - chimpar á etiqueta baixo o cursor
Tip Parar chimpar a unha marca pódese ou ben usar o til inverso (`) ou ben un apóstrofo ('). Cando se usa un apóstrofo, sáltase ao comezo (primeiro carácter non branco) da liña sobre a que está a marca.

Macros

  • qa - comezar 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 pegar

  • yy - copiar unha liña
  • 2yy - copiar dúas liñas
  • yw - copiar os carácteres ata o inicio da próxima palabra
  • yiw - copiar a palabra baixo o cursor
  • yaw - copiar a palabra baixo o cursor e máis o espazo anterior ou posterior a ela
  • y$ or Y - copiar ata a fin da liña
  • p - pegar despois do cursor
  • P - pegar antes do cursor
  • gp - pór (pegar) o contido do portapapeis despois do cursor e deixar o cursor despois do novo texto
  • gP - pór (pegar) antes do cursor e deixar of cursor antes do novot texto
  • dd - cortar unha liña
  • 2dd - cortar dúas liñas
  • dw - cortar ata o inicio da próxima palabra
  • diw - borrar (cortar) a palabra baixo o cursor
  • daw - borrar (cortar) a palabra baixo o cursor e máis os espazos anterior e posterior
  • :3,5d - borra as liñas da 3 á 5
Tip Tamén pódense usar os seguintes carácteres para especificar o rango.
e.g.

:.,$d - Dende a liña actual ata a fin do ficheiro
:.,1d - Dende a liña acutal ata o comezo do ficheiro
:10,1d - Dende a liña 10 ata o comezo do ficheiro

  • :g/{pattern}/d - borra tódalas liñas que conteñen o patrón
  • :g!/{pattern}/d - borra tódalas liñas que non conteñen o patrón
  • d$ or D - cortar ata ao fin da liña (igual a D)
  • x - cortar o carácter baixo o cursor

Indentar texto

  • >> - indenta (move á dereita) a liña un ancho de desprazamento
  • << - desindenta (move á esquerda) a liña un ancho de desprazamento
  • >% - indenta un bloque con () ou {} (cando o cursor está na chave)
  • <% - de-indenta un bloque con () ou {} (cando o cursor está na chave)
  • >ib - indenta un bloque interno con ()
  • >at - indenta un bloque coas etiquetas <>
  • 3== - re-indenta 3 liñas
  • =% - re-indenta un bloque con () ou {} (cando o cursor está na chage)
  • =iB - re-indenta o bloque interno con {}
  • gg=G - re-indenta a memoria temporal enteira
  • ]p - pega e axusta o indentado á liña actual

Saír

  • :w - gravar o ficheiro, mais sen saír
  • :w !sudo tee % - gravar o ficheiro actual con sudo
  • :wq or :x or ZZ - gravar e saír
  • :q - saír (non sae se houber modificacions por gravar)
  • :q! or ZQ - saír sen gravar modificacions
  • :wqa - escribe (grava) e sae de tódolos separadores

Buscar e substituír

  • /pattern - buscar a seguinte aparición de patrón
  • ?pattern - buscar a anterior aparición de patrón
  • \vpattern - patrón 'moito máxico': os carácteres non-alfanuméricos son interpretados como símbolos especiais de expresións regulares (sen necesidade de escape)
  • n - repetir busca na mesma dirección
  • N - repetir busca na direción oposta
  • :%s/old/new/g - substituír tódalas aparicións de 'old' por 'new' no documento
  • :%s/old/new/gc - substituír tódalas aparicións de 'old' por 'new' no documento, con confirmación
  • :noh[lsearch] - quitar o destaque das aparicións achadas

Buscar en múltiples ficheiros

  • :vim[grep] /pattern/ {`{file}`} - buscar por patrón en múltiples ficheiros
e.g. :vim[grep] /foo/ **/*
  • :cn[ext] - ir á seguinte aparición
  • :cp[revious] - ir á anterior aparición
  • :cope[n] - abrir unha xanela coa lista de aparicións achadas
  • :ccl[ose] - pechar a xanela de fixado rápido

Separadores (tabs)

  • :tabnew or :tabnew {page.words.file} - abrir un ficheiro nun novo separador
  • Ctrl + wT - mover a xanela dividida actual para o seu proprio separador
  • gt or :tabn[ext] - ir ao próximo separador
  • gT or :tabp[revious] - ir ao separador anterior
  • #gt - ir ao separador número '#'
  • :tabm[ove] # - mover o separador actual ata a posición '#' (comeza no cero)
  • :tabc[lose] - pechar o separador actual e tódalas súas xanelas
  • :tabo[nly] - pechar tódolos separadores agás o actual
  • :tabdo command - correr comando para tódolos separadores (por exemplo, :tabdo q - pecha tódolos separadores abertos)

Traballar con múltiples ficheiros (buffers)

  • :e[dit] ficheiro - editar un ficheiro nunha nova área de memoria temporal (buffer)
  • :bn[ext] - ir á próxima área de memoria temporal
  • :bp[revious] - ir á anterior área de memoria temporal
  • :bd[elete] - eliminar unha área de memoria temporal (pechar un ficheiro)
  • :b[uffer]# - ir á área de memoria temporal #
  • :b[uffer] file - ir á área de memoria tempora por nome de ficheiro
  • :ls or :buffers - listar as áreas de memoria temporal abertas
  • :sp[lit] ficheiro - abrir un ficheiro nunha nova área de memoria temporal e dividir a xanela
  • :vs[plit] ficheiro - abrir un ficheiro nunha nova área de memoria temporal e dividir a xanela verticalmente
  • :vert[ical] ba[ll] - editar tódolas áres de memoria temporal como xanelas verticais
  • :tab ba[ll] - edita tódolas áreas de memoria temporal como separadores (tabs)
  • Ctrl + ws - dividir a xanela
  • Ctrl + wv - dividir a xanela verticalmente
  • Ctrl + ww - alternar xanelas
  • Ctrl + wq - saír dunha xanela
  • Ctrl + wx - intercambiar a xaneal actual coa seguinte
  • Ctrl + w= - facer tódalas xanelas de igual altura e anchura
  • Ctrl + wh - mover o cursor á xanela da esquerda (división vertical)
  • Ctrl + wl - mover o cursor á xanela da dereita (división vertical)
  • Ctrl + wj - mover o cursor á xanela de embaixo (división horizontal)
  • Ctrl + wk - mover o cursor á xanela de enriba (división horizontal)
  • Ctrl + wH - facer a xanela actual de altura completa e á esquerda (a xanela vertical máis á esquerda)
  • Ctrl + wL - facer a xanela actual de altural completa e á dereita (a xanela vertical máis á dereita)
  • Ctrl + wJ - facer a xanela actual de anchura completa e na parte inferior (a xanela horizontal que está máis abaixo)
  • Ctrl + wK - facer a xanela actual de anchura completa e na parte superior (a xanela horizontal que está máix arriba)

Diff

  • zf - define manualmente un pregue ata o movemento
  • zd - borra o pregue baixo o cursor
  • za - prega/desprega pregue baixo o cursor
  • zo - desprega o pregue baixo o cursor
  • zc - prega o pregue baixo o cursor
  • zr - desprega tódolos pregues un nível
  • zm - prega tódolos pregues un nível
  • zi - funcionalidade prega/desprega pregue
  • ]c - chimpa ao comezo do seguinte cambio
  • [c - chimpa ao comezo do cambio anterior
  • do or :diffg[et] - obtén (get) diferenza (doutra memoria temporal)
  • dp or :diffpu[t] - pon a diferenza (a outra memoria temporal)
  • :diffthis - fai a xanela actual parte do diff
  • :dif[fupdate] - actualiza diferenza
  • :diffo[ff] - desactiva o modo diff para a xanela actual
Tip Os comandos para pregue (por exemplo: za), operan en un nível. Para operar en tódolos nívels, hanse usar letras maiúsculas (por exemplo: zA).
Tip Para ver as diferenzas entre ficheiros, pódese executar directamente o vim en modo diff co comando vimdiff nunha terminal. Incluso, pódese usar isto como git difftool.