Vim es Zen

Depurar aplicaciones PHP ha sido siempre una tarea titánica. Esto no es debido al lenguaje, sino a la arquitectura web que normalmente se utiliza. Lo cierto es que no era habitual contar con depuración paso a paso ni análisis de variables ni con las ayudas habituales de cualquier depurador.

Pero todo esto cambió con XDebug. Ahora sí es posible depurar PHP como es debido.

XDebug incluye soporte para DBGp, un protocolo de comunicación entre herramientas de desarrollo (nuestro Vim) y motores de aplicación (nuestro Apache).

Para instalarlo realizamos dos pasos: primero configuramos el servidor Apache y luego nuestro Vim.

La configuración del servidor Apache consiste en instalarle el módulo XDebug (en Debian apt-get install php5-xdebug).

La configuración de Vim consiste en instalarse el plugin para que actúe como cliente DBGp. La instalación consiste en descomprimir los archivos en el directorio ~/.vim/plugin.

Para utilizarlo primero tenemos que llamar a nuestra aplicación web pasándole el parámetro XDEBUG_SESSION_START=1. Lo hacemos llamando en nuestro navegador a una url del estilo http://example.com/index.php?XDEBUG_SESSION_START=1

Una vez cargada, abre el Vim, pulsa F5 y aparecerá un mensaje "Waiting for a new connection...". Refresca en el navegador la página que quieras depurar y esta aparecerá en tu Vim con varias ventanas de depuración (Watch Window, Help Window, Stack Window y Trace Window). La ventana de Help te mostrará los comandos disponibles (Step Over, Step Into, Toggle Breakpoint, eval...). Todo lo que necesitas para depurar tu aplicación.

Nota: Si F5 está ocupada (por ejemplo por el plugin de Check Syntax) la tecla para iniciar la depuración será F9.

Nota: Si sois varios los que tenéis que trabajar sobre el mismo servidor, necesitaréis asignaros cada uno un puerto diferente. Se explica como hacerlo en la referencia de tech.blog.box.net (más abajo).

Bug: El script de Vim para DBGp no soporta rutas con caracteres no estándar (acentos, eñes...). Además tienes que tener acceso al directorio donde residan los ficheros en el servidor.

 

 

Frecuentemente necesitamos acceder a una clase, método, función o constante de nuestro código. Y tenemos que hacerlo desde otro fichero en el que nos encontramos programando. Para hacer esto fácilmente tenemos los Tags.

Con los tags, podemos poner el cursor sobre una palabra (clase, método, función...) y, pulsando CTRL-], o CTRL-LeftMouse, accederemos directamente a su definición. Pulsando CTRL-T o CTRL-RightMouse volveremos al fichero y posición anteriores.

Debo indicar que, al menos en mi caso CTRL-] no funciona (porque estoy en modo visual). Debo utilizar CTRL-5 (o las opciones con el ratón ya indicadas).

Si queremos que la definición del término se abra en una nueva ventana, debemos pulsar previamente CTRL-W.

Para instalarlo necesitaremos el programa ctags-exuberant en nuestro sistema.

Para hacerlo funcionar primero debemos generar el fichero de tags, en el que se guardan referencias de cada término y luego indicarle a Vim qué fichero debe utilizar como fichero de tags. Vamos por pasos:

Para generar el fichero de tags de un directorio de trabajo se puede utilizar un script como este:

	#!/bin/bash
	cd /path/directorio/proyecto
	exec ctags-exuberant -f proyecto.tags \
	-h ".php" -R \
	--exclude="\.svn" \
	--exclude="\doc" \
	--exclude="\PHPUnit" \
	--exclude="\jsunit" \
	--totals=yes \
	--tag-relative=yes \
	--PHP-kinds=+cf \
	--regex-PHP='/abstract class ([^ ]*)/\1/c/' \
	--regex-PHP='/interface ([^ ]*)/\1/c/' \
	--regex-PHP='/(public |static |abstract |protected |private )+function ([^ (]*)/\2/f/'

 

Estas opciones, que se basan en la explicación de Mathew Weier O'Phinney Exuberant ctags with PHP in Vim, generan un fichero de tags con el nombre proyecto.tags, excluyen diversos directorios (svn, doc, PHPUnit y jsunit), con paths relativos al directorio, incluyendo funciones, etc. (ver man ctags-exuberant).

