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, tabstopse trata de qué tan ancho Tabse define a, mientras que softtabstopse 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 Tabtecla, no implica trivialmente un Tabpersonaje. 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 tabstopposible; 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 Taby Sapcese 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