Pareciera que estoy traumado con la indentación ya que es el segundo post que hago sobre el tema en VIM, sin embargo simplemente es que de a poco voy personalizando VIM a gusto y añadiendo las cosas que hecho de menos de otros editores y cuando me mude de Sublime Text a VIM una de las cosas que más eché en falta fue poder diferenciar entre indentación por tabulador y por espacio cuando desarrollo en Python donde no se pueden mezclar ambos estilos porque dará problemas de sintaxis.

Un problema que en Sublime no tenia ya que en el simplemente sombreando el texto muestra los tabulados con guiones y los espacio con puntos por lo cual es fácil localizar y corregir cualquier error de indentación ocasionado fundamentalmente por copiar y pegar de otro lugar con otra indentación:


En la imagen anterior se puede apreciar como Sublime resalta con una linea los espacio ocupados por tabulacion y con puntos los espacios en blanco ¿Que podía hacer al respecto para tener la misma funcionalidad?

Una de las primeras soluciones fue buscar un plugin, sin embargo no encontré ninguno que ofreciera esta funcionalidad, después de tanto googlear encontré algunos comandos desde la consola de comandos de VIM, solo que era demasiado tedioso e implicaba copiar y pegar así que la mejor solución era agregarlo al .vimrc y transformado en un atajo de teclado.

Editamos el archivo .vimrc y al final agregamos los siguiente:

 
function HighlightsTabsAndSpace ()
call feedkeys(":set listchars=eol:¬,tab:\\|_,trail:~,extends:>,precedes:<,space:\\|\<CR>")
call feedkeys(":set list\<CR>")
endfunction

nmap <leader>t :call HighlightsTabsAndSpace()<CR>
nmap <leader>tt :set nolist<CR>

Luego guardamos el resultado, salimos y abrimos un archivo python, dentro del el podemos activar la vista con la tecla lider + t, que en mi caso es space+t y desactivar con space+tt y el resultado es maravilloso:

En esta configuración mostrar |____ para las tabulaciones y | para los espacios en blanco, obviamente podemos cambiar los caracteres usados modificando el comando, a mi en lo personal me gusto el color  gris en que quedó, sin embargo si queremos podemos editar el color agregando dentro de la función  HighlightsTabsAndSpace y antes del primer call la siguiente línea:

call feedkeys(":highlight SpecialKey ctermfg=11\<CR>")

Esta pintara de amarillo las líneas, jugando con el valor de ctermfg se lograran diferentes colores.

Conclusión

Como vemos es sumamente sencillo, además de agregar e incluso de personalizar, por ejemplo cambiando los caracteres según nos parezca más cómodo e incluso colorido ya que también se puede como vimos, sin dudas VIM es una gran opción para un programador, tal vez la curva de aprendizaje sea mayor sin embargo la facilidad y la libertad para personalizar ciertos aspectos es asombrosa.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *