Tamanho da guia Vim ao batere quando o recuo automático se aplica

Tamanho da guia Vim ao batere quando o recuo automático se aplica

Decidi mudar o tamanho da minha guia de 4 para 2, porque não? Qualquer pessoa que queira ver o código certamente pode usar suas preferências.

Porém, uma pergunta.

Se eu apertar a tecla tab, ele insere 2, mas o recuo automático do Vim ainda está colocando 4. O que eu mudo para fazer esse 2?

Outra questão não relacionada: qual estilo de recuo é melhor para C e linguagens semelhantes? Tenho usado 1TBS, mas há muitos para escolher. Algum deles é mais profissional ou preferido?

Responder1

Tente definir ' shiftwidth' com o mesmo valor de ' tabstop'. Melhor ainda, se você estiver usando uma versão recente do Vim, defina ' shiftwidth' como 0 e o padrão será o que ' tabstop' estiver definido.

Responder2

Opções de recuo do Vim

O Vim usa principalmente 3 configurações quanto ao tamanho do recuo:

  • tabstop, ts: quando o Vim encontra uma tabulação em um arquivo que você está abrindo, ele exibe a tabulação como {ts} espaços (vejaajuda tabstop, ou digite :help tabstopVim).
  • softtabstop, sts: quando você está editando um arquivo e pressiona a tecla tab, o Vim usa esta configuração para definir a largura da tabulação inserida (vejaajuda do softtabstop, ou digite :help softtabstopVim).
  • shiftwidth, sw: o número de espaços que o Vim usa ao recuar, usando material de autoindent ou os comandos usuais >>, . <<Como Heptite percebeu, era isso que você procurava neste caso específico. E as versões recentes do Vim realmente permitem que você não defina esta opção, shiftwidthentão assumiria o valor definido por tabstop. Bastante útil (vejaajuda sobre 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. Inserir uma tabulação no arquivo produziria um recuo de 4 espaços de largura.
  2. Como your tabstopestá definido como 2, isso seria na verdade o equivalente a 2 tabulações. Isso é bastante fácil de verificar, basta usar as opções liste listcharspara exibir tabulações.
  3. Se você recuar uma linha usando >>, o recuo terá 8 espaços de largura (portanto, o equivalente a 4 tabulações, com base no tabstopvalor, igual ao acima).

insira a descrição da imagem aqui

Recomendações de recuo do Vim (da documentação do Vim)

Da tabstopajuda ( :help tabstopno Vim):

There are four main ways to use tabs in Vim:
  1. Always keep 'tabstop' at 8, set 'softtabstop' and 'shiftwidth' to 4
    (or 3 or whatever you prefer) and use 'noexpandtab'.  Then Vim
    will use a mix of tabs and spaces, but typing <Tab> and <BS> will
    behave like a tab appears every 4 (or 3) characters.
  2. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use
    'expandtab'.  This way you will always insert spaces.  The
    formatting will never be messed up when 'tabstop' is changed.
  3. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use a
    |modeline| to set these values when editing the file again.  Only
    works when using Vim to edit the file.
  4. Always set 'tabstop' and 'shiftwidth' to the same value, and
    'noexpandtab'.  This should then work (for initial indents only)
    for any tabstop setting that people use.  It might be nice to have
    tabs after the first non-blank inserted as spaces if you do this
    though.  Otherwise aligned comments will be wrong when 'tabstop' is
    changed.

Eu pessoalmente uso principalmente a segunda solução, com tabulações de 2 espaços de largura.

set ts=2
set sts=2
set et     "expand tabs to spaces

Responder3

De acordo comhttp://vim.wikia.com/wiki/Indenting_source_code, o comando 'filetype plugin indent on' fará com que o programa use scripts de recuo específicos do tipo de arquivo localizados no subdiretório de recuo da instalação do Vim. Essa página também afirma que 'cindent' é usado automaticamente em arquivos C e C++ e que você não deve ser obrigado a usar esse comando manualmente.

Não estou muito familiarizado com o Vim, pois só o uso para algumas edições básicas de texto ocasionais, mas tentaria emitir manualmente o comando 'cindent' para usar o tamanho de recuo automático padrão do Vim para esse código. Se isso não funcionar, você pode tentar 'recuo do plugin de tipo de arquivo ativado' e editar os scripts você mesmo para obter os recuos desejados.

informação relacionada