Tente definir ' shiftwidth
' com o mesmo valor que ' tabstop
'. Melhor ainda, se você estiver usando uma versão recente do Vim, defina ' shiftwidth
' como 0 e o padrão será o valor ' tabstop
' definido.
Eu decidi alterar o tamanho da minha guia de 4 para 2, porque não? Qualquer outra pessoa que queira ver o código certamente pode usar suas preferências.
No entanto, uma pergunta.
Se eu apertar a tecla tab, ele insere 2, mas o autoindent do Vim ainda está colocando 4. O que eu mudo para fazer isso 2?
Outra questão não relacionada: Qual estilo de recuo é melhor para C e idiomas semelhantes? Eu tenho usado o 1TBS, mas há muitos para escolher. Algum deles é mais profissional ou preferido?
O Vim usa principalmente 3 configurações para o tamanho do recuo:
tabstop
, ts
: quando o Vim encontra uma tabulação em um arquivo que você está abrindo, ele exibe a guia como {ts} espaços (veja ajuda da tabstop ou digite :help tabstop
no Vim). softtabstop
, sts
: quando você está editando um arquivo e pressionando a tecla tab, o Vim usa essa configuração para definir a largura da tabulação inserida (veja ajuda do softtabstop ou digite :help softtabstop
no Vim). shiftwidth
, sw
: o número de espaços que o Vim usa ao recuar, seja usando material de indentação automática ou os comandos normais >>
, <<
. Como Heptite notou, isso é o que você estava procurando neste caso particular. E versões recentes do Vim realmente permitem que você não defina essa opção, shiftwidth
, então, pegaria o valor definido por tabstop
. Bastante útil (consulte ajuda na largura de turno ). Por exemplo, se você usar as seguintes configurações:
set sts=4
set ts=2
set sw=8
Isso produziria o seguinte comportamento:
tabstop
está definido como 2, isso seria realmente o equivalente a duas tabulações. Isso é bastante fácil de verificar, basta usar as opções list
e listchars
para exibir as tabulações. >>
, o recuo teria 8 espaços de largura (portanto, o equivalente a 4 tabulações, com base no valor tabstop
, o mesmo que acima).
Detabstop
help(:helptabstop
noVim):
TherearefourmainwaystousetabsinVim:1.Alwayskeep'tabstop'at8,set'softtabstop'and'shiftwidth'to4(or3orwhateveryouprefer)anduse'noexpandtab'.ThenVimwilluseamixoftabsandspaces,buttyping<Tab>and<BS>willbehavelikeatabappearsevery4(or3)characters.2.Set'tabstop'and'shiftwidth'towhateveryoupreferanduse'expandtab'.Thiswayyouwillalwaysinsertspaces.Theformattingwillneverbemessedupwhen'tabstop'ischanged.3.Set'tabstop'and'shiftwidth'towhateveryoupreferandusea|modeline|tosetthesevalueswheneditingthefileagain.OnlyworkswhenusingVimtoeditthefile.4.Alwaysset'tabstop'and'shiftwidth'tothesamevalue,and'noexpandtab'.Thisshouldthenwork(forinitialindentsonly)foranytabstopsettingthatpeopleuse.Itmightbenicetohavetabsafterthefirstnon-blankinsertedasspacesifyoudothisthough.Otherwisealignedcommentswillbewrongwhen'tabstop'ischanged.
Eupessoalmenteusoprincipalmenteasegundasolução,comtabulaçõesde2espaçosdelargura.
setts=2setsts=2setet"expand tabs to spaces
De acordo com o link , o comando 'filetype plugin indent on' fará com que o programa use scripts de indentação específicos do tipo de arquivo localizado no subdiretório indent da instalação do Vim. Essa página também declara que 'cindent' é usado automaticamente em arquivos C e C ++, e que você não deve ser obrigado a usar esse comando manualmente.
Eu não estou muito familiarizado com o Vim, já que eu o uso apenas para algumas edições de texto básicas ocasionais, mas eu tentaria manualmente emitir o comando 'cindent' para usar o tamanho de autoindent padrão do Vim para aquele código. Se isso não funcionar, você pode tentar o 'recue do plugin filetype' e editar os scripts para obter os recuos desejados.
Tags vim