Zobacz poniższy przykład
// 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.
Podobnie tabstop
jest z szerokością Tab
zdefiniowanego a, a z softtabstop
tym, jak daleko kursor przesuwa się podczas pisania Tab
. Jeśli nie są ustawione na tę samą wartość, oznacza to, że Tab
naciśnięcie klawisza nie oznacza trywialnie Tab
znaku. W każdym przypadku to vim decyduje, kiedy wyjdziesz z trybu wstawiania. Vim najpierw spróbuje dopasować wstawienie tak wielu, tabstop
jak to możliwe; jeśli w końcu nie może zrobić pełnego tabstop
, vim po prostu kompensuje Space
.
Mówiąc trochę więcej, jeśli ustawisz expandtab
, możesz powiedzieć vim:
Proszę nie przeszkadza, aby obliczyć, ile Tab
i Sapce
jest potrzebne. Po prostu włóż Space
.