Voir l'exemple ci-dessous,
// 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.
Il en tabstopva de même de la largeur Tabdéfinie pour a, tandis que softtabstopde la distance parcourue par le curseur lors de la frappe Tab . Quand ils ne sont pas définis pour avoir la même valeur, cela signifie que si vous appuyez sur la Tabtouche, cela n'implique pas trivialement un Tabcaractère. Dans tous les cas, c'est Vim qui décide une fois que vous quittez le mode insertion. Vim essaiera d'abord de faire correspondre autant tabstopque possible l'insertion ; si enfin il ne peut pas faire un full tabstop, vim compense simplement par Space.
Pour parler un peu plus, si vous définissez expandtab, c'est égal à dire à vim:
S'il vous plaît ne vous embêtez pas à calculer combien Tabet Sapceest nécessaire. Insérez simplement Space.