Vea el ejemplo a continuación,
// Start vim without loading your vimrc. set only tabstop=8 softtabstop=4.
// This makes <Tab> in insert mode equals to 4 <Space> length at max.
// In insert mode, type 12, one <Tab>, 5. We get insertion below,
12··5
// Quit insert mode. Move cursor back, we find 2 <Space> inserted.
// In insert mode, type 12, two <Tab>, 9. We get insertion below,
12······9
// Quit insert mode. Move cursor back, you find a <Tab> inserted.
// In insert mode, type 12, three <Tab>, 3. We get insertion below,
12··········3
// Move the cursor back, you find a <Tab> and 4 <Space> inserted.
// We can even set sotftabstop=12, but this time we only need type one <Tab>, then 3.
12··········3
// Move the cursor back, you find a <Tab> and 4 <Sapce> inserted.
Entonces, tabstop
se trata de qué tan ancho Tab
se define a, mientras que softtabstop
se trata de qué tan lejos se mueve el cursor mientras se escribe Tab
. Cuando no están configurados para tener el mismo valor, significa que si presionas la Tab
tecla, no implica trivialmente un Tab
personaje. En cualquier caso, es vim quien decide una vez que abandona el modo de inserción. Vim primero intentará hacer coincidir la inserción con la mayor cantidad tabstop
posible; si por fin no puede completar tabstop
, vim simplemente lo compensa Space
.
Para hablar un poco más, si configuras expandtab
, es igual decir a vim:
No se moleste en calcular cuántos Tab
y Sapce
se necesitan. Simplemente inserte Space
.
:set st=7 sts=13
. Como vim no solo está diseñado para la codificación, sino originalmente para la edición de texto.Respuesta simple:
Por ejemplo, es extremadamente útil para la programación, especialmente en Python, en la cual la tabulación es crucial. Cuando presiona la tecla de retroceso con sts = 4, se desestabilizará la línea, no se eliminará un solo carácter de espacio.
fuente