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 *