Lo único que puedo hacer con Python omnicomplete para trabajar son los módulos del sistema. No recibo ayuda con los módulos en mi sitio: paquetes o módulos en los que estoy trabajando actualmente.¿Hay alguna manera de hacer que python omnicomplete funcione con módulos que no sean del sistema en vim?
Respuesta
Completo mis propios módulos en mi PYTHONPATH o site-packages. No estoy seguro de qué versión del script pythoncomplete.vim está utilizando, pero es posible que desee asegurarse de que sea la última.
EDIT: He aquí algunos ejemplos de lo que estoy viendo en mi sistema ...
Este archivo (mymodule.py), que puth en un directorio en PYTHONPATH, y luego en site-packages. Ambas veces pude obtener la captura de pantalla a continuación.
myvar = 'test'
def myfunction(foo='test'):
pass
class MyClass(object):
pass
screenshot http://i437.photobucket.com/albums/qq96/jmcantrell/screenshot.png
Acabo de encontrar esto en Python reddit esta noche: PySmell. Parece lo que estás buscando.
PySmell es un complemento de IDE de Python.
Trata de analizar estáticamente el código fuente de Python, sin ejecutarlo, y genera información sobre la estructura de un proyecto que las herramientas IDE pueden usar.
Creo que su después del script pydiction. Te permite agregar tus propias cosas y paquetes de sitios para completar todo.
Mientras estás en ello, añada lo siguiente a su archivo python.vim ...
set iskeyword+=.
Esto le permitirá funciones del paquete de auto-completado por ejemplo, si ingresa ...
os.path.
y luego [CTRL] [N], obtendrá una lista de las funciones de os.path.
Una vez me genera ctags para uno de mis site-packages, que comenzó a trabajar para ese paquete - así que supongo que la función depende de omnicomplete ctags para módulos no sys.
EDITAR: No es cierto en absoluto.
Aquí está el problema - las malas pruebas de mi parte - omnicompleto estaba trabajando para partes de mi proyecto, pero no la mayor parte.
El problema es que estoy trabajando en un proyecto django, y para importar django.db, necesita tener una variable de entorno establecida. Como no podía importar django.db, cualquier clase heredada de django.db, o cualquier módulo que importara una clase heredada de django.db, no se completaría.
Tuve el mismo problema, excepto con las bibliotecas de motores de aplicaciones, no django ... gracias por ayudarme a resolverlo – gravitation
Tuve este problema unas cuantas veces más, lo primero que siempre hago es tratar de importar el módulo en el intérprete de vanilla , eso siempre parece mostrar dónde está el error. Si usa django o el motor de la aplicación o lo hace muchas veces, importa en un orden diferente al del intérprete, lo que puede causar problemas. – gravitation
Si bien es importante tener en cuenta que debe establecer correctamente la variable de entorno PYTHONPATH
, según la respuesta anterior, existe un notable bug in Vim which prevents omnicompletion from working when an import fails. A partir de Vim 7.2.79, este error no se ha corregido.
Sugerencia para solucionar problemas: verifique que el módulo que está tratando de omni-completar puede ser importado por VIM.Tenía un poco de Python sintácticamente correcto que VIM no le gustaba:
:python import {module-name}
Traceback (most recent call last):
File "<string>", line 1, in ?
File "modulename/__init__.py", line 9
class empty_paranthesis():
^
SyntaxError: invalid syntax
Case-en-punto, la eliminación del paréntesis de mi definición de la clase permitió VIM para importar el módulo, y posteriormente OmniComplete en ese módulo empecé a trabajar.
- 1. ¿Hay alguna manera de hacer que un ExecutorService funcione recursivamente?
- 2. ¿Hay alguna manera de cambiar el comportamiento del menú vim omnicomplete?
- 3. git-svn: ¿hay alguna manera de hacer que funcione bien con los submódulos, o ignorarlos?
- 4. ¿Hay alguna manera de hacer que la unión de C# funcione de manera estática?
- 5. ¿Hay alguna manera de que Asio funcione sin Boost?
- 6. ¿Hay alguna manera de hacer que los empleos en Jenkins sean mutuamente exclusivos?
- 7. ¿hay alguna manera de hacer que título = atributo funcione en Chrome?
- 8. ¿Hay alguna manera de hacer que TFS se pueda enlazar?
- 9. ¿Hay alguna manera de hacer que las celdas DataGridViewCheckBox sean más pequeñas?
- 10. ¿Hay alguna forma de que jadclipse funcione con Eclipse 3.4?
- 11. ¿Hay alguna manera de generar un pdf que contenga símbolos que no sean ascii con pisa de la plantilla django?
- 12. ¿Hay alguna manera de hacer que los controles sean transparentes para los eventos del mouse en WPF?
- 13. ¿Hay alguna manera de que los argumentos sean var en lugar de val?
- 14. ¿Hay alguna manera fácil de hacer que ScrollViewer sea "hinchable"?
- 15. GHC no optimiza módulos que no sean el módulo principal
- 16. ¿Hay alguna manera de hacer que python se convierta en interactivo en medio de un script?
- 17. No sé cómo hacer que __slots__ funcione
- 18. ¿Hay alguna manera de hacer que UserControl sea inafocable?
- 19. ¿Cómo hacer que HTML5 funcione con DOMDocument?
- 20. ¿Hay alguna manera de hacer que Guice Grapher trabaje?
- 21. ¿Hay alguna manera de hacer que el texto no se pueda seleccionar en una página HTML?
- 22. ¿Hay alguna manera en que pueda hacer que g ++ solo emita advertencias relacionadas con mis archivos?
- 23. ¿Hay alguna manera de hacer que IE8 no ignore una regla CSS que solo entiende parcialmente?
- 24. En python, ¿hay alguna manera de hacer que los hilos mueran cuando ya no hay una referencia a ellos?
- 25. vim omnicomplete vs. vim intellisense
- 26. ¿Cómo hacer que SVG funcione con IE?
- 27. ¿Cómo hacer que file_get_contents() funcione con HTTPS?
- 28. ¿Hay alguna manera de usar variables locales en los módulos?
- 29. No se puede hacer que Resque funcione
- 30. ¿Hay alguna distribución de Linux que viene con python 3?
Acabo de descargar la versión más reciente - ¡sin suerte! ¿Cómo lo estás habilitando? ¿Estás usando CTAGs también? – andrew
¿cómo lo estás probando? intente simplemente poner algo así como "import sys" y luego haga "sys." –
Como dije antes, los módulos del sistema omnicompletan muy bien. Son los módulos en mi sitio-paquetes para los que no estoy completando. – andrew