Tabular para sangrar varias líneas con el editor vi / vim

Cuando tabulamos, es decir, cuando accionamos la tecla de tabulación, en el modo insertar de vi si estamos al comienzo de una línea se produce un sangrado de la misma, por lo que esa línea comienza un poco más a la derecha que antes de tabular.

Hay lenguajes de programación, como Python, en los que esta acción es necesaria para indicar qué líneas forman parte de un bloque de código. En otros, como Shell Script, JavaScript o PHP no es necesario, pero sí aconsejable hacerlo, ya que hacen que el código sea más legible.

Si al comienzo de una línea pulsamos la tecla de tabulación esa línea se sangra y podemos escribir, pero hay muchas veces en las que tenemos que  sangrar múltiples líneas, y no es agradable tener que ir una por una sangrando todas las líneas. Seguro que a los desarrolladores de vi tampoco les parece una tarea divertida y por eso incluyeron la posibilidad de sangrar varias líneas a la vez.

Podemos sangrar una única línea desde el modo comando con:

>>

Y quitar el sangrado de una línea con:

<<

Pero cuando tenemos que aplicar esta acción a varias líneas, lo mejor es indicar el número de líneas a las que se debe aplicar antes de estos signos. Por ejemplo, si tenemos que sangrar 12 líneas, escribiremos:
12>>

Configurar la tabulación

Para cambiar la configuración de vi, debemos editar el fichero ~/.vimrc, y ahí podemos definir distintos valores.

Sangrar automáticamente el texto:
set autoindent

Sangrar en función del lenguaje, el estilo y la sintaxis:
set smartindent

Si queremos que, en lugar de un tabulador, lo que inserte sean espacios en blanco:
set expandtab

Número de espacios por tabulación (en este caso, 4 espacios):
set ts=4 abreviatura de set tabstop=4

Número de espacios al aplicar >> o <<:
set sw=4 abreviatura de set shiftwidth=4

 

Si alguien quiere copiar la configuración y pegarla directamente en su ~/.vimrc, dejo aquí los cinco parámetros juntos:

set autoindent
set smartindent
set expandtab
set ts=4
set sw=4

 

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada.