2011-09-09 17 views
7

He recorrido toda la web tratando de encontrar la forma de que VIM tenga una finalización de código similar a PyDev. ¡No parece que sea posible!finalización de código introspectivo con VIM? ... u otro editor liviano con esta característica?

-He intentado utilizar la omnicompleción sugerida en este enlace: http://blog.dispatched.ch/2009/05/24/vim-as-python-ide/.

-He probado varios complementos para aliviar el problema, ninguno funciona.

La funcionalidad "omnicompleta" NO es lo que estoy buscando. Simplemente toma todas las palabras del archivo en el que está trabajando y las usa para tratar de completar lo que estoy haciendo. Por ejemplo si escribía:

import numpy 
a_single_array = range(100) 
np.a#[then I hit cntrl+n to code complete] 

Sería escupir "a_single_array" como una posible conclusión - pero eso es absurdo! No es una finalización válida para "numpy.a ..."

¿Cuál es el problema aquí? Todo lo que el complemento debería hacer es ejecutar un directorio (trabajo que desea buscar) desde la carpeta en la que se encuentra y luego filtrar la salida. ¡Esto no puede ser tan difícil! (Supongo que también deberías leer el archivo que estás editando actualmente y filtrarlo también para tomar nota de los cambios de nombres ... ¡pero eso es más o menos!)

Hablando de lo fácil que sería ... si no hay nada hecho, ¡estaba pensando en escribir el guión! ¿Alguna guía sobre cómo hacer ESO?

Respuesta

7

No, la funcionalidad de compleción omni es EXACTAMENTE lo que está buscando.

está usando el <C-n> en lugar de <C-x><C-o>:

  • tipo <C-n> & <C-p> para completar con las palabras de la memoria intermedia (después y antes de que el cursor respectivamente)
  • tipo <C-x><C-o> para completar método/nombres de propiedades

Se explica específicamente en el artículo que ha vinculado:

En V7, VIM introdujo omni finalización, dado que está configurado para reconocer Python (si no, esta característica está solo a un plugin) Ctrl + x Ctrl + o abre un cuadro de diálogo desplegable como cualquier otro IDE - incluso el todo el Pydoc se muestra en una ventana dividida.

+0

Gracias, estaba presionando el botón incorrecto. Todavía estoy teniendo problemas para conseguir la funcionalidad que estoy buscando, y me mudé a Spyder (que en realidad es un IDE bastante liviano ... bueno, comparado con Eclipse al menos). –

1

No tengo idea acerca de las diversas opciones de finalización para Python en Vim. Pero si quieres rodar su propia que sería aconsejable estudiar y modificar uno de los ya existentes, así:

http://www.vim.org/scripts/script.php?script_id=1542

Además, si todo tu omnicompletion está haciendo es decir el listado de archivo actual entonces no lo tienes configurado correctamente para la finalización específica de Python. . . . No estoy seguro de cuán buenos son los sistemas de finalización de Python especializados, pero ciertamente compiten en base a unidades de Python externas a su archivo actual. . . .

4

Ctrln es insertar-finalización.

CtrlxCtrlo es omni-finalización.

que reasignar a omnicompletion Ctrlespacio:

inoremap <C-Space> <C-x><C-o> 

También puede probar SuperTab.

Cuestiones relacionadas