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 tabstopjest z szerokością Tabzdefiniowanego a, a z softtabstoptym, jak daleko kursor przesuwa się podczas pisania Tab . Jeśli nie są ustawione na tę samą wartość, oznacza to, że Tabnaciśnięcie klawisza nie oznacza trywialnie Tabznaku. W każdym przypadku to vim decyduje, kiedy wyjdziesz z trybu wstawiania. Vim najpierw spróbuje dopasować wstawienie tak wielu, tabstopjak 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 Tabi Sapcejest potrzebne. Po prostu włóż Space.