Смотрите пример ниже,
// 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 решит, когда вы выйдете из режима вставки. Vim сначала попытается сопоставить вставку tabstop
как можно больше; если, наконец, он не может сделать полный tabstop
, vim просто компенсирует Space
.
Если говорить немного больше, если вы установите expandtab
, это будет равно vim:
Пожалуйста, не удосуживайтесь подсчитать, сколько Tab
и сколько Sapce
нужно. Просто вставьте Space
.