Uno de los grandes puntos a favor que tiene el ecosistema libre y comparten muchos programas para GNU/Linux es que comparten bibliotecas, o pueden compartirlas para implementar diversas funcionalidades. Y una de las bibliotecas que utilizamos a diario casi sin darnos cuenta es readline.
Esta biblioteca implementa utilidades para la introducción de datos por teclado, así como manejo de historial y atajos. Lo que nos proporciona una mejor experiencia de usuario y nos permite manejar programas como bash, ksh, bc, gnuplot, ftp, el cliente de MariaDB o el modo interactivo de Python más fácilmente. Además, al utilizar todos estos programas la misma biblioteca, coincidirán los atajos de teclado y la forma de trabajar de todos ellos, por lo que no tendremos problemas de adaptación entre unos y otros.
Ahora, hablemos del cliente de MySQL. Por temas de licencia en los que no voy a entrar. Readline tiene licencia GPL. Oracle, desarrollador actual del motor de base de datos decidió cambiar hace un tiempo la biblioteca utilizada para introducir texto desde el cliente. Y decidió utilizar editline (con licencia BSD) para esta tarea. Biblioteca que, aunque es compatible en muchos aspectos con readline, tiene un comportamiento por defecto ligeramente diferente.
Experiencia personal
Personalmente, algo que me resulta muy incómodo cuando estoy utilizando el cliente MySQL, yo que soy muy de consola, son algunas de mis teclas más utilizadas:
- Control+W: Para borrar la palabra desde la posición del cursor hacia atrás. Editline borra todo desde el cursor hasta el inicio de línea.
- Re-Pág: Para hacer búsquedas hacia atrás en el historial. Editline no la tiene configurada por defecto, readline tampoco, así que la configuraremos.
- Av-Pág: Para hacer búsquedas hacia adelante en el historial. El caso con editline es igual que el de Re-Pág.
Si utilizamos esta biblioteca, podemos modificar su comportamiento desde los ficheros /etc/inputrc o $HOME/.inputrc. Todos los programas que utilicen esta biblioteca leerán las reglas contenidas en estos archivos y adaptarán la funcionalidad de introducción de texto de acuerdo a ellas. En este post encontramos un par de reglas útiles.
Esta biblioteca sólo tiene fichero de configuración local que encontraremos en $HOME/.editrc. Puede ser incómodo tener que configurar el archivo para todos los usuarios. Aunque podemos crear un nuevo archivo y copiarlo en /etc/skel para que se copie automáticamente a todos los usuarios nuevos que creemos con useradd o desde el entorno gráfico de nuestra distribución.
Para configurar las teclas anteriormente mencionadas: Control+W, Re-pág y Av-pág yo he introducido en mi archivo /etc/.editrc lo siguiente:
bind "\e[5~" ed-search-prev-history
bind "\e[6~" ed-search-next-history
bind "^W" ed-delete-prev-word
Las dos primeras líneas se encargan de Av/Re-pág y la última de Control+W. Con esta configuración, los programas que utilicen esta nueva biblioteca deberían funcionar de la misma manera que los que utilizan readline.
Foto principal: Anas Alshanti