tl; dr: set tabstop=4 softtabstop=-1 shiftwidth=0 expandtab
formato curto: set ts=4 sts=-1 sw=0 et
Explicação
Se você definir softtabstop (ou sts ) como -1 , ele se comportará automaticamente
igual a tabstop ( ts ), o que poupará algum incômodo se você alterar muito a tabulação. A configuração de shiftwidth ( sw ) para 0 deve efetivamente fazer
que o mesmo que tabstop também.
Em detalhes
shiftwidth sw
Number of spaces to use for each step of (auto)indent. Used for cindent, >>, <<, etc.
When zero the tabstop value will be used.
tabstop ts
Number of spaces that a in the file counts for. Also see
:retab command, and
softtabstop option.
softtabstop sts
Number of spaces that a Tab counts for while performing editing
operations, like inserting a Tab or using BS. It
feels like Tabs are being inserted, while in fact a mix of spaces
and s are used. This is useful to keep the tabs is setting at its
standard value, while being able to edit like it is set to sts. When
sts is negative, the value of shiftwidth is used. This will save you
some hassle if you change tabstops a lot. When expandtab is not set, the
number of spaces is minimized by using Tabs.
expandtab et
In Insert mode: Use the appropriate number of spaces to insert a .
Spaces are used in indents with the > and < commands
and when autoindent is on. To insert a real tab when expandtab is on,
use Ctrl-V Tab. See also
:retab