Probablemente, la herramienta de software con la que pasemos más tiempo en nuestro trabajo diario como programadores sea el editor de código. Es por ello que la importancia de elegir un buen editor se convierte en primordial, y es probablemente una de las selecciones más cuidadosas que debemos hacer si queremos que nuestra productividad no sufra.
Hoy os hablaré del editor de código más popular que existe en la plataforma Mac. Se trata, desde luego, de TextMate, el cual a pesar de sus años sigue siendo uno de los editores de referencia.
TextMate es un completísimo editor de código multilenguaje que además es extensible a través de bundles. Quizás uno de los mayores atractivos de su sistema de extensiones es que éstas pueden ser escritas en cualquier lenguaje, de modo que puedes ir automatizando algunas tareas habituales en tu editor usando tu lenguaje de programación favorito.
No es un IDE, es decir, no pretende abarcar todas y cada una de las posibilidades que contemple tu plataforma de desarrollo. Pero lo cierto es que gracias a las extensiones en forma de snippets de código, macros, y otros, se puede convertir perfectamente en el centro de control absoluto durante el desarrollo de tu proyecto. Y todo esto siendo muchísimo más ligero que los tradicionales IDE, con la ventaja adicional de ser agnóstico (no todos los IDE lo son) en cuanto a las herramientas extra que estemos usando: compilador, sistema de control de versiones, etc.
Algunas de las características más destacadas de este editor son:
Búsqueda y reemplazo de texto en un proyecto (ideal para refactorizaciones).
Búsqueda y reemplazo de texto por expresiones regulares.
Autoindentado en acciones comunes, como pegar texto.
Autoemparejado de corchetes y otros caracteres.
Histórico del portapapeles.
Selector de texto por columnas y escritura en varias líneas a la vez en una misma columna (ideal para añadir un prefijo común a varias líneas de código, por ejemplo).
Autocompletado de palabras de entre las que aparecen en el documento actual.
Selectores para limitar el alcance de las acciones y las preferencias del editor.
Bloques de código plegables.
Grabación de macros (para crearlas sin necesidad de programarlas).
Cambio rápido a cualquier fichero del proyecto tecleando parte de su nombre.
Ejecutar comandos del sistema en el contexto de un documento.
Navegación entre ficheros por pestañas.
Soporte para más de 50 lenguajes.
Soporte para casi todos los sistemas de control de versiones.
Personalización del editor a través de temas.
Snippets
Una de las cosas que más me gusta de TextMate son los snippets. Estos te permiten insertar porciones de código en el fichero que estés editando de forma muy sencilla, y moverte rápidamente por el texto personalizable de dicho snippet. Se pueden contextualizar, de modo que ciertos snippets sólo se puedan utilizar si estás editando un determinado tipo de fichero.
Los snippets son accesibles luego desde la opción de menú Bundles, donde están ordenados por contexto (habitualmente, el lenguaje o entorno de programación que estés usando). Aunque lo mejor es lanzarlos creando para ellos una secuencia de caracteres, tras las que, al pulsar tabulador, se ejecuta el snippet.
Por poner un ejemplo completo: Si estás programando en Ruby, y necesitas un bloque de código con un if / else, basta con escribir “ife” (sin las comillas) y pulsar el tabulador para que se añadan las líneas correspondientes a las ramas de condiciones “if” y “else”, con su correspondiente indentación, y la finalización del bloque con “end”. Luego sólo tienes que ir pulsando tabulador sucesivamente para ir moviéndote entre el texto personalizable: Primero introduces la condición del if; pulsas tabulador e introduces el código a ejecutar si se da esta condición; pulsas el tabulador de nuevo para moverte rápidamente al bloque del else e introduces el código a ejecutar si no se cumple la condición anterior; pulsas tabulador por última vez para ir al final del bloque. ¡Rapidísimo!
Además, estos snippets son tan sencillos de crear que pronto te habrás hecho con un repositorio propio con las porciones de código que más usas. La velocidad de inserción de código se verá así incrementada considerablemente.
Comandos
Los comandos en TextMate te permiten ejecutar un código arbitrario (definido por una extensión en particular o por ti mismo), el cual puede estar escrito en tu lenguaje de programación preferido. TextMate define una serie de variables de entorno con información como la línea actual, el path al proyecto, el fichero que se está editando, el texto seleccionado, etc. El comando sólo tiene que tomar la información que necesite, y actuar en consecuencia. El resultado de ejecutar dicho comando puede introducirse directamente en el punto donde estaba situado el cursor, reemplazar todo o parte del texto, crear un nuevo documento y pegarse en él, etc.
Los comandos son accesibles también desde el menú Bundles, o puedes asignarle la pulsación de ciertas teclas para que se lance. Su activación puede depender de que estés en el contexto adecuado, de modo que puedes usar la misma combinación de teclas para distintos comportamientos según estés editando código en Ruby, en C, en Java… A modo de ejemplo, la combinación Cmd + Mayúsculas + / suele estar asociada en todos los bundles a la opción de comentar código, de modo que dependiendo de en qué lenguaje estés programando, la combinación es siempre la misma, pero la forma en que se comentan las líneas de código dependerá de la sintaxis del lenguaje que estés usando.
Comunidad
Al ser un editor ya veterano, la comunidad de usuarios es muy grande. Es por ello que existen ya numerosos bundles descargables para prácticamente cualquier entorno de desarrollo que se te ocurra. Me he sorprendido a mí mismo instalando bundles de pseudolenguajes tan recientes como Coffeescript en cuestión de minutos.
Puedes echar un vistazo a la página de la comunidad TextMate, o localizar muchos de los bundles en GitHub.
Conclusión
En definitiva, un editor altamente recomendable, con un precio que no ha variado apenas desde que apareció en el mercado: 44,85 euros por licencia única. Con el tiempo que puedes ahorrarte utilizándolo, en mi opinión vale cada céntimo que cuesta.