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 tabstop
va de même de la largeur Tab
définie pour a, tandis que softtabstop
de 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 Tab
touche, cela n'implique pas trivialement un Tab
caractè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 tabstop
que 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 Tab
et Sapce
est nécessaire. Insérez simplement Space
.