Breaking

Post Top Ad

Your Ad Spot

martes, 9 de julio de 2019

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 cada distribución de Linux, así como a Mac OSX. Vim sigue su propio concepto de uso, lo que hace que la comunidad se divida entre fuertes partidarios y oponentes vehementes que están a favor de otros editores como Emacs. (Por cierto, eso es muy bueno en invierno para ver a los dos equipos entusiastas luchando juntos en forma de bola de nieve).
Vim puede ser individualizado y extendido usando complementos 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 está limitado a palabras que ya existen en el búfer de texto actual. En el modo de inserción, utilizando la combinación de teclas CTRL+Nobtienes la siguiente palabra en el búfer actual y CTRL+Pla última. En cualquier caso, aparece un menú con palabras en el que puede elegir la palabra que desea pegar en el texto en la posición actual del cursor del documento.
Una selección de palabras para elegir
Esto ya es bastante genial. Afortunadamente, existe la misma característica para líneas de texto completas. En el modo de inserción, presione CTRL+Xprimero, seguido de CTRL+LAparece un menú con líneas similares desde las que elige la línea que desea pegar en el texto en la posición actual del cursor del documento.
Una selección de líneas para elegir
Para desarrollarse efectivamente en Python, Vim contiene un módulo estándar llamado python complete(Python Omni Completion). Para activar este complemento, agregue las siguientes dos líneas a su archivo de configuración Vim .vimrc:
filetype plugin on  
set omnifunc=syntaxcomplete#Complete  
Luego, en la ventana del editor Vim, la finalización funciona en el modo de inserción en función de la combinación de teclas CTRL+Xseguida de CTRL+OAparece un submenú que le ofrece funciones de Python y palabras clave para usar. Las entradas del menú se basan en las descripciones del módulo de Python ("cadenas de documentación"). El siguiente ejemplo muestra la abs()función con ayuda adicional en la parte superior de la pantalla del editor vim.
Una selección de palabras clave para elegir
El siguiente plugin que me gustaría discutir se llama Jedi-Vim . Conecta a Vim con la biblioteca de autocompletado Jedi .
Habiendo instalado el paquete correspondiente en su sistema Debian GNU / Linux, se necesita un paso adicional para que funcione Jedi-Vim. El complemento debe activarse mediante el administrador de complementos 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, compruebe el estado del complemento:
$ vim-addons status python-jedi
# Name                     User Status  System Status 
python-jedi                 installed     removed  
Ahora el complemento está activado y puede usarlo en Vim durante la programación. Tan pronto como escribe un punto o presiona, CTRL+Spaceel menú se abre y le muestra los nombres de los métodos y operadores que podrían encajar. La imagen de abajo muestra las entradas correspondientes del csvmódulo. Tan pronto como elija un elemento del menú, se pegará en su código fuente.
Jedi-Vim en acción
Un complemento interactivo es youcompleteme . Se describe a sí mismo como "un motor de finalización de código de búsqueda rápida, a medida que usted escribe, difuso 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 admite C #, Go, Rust y Java.
Proporcionado en un repositorio 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-getlos siguientes pasos lo hará funcionar . Primero, habilite el paquete usando el Administrador de complementos Vim ( 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, compruebe el estado del complemento. La siguiente salida le muestra que el complemento se ha instalado correctamente como usuario regular:
$ vim-addons status youcompleteme
# Name                     User Status  System Status 
youcompleteme              installed    removed  
En tercer lugar, copie el ycm_extra_conf.pyarchivo predeterminado del directorio de ejemplos en 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 .vimrcarchivo:
" 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 complemento youcompleteme. Et voila - ahora Vim acepta la finalización automática del código. Cuando vea que se ofrece una cadena de terminación útil, presione la TABtecla para aceptarla. Esto inserta la cadena de finalización en la posición actual. Pulsaciones repetidas del TABciclo de teclas a través de las terminaciones ofrecidas.
El plugin youcompleteme en acción.

Resaltado de sintaxis

Vim ya viene con resaltado de sintaxis para una gran cantidad de lenguajes de programación que incluye Python. Hay tres complementos que ayudan a mejorarlo: uno se llama python-syntax , el otro es python-mode , y el tercero es python.vim .
Entre otros, el sitio del proyecto python-syntax enumera una gran cantidad de mejoras, como el resaltado de excepciones, pruebas de documentos, errores y constantes. Una buena característica es el cambio entre el resaltado de sintaxis para Python 2 y 3 basado en un comando Vim adicional - :Python2Syntax:Python3SyntaxEsto ayuda a identificar posibles cambios que se requieren para ejecutar su script con ambas versiones.
Cambiando entre Python 2 y 3

Combinando Vim con el Sistema de Control de Revisión 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 de Python, el intérprete crea una serie de archivos temporales como__pycache__*.pycLos cambios de estos archivos no necesitan ser rastreados en Git. Para ignorarlos, Git ofrece la característica de un llamado .gitignorearchivo. Cree este archivo en su rama de desarrollo gestionado por Git con los siguientes contenidos:
*.pyc
__pycache__  
Además, agregue un READMEarchivo para su proyecto para documentar de qué se trata. No importa qué tan pequeño sea su proyecto, el READMEarchivo lo ayuda a usted (y a otros) a recordar qué se supone que debe hacer el código. Escribir este archivo en formato Markdown es especialmente útil si sincroniza su código Python con su repositorio en GitHub. El READMEarchivo se procesa automáticamente en HTML, que puede verse fácilmente en su navegador web.
Vim puede colaborar con Git directamente utilizando complementos especiales. Entre otros, hay vim-fugitive , gv.vim y vimagit . Todos ellos están disponibles en Github, y en su mayoría como un paquete para Debian GNU / Linux.
Haber descargado vim-fugitive via apt-getnecesita ser activado de una manera similar a como lo hicimos 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 complemento funciona con archivos que se rastrean con Git, solo. Un gran número de comandos de Vim se disponga de tales como :Gedit:Gdiff:Gstatus:Ggrep:GlogComo se indica en el sitio web del proyecto, estos comandos Vim se corresponden con los siguientes comandos y acciones de Git:
  • :Gedit: Edite un archivo en el índice y escríbalo para poner en escena los cambios
  • :Greadgit checkout -- filename): Carga el contenido del archivo en el búfer actual
  • :Gwritegit add): Agrega el archivo a la lista de archivos actualmente rastreados
  • :Gdiffgit diff): Muestre la versión preparada del archivo junto con la versión del árbol de trabajo y use las capacidades de manejo de diferencias de Vim para organizar un subconjunto de los cambios del archivo
  • :Gmovegit mv): Mueve un archivo a una nueva ubicación
  • :Gstatusgit status): Muestra el estado actual de su directorio Git
  • :Gcommitgit commit): Confirma tus cambios.
  • :Ggrepgit grep): Busca el patrón dado en el repositorio Git
  • :Gloggit log): Carga todas las revisiones anteriores de un archivo en la lista de soluciones rápidas para que pueda recorrerlas y ver cómo evoluciona el archivo.
  • :Gblamegit blame): Muestra quién hizo los últimos cambios en un archivo.
