Tamanho da guia Vim ao pressionar Tab e quando se aplica autoindent

7

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?

    
por user341814 09.07.2014 / 04:49

3 respostas

6

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.

    
por 09.07.2014 / 05:02
3

Opções de recuo de vim

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 ).

Exemplo

Por exemplo, se você usar as seguintes configurações:

set sts=4
set ts=2
set sw=8

Isso produziria o seguinte comportamento:

  1. A inserção de uma tabulação no arquivo produziria um recuo de 4 espaços de largura.
  2. Como seu 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.
  3. Se você recuar uma linha usando >> , o recuo teria 8 espaços de largura (portanto, o equivalente a 4 tabulações, com base no valor tabstop , o mesmo que acima).

RecomendaçõesderecuodoVim(dadocumentaçãodoVim)

Detabstophelp(:helptabstopnoVim):

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
    
por 13.07.2014 / 16:46
-1

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.

    
por 09.07.2014 / 05:15

Tags