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
.