Tabulaciones en espacios y viceversa: la conversión

Los editores de texto utilizados para desarrollo web a veces no comparten el mismo criterio en cuanto a la cantidad de espacios a los que equivale una tabulación. Por tal motivo, a veces un archivo escrito en un editor «X» y que se visualiza de manera correcta en el mismo, otro editor «Y» lo muestra de forma diferente. Este inconveniente suele ser crítico para programadores Python, lenguaje que requiere de una indentación precisa. Por ese motivo en este post mostraremos cómo convertir tabulaciones en espacios y viceversa de manera que si nos encontramos con archivos que presenten estas características, no representen mayor problema para nosotros.

Tabulaciones en espacios

Supongamos que contamos con el siguiente archivo HTML test.html, el cual consta del esqueleto básico:

<!DOCTYPE html>
<html>
<head>
        <title>Prueba</title>
</head>
<body>
        <p>Hola</p>
</body>
</html>

A primera vista, podríamos inferir que el editor con el que se escribió el mismo utilizaba 8 espacios por cada tab. Si el editor con el que vamos a continuar escribiendo interpreta cada tab como cuatro espacios, el archivo quedaría como sigue (piensen lo desprolijo que podría quedar si se tratara de un archivo HTML con 100 líneas o más):

<!DOCTYPE html>
<html>
<head>
        <title>Prueba</title>
</head>
<body>
        <p>Hola</p>
    <p>Esta es la segunda línea</p>
</body>
</html>

Para evitar esto, podemos convertir cada tab en 4 espacios antes de comenzar a editarlo:

expand -t 4 test.html

En la Fig. 1 podemos ver tanto el archivo original como la versión modificada (la cual podemos redirigir a otro archivo, que es el que finalmente editaremos):

Convertir tabulaciones en espacios con expand
Figura 1 – Convertir tabulaciones en espacios con expand

Espacios en tabulaciones

Si, por el contrario, quisiéramos convertir cada espacio en tabulaciones, contamos una herramienta que nos permite realizar el procedimiento inverso: unexpand. Esta utilidad nos permite elegir si queremos convertir todos los espacios o solamente los primeros que encuentre en cada línea. Si en el archivo test.html hubiéramos agregado los espacios a mano en la segunda línea dentro del cuerpo del archivo en vez de utilizar una tabulación, un análisis del mismo nos mostraría esa diferencia como vemos en la Fig. 2:

cat -A test.html
Preparación para convertir espacios en tabulaciones con unexpand
Figura 2 – Preparación para convertir espacios en tabulaciones con unexpand

Para convertir esos 4 espacios en una tabulación, utilizaremos unexpand. Para una mejor comparación, guardaremos el resultado en test2.html:

unexpand -t 4 test.html > test2.html

Y compararemos ambos archivos mostrando tabulaciones, espacios, y fines de línea (ver Fig. 3):

cat -A test.html
cat -A test2.html
Convertir espacios en tabulaciones usando unexpand
Figura 3 – Convertir espacios en tabulaciones usando unexpand

Espero que este post les haya resultado de utilidad. ¡Nos leemos en el próximo!

Deja una respuesta