Vim ofrece múltiples modos de autocompletado accesibles desde Insert mode sin plugins. Cada modo consulta una fuente distinta: el buffer, archivos incluidos, tags, el sistema de archivos o el diccionario.


Abreviaciones de modos:
N = Normal | I = Insert | V = Visual | C = Command | VB = Visual Block

Activar el autocompletado

ModoComandoAcción
I<Ctrl-n>Completa con la siguiente coincidencia (forward)
I<Ctrl-p>Completa con la coincidencia anterior (backward)
I<Ctrl-x><Ctrl-n>Completa desde el buffer actual
I<Ctrl-x><Ctrl-p>Completa hacia atrás desde el buffer actual
I<Ctrl-x><Ctrl-i>Completa desde archivos incluidos (#include)
I<Ctrl-x><Ctrl-]>Completa desde el archivo de tags
I<Ctrl-x><Ctrl-f>Completa rutas del sistema de archivos
I<Ctrl-x><Ctrl-l>Completa líneas completas del buffer
I<Ctrl-x><Ctrl-d>Completa definiciones y macros
I<Ctrl-x><Ctrl-v>Completa comandos de Vim
I<Ctrl-x><Ctrl-u>Completa con función definida en completefunc
I<Ctrl-x><Ctrl-o>Omnicompletar (semántico, requiere filetype plugin)
I<Ctrl-x>sCompleta correcciones ortográficas

Navegar el menú de sugerencias

ModoComandoAcción
I<Ctrl-n>Selecciona la siguiente entrada del menú
I<Ctrl-p>Selecciona la entrada anterior del menú
I<Enter>Confirma la selección actual
I<Esc>Cierra el menú sin insertar
I<Ctrl-e>Cierra el menú y restaura el texto original
I<Ctrl-y>Confirma la selección sin insertar salto de línea

Fuentes de completado (complete)

ModoComandoAcción
C:set complete=.,b,u,tDefine las fuentes de <Ctrl-n> y <Ctrl-p>
C:set complete+=kAñade el diccionario como fuente
C:set complete+=kspellAñade el corrector ortográfico como fuente
C:set complete-=iElimina archivos incluidos de las fuentes

Valores comunes para complete:

ValorFuente
.Buffer actual
bBuffers cargados visibles
uBuffers cargados no visibles
tArchivo de tags
iArchivos incluidos
kDiccionario (dictionary)
dDefiniciones y macros

Opciones del menú (completeopt)

ModoComandoAcción
C:set completeopt=menuMuestra el menú desplegable de sugerencias
C:set completeopt+=menuoneMuestra el menú aunque haya una sola opción
C:set completeopt+=noinsertNo inserta texto hasta confirmar selección
C:set completeopt+=noselectNo preselecciona ninguna entrada del menú
C:set completeopt+=previewMuestra documentación en ventana de preview
C:set completeopt+=popupMuestra documentación en popup flotante (Vim 8.1+)

Omnicompletado por filetype

FiletypeFuente activada por :set filetype
c, cppCompletado de funciones y structs C/C++
pythonCompletado de módulos y atributos Python
htmlEtiquetas y atributos HTML
cssPropiedades y valores CSS
javascriptObjetos y métodos JS básicos
sqlPalabras clave y objetos SQL
vimFunciones y comandos Vimscript

Requiere activar los plugins de filetype en vimrc:

filetype plugin on

Completado de diccionario y spell

ModoComandoAcción
C:set dictionary=/usr/share/dict/wordsDefine el diccionario del sistema
C:set spell spelllang=esActiva corrector en español
C:set spell spelllang=en_usActiva corrector en inglés
I<Ctrl-x>sSugiere correcciones ortográficas
Nz=Muestra correcciones para la palabra bajo el cursor

Tips

  • <Ctrl-x><Ctrl-f> para completar rutas es más útil de lo que parece: funciona relativo al directorio de trabajo y no requiere ninguna configuración.
  • <Ctrl-e> cierra el menú y restaura exactamente lo que habías escrito antes de activar el completado; más preciso que <Esc> que puede mover el cursor.
  • completeopt=menuone,noinsert,noselect es la combinación más cómoda para un flujo manual: muestra sugerencias sin insertar nada hasta que confirmes explícitamente.
  • <Ctrl-x><Ctrl-l> para completar líneas completas es ideal para texto repetitivo o boilerplate: Vim busca en todo el buffer líneas que empiecen igual.
  • El omnicompletado con <Ctrl-x><Ctrl-o> puede ser sorprendentemente capaz en C/C++ y HTML sin plugins, siempre que filetype plugin on esté activo en el vimrc.