Esta es una vieja pregunta, pero sigo volviendo a ella de vez en cuando con un destello de esperanza que se desvanece, pensando que algún día encontraré la combinación correcta de complementos para darme un autocompletado perfecto en Vim. La búsqueda continúa, pero esta es toda la investigación que he realizado en el transcurso de varios años.
Antes que nada, debes entender que Vim es un editor de texto, no un editor de código. Los editores de código, IDES, son herramientas como el conjunto de herramientas Jetbrains, Visual Studio Code, Eclipse, etc.
Vim fundamentalmente no puede "autocompletar" el código con precisión. El autocompletado requiere la introspección de su código fuente y analizar el AST. Tenga en cuenta que Vim no pudo realizar operaciones asincrónicas hasta que se lanzó Vim 8 en 2016, por lo que tratar de ejecutar cualquier tipo de software de introspección de código en un complemento de Vim sería una pesadilla. Está integrado en la historia del ecosistema de Vim para no hacer esto. Y todos los que intentan hacer esto, como Tern For Vim, son realmente pesadillas para usar.
Lo mejor que puede hacer un editor de texto es fragmentos y completar las mismas palabras / líneas / etc. Si está buscando autocompletar código, debe usar un editor de código, no un editor de texto.
Estas son sus opciones, de las cuales he probado todas:
Dos atajos de teclado útiles son Ctrl- n, que autocompletar una palabra basándose únicamente en las memorias intermedias de corriente que tiene abiertas (sin código de la introspección), y Ctrl- xCtrl- lque autocompletar una línea completa de código si desea duplicar uno. Probablemente sepa Ctrl- xCtrl- f, que completará automáticamente un nombre de archivo, incluida la ruta, en relación con el actual :pwd
. El complemento de patrón completo puede ser ligeramente útil si no busca con /\v
.
Construido en Vim " Omnicompletion " activado por Ctrl- x, Ctrl- o(eso es lo que los autores de Vim quieren que escriba siempre) junto con un montón de complementos específicos de idioma , si existen. Puede :echo &omnifunc
en un archivo para ver si ya tiene Vimompletion configurado por Vim en su archivo de elección.
AutoComplPop para abrir automáticamente el menú Omnicompletion anterior al escribir.
SuperTab, que le permite presionar Tabpara activar la finalización integrada de Vim.
NeoComplCache, que es la finalización de palabras clave (no se especifica cómo se diferencia de la finalización integrada de Vim), una .vimrc
configuración compleja y NeoSnippet para la finalización del fragmento.
Una combinación monstruosa de exuberant-ctags
y DoctorJS
(un proyecto de Mozilla que ha estado muerto durante un año), TagBar y una cosita de cosecha propia para extraer la finalización de los archivos de etiquetas.
SnipMate , un complemento básico de finalización de etiquetas, junto con fragmentos , y descubra por su cuenta cómo agregar fragmentos, ya que es un poco complicado.
UltiSnips junto con UltiSnips-Snippets que son diferentes a los fragmentos anteriores.
Tern para Vim , una biblioteca prometedora que realiza una introspección de código real para obtener el autocompletado correcto. Sin embargo, es defectuoso, muy lento, tiene pérdidas de memoria que bloquean a Vim, y posiblemente es abandonware.
YouCompleteMe , una finalización difusa a medida que escribe que ejecuta un servidor en segundo plano, junto con una función interna para la finalización de fragmentos.
Eclim : un noble intento de ejecutar un servidor Eclipse en segundo plano y decirle a Vim los autocompletados que introspectivamente sobre la marcha. Funciona tan bien como Tern.
Por último, Closetag o delimitMate o autoclose o un bananagram-cosecha propia para el cierre automático de las etiquetas y el paréntesis automáticamente en escribir.
Casi todos los complementos de esta lista entrarán en conflicto con casi todos los demás complementos de esta lista.
YouCompleteMe parece ser el líder del paquete, pero nunca he podido hacer que funcione correctamente con la finalización de la etiqueta, y su finalización de introspección de código aún no ha demostrado ser potente.
Mi opinión personal es que el estado actual del mundo de autocompletado de Vim está en mal estado. Para proyectos pequeños, puede estar bien usando una de las soluciones anteriores. Si se trata de una API simple que puede tener principalmente en su cabeza, la finalización de la introspección sin código probablemente estará bien. Si está lidiando con un proyecto grande, o necesita el beneficio de la seguridad de tipos mientras programa, un IDE completo ( Eclipse , Visual Studio , WebStorm ) se adaptará a usted mucho mejor que Vim.
La desventaja de un IDE, por supuesto, es que ya no tendrás el poder de Vim en tus manos. No he usado un solo IDE que tenga un modo Vim aceptable.
Vim tiene un sesgo de lenguaje moderado hacia lenguajes tipo C sin tipo y, de lo contrario, espera que los usuarios agreguen características específicas del lenguaje como complementos. Desafortunadamente, esto ha llevado a un ecosistema de autocompletado fragmentado. Algunas opciones son decentes, pero nada es perfecto, y rara vez hay un líder mayoritario / mejor práctica.
let g:acp_behaviorSnipmateLength=-1
ver:help autocomplpop
) que se supone que debes agregar a tu .vimrc, ¿la agregaste?