Autocompletado en Vim

258

Después de un largo "entrenamiento", finalmente me cambié a Vim; pero tengo algunos problemas con el autocompletado. ¿Cómo puedo tener una sugerencia de código mientras escribo?

Normalmente desarrollo PHP, Ruby, HTML, C y CSS.

diegocstn
fuente

Respuestas:

144

Puede usar un complemento como AutoComplPop para obtener la finalización automática del código a medida que escribe.

Edición 2015: Yo personalmente uso YouCompleteMe ahora.

michaelmichael
fuente
10
Esto es muy recomendable. Reduce el esfuerzo de escribir CX CO, CP o CN.
Amjith
He intentado esto, pero parece que no funciona .. es probable que haya un conflicto con otros scripts ..
diegocstn
1
¿Está poniendo los archivos en los directorios especificados en ~ / .vim?
michaelmichael
1
@dieguitoweb ACP no funciona con todos los tipos de archivos de forma predeterminada. Tienes que "hackearlo" para que funcione con JavaScript, ActionScript y PHP. Aquí te explico cómo lo hago. Y aquí hay otra pista para PHP.
romainl
ahora funciona :) todos los archivos ya estaban en los directorios correctos. Solo reemplacé el script con una nueva descarga del repositorio de git y ahora está bien. muchas gracias
diegocstn
438

Use Ctrl- Npara obtener una lista de sugerencias de palabras mientras está en modo de inserción. Escriba :help i_CTRL-Npara ver la documentación de Vim sobre esta funcionalidad.

Aquí hay un ejemplo de importación del diccionario Python en Vim.

Orbita
fuente
15
gracias, esto es genial, pero ¿cómo puedo tener esta lista en automático sin presionar <ctrl + N>?
diegocstn
55
Eso es lo que michaelmichael te estaba diciendo con el complemento que mencionó. Además, puede mirar SuperTab.
projecktzero
44
Para compatibilidad con CSS, agregue el guión para autocompletar integrado agregando 'set iskeyword + = -' a su .vimrc
mahalie
3
Esta es la forma más completa y nativa de hacerlo: -)
Srikant
55
@ Hi-Angel, la parte 'automática' es que determina automáticamente las opciones para completar una palabra y automáticamente compite con la palabra al seleccionar una opción.
CJBS
26

Si está utilizando VIM versión 8+, simplemente escriba Ctrl + no Ctrl + p.

Ângelo Polotto
fuente
11

Puede comenzar desde la omnifuncconfiguración incorporada .

Sólo hay que poner:

filetype plugin on
au FileType php setl ofu=phpcomplete#CompletePHP
au FileType ruby,eruby setl ofu=rubycomplete#Complete
au FileType html,xhtml setl ofu=htmlcomplete#CompleteTags
au FileType c setl ofu=ccomplete#CompleteCpp
au FileType css setl ofu=csscomplete#CompleteCSS

en la parte inferior de su .vimrc, luego escriba <Ctrl-X><Ctrl-O>en modo de inserción.

Siempre confío en esta finalización de CSS.

ernix
fuente
que setlsignifica Gracias.
qed
Ok, lo tengo, significa setlocal. Pero, ¿por qué necesitamos setlocal aquí?
qed
Eche un vistazo a cómo le molesta cuando abre otro archivo en el mismo búfer.
ernix
2
@ernix Desde su enlace: Un búfer en Vim es ... una instancia abierta de un archivo ... Sé acerca de búferes, ventanas y pestañas; pero no sé acerca de abrir otro archivo en el mismo búfer. Me parece que cuando abre un archivo, siempre se abrirá en un nuevo búfer y agregará ese búfer a la lista de búferes. Sé que hay otras formas en que se usan los buffers, como la lista de soluciones rápidas, pero no sabía sobre cambiar qué archivo está en un búfer. :h buffersdice: Un búfer es un archivo cargado en la memoria para editarlo. Dicho esto, solo he estado usando Vim en serio durante 3 meses. y ciertamente estoy abierto a la corrección.
JakeD
1
@JakeD Ah sí. Tienes razón. Tomé "instancia" que significa el camino equivocado. No entendí que hablaras de procesos con diferentes PID. Lo siento, solo olvídate de lo que he dicho.
ernix
6

Recientemente descubrí un proyecto llamado OniVim , que es un front-end basado en electrones para NeoVim que viene con un autocompletado muy agradable para varios idiomas, y dado que es básicamente un envoltorio alrededor de NeoVim, tienes todo el poder de vim a su disposición si la GUI no satisface sus necesidades. Todavía está en desarrollo temprano, pero está mejorando rápidamente y hay una comunidad realmente activa a su alrededor. He estado usando vim durante más de 10 años y comencé a darle a Oni una prueba de manejo hace unas semanas, y aunque tiene algunos errores aquí y allá, no se ha interpuesto en mi camino. ¡Lo recomendaría encarecidamente a los nuevos usuarios de vim que todavía obtienen sus dedos vim!

ingrese la descripción de la imagen aquí

OniVim: https://www.onivim.io/

Parker Ault
fuente
32
para mí, todo el punto de vim es usar el terminal ... si quisiera usar una aplicación de electrones, solo usaría vscode con una extensión de vim ...
Mohamed Benkedadra
2
@MohamedBenkedadra ¿Pero eso realmente te daría todo el poder de Vim? Resulta que soy un gran admirador de su sistema de patrones de búsqueda y reemplazo, por un lado, y me sorprendería gratamente si un complemento de emulación vim lo admitiera.
SilverWolf - Restablecer Monica
3

He usado neocomplcache durante aproximadamente medio año. Es un complemento que recopila un caché de palabras en todos sus buffers y luego los proporciona para que los complete automáticamente.

Hay una serie de capturas de pantalla en la página del proyecto en el enlace anterior. Neocomplcache también tiene un montón de opciones de configuración, de las cuales también hay ejemplos básicos en la página del proyecto.

Si necesita más profundidad, puede consultar la sección correspondiente en mi vimrc , solo busque la palabra neocomplcache.

sp3ctum
fuente
1

Aquí hay un enlace ! para PHP

presione las teclas Ctrl + x seguido de Ctrl + o mientras escribe algunas funciones PHP.

Gracias a Oseems Solutions por el tutorial.

Brian Kenia
fuente
1

Si solo desea que se complete automáticamente desde el caché de sus memorias intermedias actuales, supertab es más fácil de instalar que neocomplete , puede funcionar en Mac preinstalado vim de fábrica sin la necesidad de MacVim.

Puedes consultar otras alternativas en vim awesome .

tning
fuente
0

Para PHP, Padawan con Deoplete son excelentes soluciones para tener un autocompletado PHP robusto en Neovim. ¡Probé muchas cosas y Padawan funciona de maravilla!

Para Vim puedes usar Neocomplete lugar de Deoplete.

Escribí un artículo sobre cómo hacer un IDE Vim PHP si alguien está interesado. Por supuesto, Padawan es parte de eso.

Matthieu
fuente
0

Otra opción es coc.nvim .

Es realmente rápido y la finalización es excelente, ya que utiliza intellisense la misma autocompletado que VScode. También tiene capacidades de linting. Entonces muestra que es posible que tenga un error. Es compatible con una multitud de idiomas.

Puede tomar un poco de tiempo configurarlo, pero creo que es el mejor motor de autocompletado para vim.

ak17
fuente