Averiguar quién cambió qué línea de código usando `: Gblame`

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á un shebang , licencia, cadena de documentos e información de 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 para usted.
Digamos, por ejemplo, que desea que todos los archivos nuevos de Python comiencen con el siguiente texto:
#!/user/bin/env python3
"""
[Add module documentation here]

Author: Frank  
Date: [Add date here]  
"""
Usted crearía un archivo con este contenido y lo llamaría algo como "skeleton.py", y luego lo movería al directorio ~/.vim/skeleton.pyPara decirle a Vim qué archivo debe usarse como el archivo de esqueleto de Python, agregue lo siguiente a su archivo .vimrc:
au BufNewFile *.py 0r ~/.vim/skeleton.py  
Esto le indica a Vim que use el archivo de esqueleto especificado para todos los archivos nuevos que coincidan con el nombre de archivo "* .py".

Notas sobre el uso de complementos

Por lo general, Vim es bastante rápido. Cuantos más plugins actives, más tiempo llevará. El inicio de Vim se retrasa, y demora notablemente más que antes. Además, es común que los paquetes Debian / Ubuntu funcionen de manera inmediata, y los scripts de instalación incluyen todos los pasos para configurar el complemento correctamente. Noté que este no es el caso, y algunas veces se requieren pasos adicionales.

Más recursos

Hay una serie de cursos y publicaciones de blog que cubren varias configuraciones de Vim para el uso diario como desarrollador de Python, que recomiendo encarecidamente visitar.
El siguiente curso apunta a que domines Vim en cualquier sistema operativo, ayudándote a obtener un nivel de conocimiento y comodidad con el editor que es difícil de lograr con solo leer los artículos:
El resto son algunos recursos excelentes de toda la web que también nos parecen muy útiles:
Estos artículos ayudan a ampliar sus conocimientos. Disfrutar :)

No hay comentarios.:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

Post Top Ad

Your Ad Spot

Páginas