Дивіться приклад нижче,
// 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.
Отже tabstop, про те, як визначено широку Tabточку, а softtabstopпро те, наскільки курсор рухається під час набору тексту Tab . Якщо вони не встановлені однаковим значенням, це означає, що якщо натиснути Tabнатискання клавіші, це не означає тривіально Tabсимволу. У будь-яких випадках, саме вим вирішує, як тільки ви вийдете з режиму вставки. Спочатку Vim спробує відповідати вставці стільки, tabstopскільки зможе; якщо нарешті він не може зробити повне tabstop, vim просто компенсується Space.
Якщо говорити трохи більше, якщо ви встановите expandtab, це рівно, щоб сказати vim:
Будь ласка, не поспішайте підраховувати, скільки Tabі Sapceпотрібно. Просто вставте Space.