Una vez creado el fichero de tags (actualizado periódicamente según avance el proyecto), lo cargamos en Vim con :set tags=proyecto.tags.

Y ya lo tenemos listo.

Otra característica útil de un buen IDE es el acceso a bases de datos sin necesidad de salir del entorno. Esto nos permite comprobar consultas SQL, diseñar modelos de datos y, sobre todo, copiar resultados directamente al código. Todo esto podemos hacerlo con Vim.

Para ello, necesitamos instalarnos el plugin DBext. Con él podremos conectarnos a distintas bases de datos (MySQL, Oracle, Sybase, SQL-Server...) desde nuestro Vim.

Para instalarlo, lo de siempre. Te descargas el plugin y lo descomprimes en tu directorio ~/.vim. Luego es necesario actualizar el fichero de ayuda de Vim para que incluya los comandos de DBext con :helptags ~/.vim/doc.

Para utilizarlo, lo mejor es empezar ejecutando :help dbext-tutorial, que nos dará acceso al tutorial del plugin que es imprescindible leer. DBext tiene una amplia funcionalidad y, entre otras cosas, tendremos que crear los perfiles de conexión a bases de datos que queramos utilizar.

Si estás desarrollando código, seguro que utilizas algún repositorio (cvs, subversion, svk...). Vim te permite acceder y gestionar el repositorio sin necesidad de salir del IDE.

Para hacerlo necesitas instalárte el plugin VCS. Con él podremos gestionar diferentes repositorios (subversion, cvs, svk y git), realizando commits, viendo diferencias entre versiones, comprobando quien realizó los últimos cambios, etc.

Para instalarlo, lo de siempre. Te descargas el plugin y lo descomprimes en tu directorio ~/.vim. Luego es necesario actualizar el fichero de ayuda de Vim para que incluya los comandos de VCS con :helptags ~/.vim/doc.

Para utilizarlo, tendrás que consultar la ayuda. Estos son algunos de los comandos más utilizados:

  • :VCSAdd - Añade el fichero actual al control de versiones.
  • :VCSAnnotate - Muestra el fichero actual con indicación de la revisión de cada línea y del usuario que la realizó.
  • :VCSCommit - Hace un commit del fichero actual. Si se añade un argumento será el mensaje.
  • :VCSDelete - Borra el fichero actual y lo elimina del repositorio.
  • :VCSDiff - Muestra las diferencias del fichero actual con la última versión del repostorio. Es posible indicar una revisión como argumento.
  • :VCSInfo - Muestra información del fichero actual.
  • :VCSLog - Muestra la información histórica del fichero actual.
  • :VCSUpdate - Actualiza el fichero actual con la última versión del repositorio.

Hay otros muchos plugins y comandos de Vim que te permitirán configurar un IDE a tu gusto. Analiza como trabajas, identifica lo que echas en falta y búscalo. Seguro que ya existe.

Estos son algunos otros plugins que pueden resultar útiles:

  • MatchIt - Amplía el comando % a coincidencias HTML, XML e incluso lenguajes de programación.
  • NERDTree - Crea una ventana con un árbol para navegación en directorios.
  • NERDCommenter - Comenta bloques enteros de código.
  • SQLUtilities - Ayuda a formatear las consultas SQL.
  • BufExplorer - Facilita la navegación entre buffers.
  • Project - Organiza los ficheros de un proyecto mostrándolos en una ventana.
  • Align - Facilita la alineación del código mejorando la presentación.

Lo que necesitas:

logo transp

Sobre Ilke Benson

Dónde estamos     

C/ Donoso Cortés, 6 - 3º. Oficina 10
06002 Badajoz (Extremadura)

     
Teléfono  

telf: +34 924 98 34 19

fax: +34 924 98 34 19

Email  

  

info@ilkebenson.com

  

Pídenos

Es importante estar conectado con nuestros clientes, según nuestras metodologías de desarrollo, ellos se hacen parte indispensable en el ciclo de vida del proyecto.

Es por este motivo por el cual disponemos de un sistema que permite a nuestros clientes informar de incidencia o solicitar modificaciones de manera priorizada (peticiones de tareas).

Sistema de Gestión de Peticiones de Ilke Benson

Ilke Benson  ©2024 Ilke Benson. All Rights Reserved. Aviso Legal. Diseñado por Ilke Benson

¿Quieres algo concreto?