Antes de empezar comprueba que tu Vim ha sido compilado con soporte para Python buscando +python y +signs en la salida de:
$ vim --version
Si no es así, deberás compilarlo con el flag adecuado. Te recomiendo que, si estás en Debian/Ubuntu, pruebes primero gVim (Vim gráfico) puesto que éste sí me lo he encontrado en sus repositorios con soporte para Python.
Instalamos el paquete XDebug, en ArchLinux sería:
$ sudo pacman -Sy xdebug
Nos dirigim:os al fichero de configuración:
# sudo /etc/php/conf.d/xdebug.ini
Y añadimos/modificamos estas líneas: (La última indica el autoinicio de la depuración. Es opcional)
zend_extension=/usr/lib/php/modules/xdebug.so
xdebug.remote_enable=on xdebug.remote_host=127.0.0.1 xdebug.remote_port=9000 xdebus.remote_handler=dbgp xdebug.remote_autostart=1
Necesitamos un script para Vim. De los que he probado, éste es el más simple:
$ tar -xzvf debugger.tar.gz $ cp plugin/debugger.* ~/.vim/plugin/
Con nuestro código abierto en Vim, pulsamos F5 y en el navegador nos dirigimos a la página o la refrescamos. Debe hacerse en 10 segundos, así que será mejor que hayas mapeado alguna tecla para lanzar el navegador desde Vim. Tienes mi fichero de configuración en el enlace del menú, yo uso F12.
Como puedes ver en la imagen (click para ampliar), a la derecha del código se han abierto 3 nuevos paneles. Arriba se muestra la salida de los comandos del depurador que ejecutes. En este caso, pulsando F11 he obtenido los valores de las variables. Abajo aparecerán los posibles errores y demás información importante. En medio, como puedes observar, se encuentra la lista de atajos de teclado disponibles. Te traduzco aquí los principales:
F1 - Abrir/cerrar panel de depuración F2 - Avanzar entrando en las funciones F3 - Avanzar saltando las funciones F12 - Inspeccionar la propiedad bajo el cursor :Bp - Establecer/eliminar un punto de ruptura F11 - Obtener contexto F5 - Ejecutar el programa :Up/:Dn - Subir/bajar la traza
En mi caso, el proceso ha sido como sigue:
- Abro el código en Vim (vim foo.php ó en modo normal :e foo.php) y pulso F12. Se abrirá Chromium.
- Pulso F2 para empezar a seguir el flujo del programa entrando en las funciones, si me quiero saltar alguna: F3.
- Me voy a la línea 40 (pulsando 40G) y en modo normal escribo :Bp para establecer un punto de ruptura donde quiero detener la ejecución normal para observar las variables.
- Sigo pulsando F2/F3, Vim me muestra dónde me encuentro con la línea marcada (->), en este caso la 38.
- Llegado al punto de ruptura, pulso F11 y en el panel superior izquierdo aparecerán las variables con su contenido actual.
- Una de ellas no se ha inicializado, por tanto escribo :Up para retroceder en el flujo del programa y observar cuál es el problema.
Este, en principio, es el procedimiento básico de depuración. Como véis, es muy fácil hacerlo con vuestro editor favorito. Disponéis de la documentación del script de Vim para profundizar.
Como apunte final, decir que existen extensiones para los navegadores que permiten hacer el proceso desde el navegador. Lamentablemente, ninguna soporta Vim, como era de esperar. Aunque si llevas algún tiempo con él, seguramente le habrás cogido cariño y no haya un lugar más cómodo en tu PC que una ventana de Vim :)

No hay comentarios:
Publicar un comentario