Дивіться приклад нижче,
// 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
.