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


22

Decidi alterar o tamanho da guia de 4 para 2, porque não? Quem quiser ver o código certamente pode usar suas preferências.

No entanto, uma pergunta.

Se eu pressionar a tecla Tab, ele insere 2, mas o autoindent do Vim ainda está colocando 4. O que eu altero para fazer esse 2?

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

Respostas:


17

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


Era isso que eu estava procurando. Atualmente debatendo entre definir tscomo 2, 4 ou 8
user341814

Eu uso 8 em arquivos que não são de código e 2 ou 4, dependendo do idioma e quanto aninhamento tende a ocorrer.
Heptite 9/07/2014

Eu só faço C no momento.
user341814

33

Opções de recuo do Vim

O Vim usa principalmente três 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 tab como espaços {ts} (consulte a ajuda do tabstop ou digite :help tabstopVim).
  • softtabstop, sts: quando você estiver editando um arquivo e pressionando a tecla tab, o Vim usa essa configuração para definir a largura da tabulação inserida (consulte a ajuda do softtabstop ou digite o :help softtabstopVim).
  • shiftwidth, sw: O número de espaços Vim usa ao recuar, utilizando material autoindent ou o costume >>, <<os comandos. Como Heptite percebeu, era isso que você estava procurando nesse caso em particular. E versões recentes do Vim realmente permitem que você não defina essa opção e, shiftwidthem seguida, use o valor definido por tabstop. Muito útil (consulte a ajuda da 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.
  2. Como você tabstopestá definido como 2, isso seria o equivalente a 2 tabulações. É fácil verificar isso, basta usar as opções liste listcharspara exibir 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 tabstopvalor, o mesmo que acima).

insira a descrição da imagem aqui

Recomendações de indentação 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.

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

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

-1

De acordo com http://vim.wikia.com/wiki/Indenting_source_code , o comando 'filetype plugin indent on' fará com que o programa use scripts de indentação específicos do tipo de arquivo localizados no subdiretório recuo da instalação do Vim. Essa página também indica que 'cindent' é usado automaticamente nos 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, pois apenas o uso para algumas edições básicas ocasionais de texto, mas eu tentava emitir manualmente o comando 'cindent' para usar o tamanho de autoindentação padrão do Vim para esse código. Se isso não funcionar, você pode tentar 'recuo do plug-in de tipo de arquivo' e editar os scripts para obter os recuos desejados.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.