Vim para el desarrollo de Python

    ¿Qué es Vim?

    Vim es un potente editor de texto que pertenece a uno de los componentes predeterminados en todas las distribuciones de Linux, así como en Mac OSX. Vim sigue su propio concepto de uso, lo que hace que la comunidad se divida en partidarios fuertes y oponentes vehementes que están a favor de otros editores como Emacs. (Por cierto, eso es muy agradable en invierno para ver a los dos equipos entusiastas tener una extensa pelea de bolas de nieve juntos).

    Vim se puede personalizar y ampliar con plugins adicionales para ajustar la herramienta a sus necesidades específicas. En este artículo destacamos una selección de extensiones y discutimos una configuración útil para mejorar el desarrollo de software con Python.

    Autocompletar

    Vim ya está equipado con una función de autocompletar. Esto funciona bien, pero se limita a palabras que ya existen en el búfer de texto actual. En el modo de inserción, usando la combinación de teclas CTRL+N obtienes la siguiente palabra en el búfer actual, y CTRL+P el último. De cualquier manera, aparece un menú con palabras en el que puede elegir la palabra que se pegará en el texto en la posición actual del cursor del documento.

    Esto ya es bastante bueno. Afortunadamente, la misma función existe para líneas completas de texto. En el modo de inserción presione CTRL+X primero, seguido de CTRL+L. Aparece un menú con líneas similares entre las que puede elegir la línea que le gustaría pegar en el texto en la posición actual del cursor del documento.

    Para desarrollar eficazmente en Python, Vim contiene un módulo estándar llamado pythoncomplete (Finalización de Python Omni). Para activar este plugin, agregue las siguientes dos líneas a su archivo de configuración de Vim .vimrc:

    filetype plugin on
    set omnifunc=syntaxcomplete#Complete
    

    Luego, en la ventana del editor de Vim, la finalización funciona en modo de inserción según la combinación de teclas CTRL+X seguido por CTRL+O. Aparece un submenú que le ofrece funciones de Python y palabras clave para usar. Las entradas del menú se basan en las descripciones de los módulos de Python («cadenas de documentación»). El siguiente ejemplo muestra el abs() función con ayuda adicional en la parte superior de la pantalla del editor de vim.

    El siguiente plugin que me gustaría discutir se llama Jedi-Vim. Conecta Vim con el Jedi biblioteca de autocompletado.

    Habiendo instalado el paquete correspondiente en su sistema Debian GNU / Linux, necesita un paso adicional para que Jedi-Vim funcione. El plugin debe activarse utilizando el administrador de plugins de Vim de la siguiente manera:

    $ vim-addons install python-jedi
    Info: installing removed addon 'python-jedi' to /home/frank/.vim
    Info: Rebuilding tags since documentation has been modified ...
    Processing /home/frank/.vim/doc/
    Info: done.
    

    A continuación, verifique el estado del plugin:

    $ vim-addons status python-jedi
    # Name                     User Status  System Status 
    python-jedi                 installed     removed
    

    Ahora el plugin está activado y puede usarlo en Vim mientras programa. Tan pronto como escriba un punto o presione CTRL+Space el menú se abre y muestra los nombres de métodos y operadores que podrían encajar. La siguiente imagen muestra las entradas correspondientes del csv módulo. Tan pronto como elija un elemento del menú, se pegará en su código fuente.

    Un plugin interactivo es tu me completas. Se describe a sí mismo como «un motor de finalización de código rápido, a medida que escribe y búsqueda difusa para Vim». Para Python 2 y 3, la finalización automática también se basa en Jedi. Entre otros lenguajes de programación, también es compatible con C #, Go, Rust y Java.

    Proporcionado en un repositorio de Git, la configuración requiere pasos adicionales para poder usarlo. El paquete en Debian GNU / Linux viene con una versión compilada y después de instalar el paquete a través de apt-get la siguientes pasos será hazlo funcionar. Primero, habilite el paquete usando Vim Addon Manager (vam) o el comando vim-addons:

    $ vim-addons install youcompleteme
    Info: installing removed addon 'youcompleteme' to /home/frank/.vim
    Info: Rebuilding tags since documentation has been modified ...
    Processing /home/frank/.vim/doc/
    Info: done.
    

    A continuación, verifique el estado del plugin. El resultado a continuación le muestra que el plugin se instaló correctamente para usted como usuario habitual:

    $ vim-addons status youcompleteme
    # Name                     User Status  System Status 
    youcompleteme              installed    removed
    

    En tercer lugar, copie el valor predeterminado ycm_extra_conf.py archivo del directorio de ejemplos a su ~/.vim/ carpeta de la siguiente manera:

    $ cp -v /usr/share/doc/vim-youcompleteme/examples/ycm_extra_conf.py .ycm_extra_conf.py
    "/usr/share/doc/vim-youcompleteme/examples/ycm_extra_conf.py" -> ".ycm_extra_conf.py"
    

    El último paso es agregar las siguientes dos líneas a su .vimrc archivo:

    " youcompleteme
    let g:ycm_global_ycm_extra_conf = "~/.vim/.ycm_extra_conf.py"
    

    La primera línea es un comentario que podría omitirse, y la segunda línea define el archivo de configuración para el plugin youcompleteme. Et voila: ahora Vim acepta la finalización automática del código. Cuando vea que se ofrece una cadena de finalización útil, presione el TAB clave para aceptarlo. Esto inserta la cadena de finalización en la posición actual. Pulsaciones repetidas del TAB ciclo clave a través de las terminaciones ofrecidas.

    Resaltado de sintaxis

    Vim ya viene con resaltado de sintaxis para una gran cantidad de lenguajes de programación que incluyen Python. Hay tres plugins que ayudan a mejorarlo: uno se llama sintaxis de python, el otro es modo python, y el tercero es python.vim.

    Entre otros, el sitio del proyecto de sintaxis python enumera una gran cantidad de mejoras, como el resaltado de excepciones, pruebas de documentación, errores y constantes. Una buena característica es el cambio entre el resaltado de sintaxis para Python 2 y 3 basado en un comando adicional de Vim: :Python2Syntax y :Python3Syntax. Esto ayuda a identificar los posibles cambios necesarios para ejecutar su script con ambas versiones.

    Combinando Vim con el sistema de control de revisiones Git

    El control de revisiones es bastante esencial para los desarrolladores y Git es probablemente el mejor sistema para eso. Al compilar el código Python, el intérprete crea una serie de archivos temporales como __pycache__ y *.pyc. No es necesario realizar un seguimiento de los cambios de estos archivos en Git. Para ignorarlos, Git ofrece la característica de un llamado .gitignore archivo. Cree este archivo en su rama de desarrollo administrada por Git con el siguiente contenido:

    *.pyc
    __pycache__
    

    Además, agregue un README archivo para que su proyecto documente de qué se trata. No importa cuán pequeño sea su proyecto, README file le ayuda a usted (y a otras personas) a recordar para qué sirve el código. Escribir este archivo en formato Markdown es especialmente útil si sincroniza su código Python con su repositorio en GitHub. los README El archivo se procesa automáticamente en HTML que se puede ver fácilmente en su navegador web, luego.

    Vim puede colaborar con Git directamente usando plugins especiales. Entre otros hay vim-fugitivo, gv.vim y vimagit. Todos ellos están disponibles en Github y principalmente como paquete para Debian GNU / Linux.

    Habiendo descargado vim-fugitive a través de apt-get debe activarse de manera similar a como se hizo antes con los otros plugins:

    $ vim-addons install fugitive 
    Info: installing removed addon 'fugitive' to /home/frank/.vim
    Info: Rebuilding tags since documentation has been modified ...
    Processing /home/frank/.vim/doc/
    Info: done
    

    Este plugin solo funciona con archivos que se rastrean con Git. Hay disponible una gran cantidad de comandos Vim adicionales, como :Gedit, :Gdiff, :Gstatus, :Ggrep y :Glog. Como se indica en el sitio web del proyecto, estos comandos de Vim se corresponden con los siguientes comandos y acciones de Git:

    • :Gedit: Edite un archivo en el índice y escríbalo para organizar los cambios.
    • :Gread (git checkout -- filename): Carga el contenido del archivo en el búfer actual
    • :Gwrite (git add): Agrega el archivo a la lista de archivos actualmente rastreados
    • :Gdiff (git diff): Muestra la versión preparada del archivo junto con la versión del árbol de trabajo y usa las capacidades de manejo de diferencias de Vim para organizar un subconjunto de los cambios del archivo
    • :Gmove (git mv): Mueve un archivo a una nueva ubicación
    • :Gstatus (git status): Muestra el estado actual de su directorio Git
    • :Gcommit (git commit): Confirme sus cambios
    • :Ggrep (git grep): Busca el patrón dado en el repositorio de Git
    • :Glog (git log): Carga todas las revisiones anteriores de un archivo en la lista de corrección rápida para que pueda iterar sobre ellas y ver cómo evoluciona el archivo.
    • :Gblame (git blame): Muestra quién hizo los últimos cambios en un archivo

    Trabajando con esqueletos

    Los archivos de esqueleto (o plantillas) son una buena característica de Vim que ayuda a mejorar su productividad al agregar texto predeterminado a un archivo cuando se crea uno nuevo. Por ejemplo, en muchos archivos de Python tendrá la el asunto, licencia, cadena de documentos e información del autor al principio del archivo. Sería una molestia tener que escribir o incluso copiar esta información en cada archivo. En su lugar, puede usar archivos de esqueleto para agregar este texto predeterminado por usted.

    Digamos, por ejemplo, que desea que todos los archivos Python nuevos comiencen con el siguiente texto:

    #!/user/bin/env python3
    """
    [Add module documentation here]
    
    Author: Frank
    Date: [Add date here]
    """
    

    Debería crear un archivo con este contenido y llamarlo algo como «skeleton.py», y luego moverlo al directorio ~/.vim/skeleton.py. Para decirle a Vim qué archivo debe usarse como archivo esqueleto para Python, agregue lo siguiente a su archivo .vimrc:

    au BufNewFile *.py 0r ~/.vim/skeleton.py
    

    Esto le dice a Vim que use el archivo esqueleto especificado para todos los archivos nuevos que coincidan con el nombre de archivo «* .py».

    Notas sobre el uso de plugins

    Por lo general, Vim es bastante rápido. Cuantos más plugins active, más tiempo llevará. El inicio de Vim se retrasa y lleva notablemente más tiempo que antes. Además, es común que los paquetes Debian / Ubuntu funcionen de inmediato, y los scripts de instalación incluyen todos los pasos para configurar el plugin correctamente. Me di cuenta de que este no es el caso y, a veces, se requieren pasos adicionales.

    Más recursos

    El resto son excelentes recursos de la web que también nos han resultado muy útiles:

    Estos artículos ayudan a ampliar sus conocimientos. Disfruta 🙂

    Etiquetas:

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *