Taille de l'onglet Vim lorsque vous appuyez sur <Tab> et lorsque l'indentation automatique s'applique

22

J'ai décidé de changer ma taille d'onglet de 4 à 2, car pourquoi pas? Quiconque souhaite consulter le code peut certainement utiliser ses préférences.

Cependant, une question.

Si j'appuie sur la touche de tabulation, elle insère 2, mais l'auto-indentation de Vim met toujours 4. Que dois-je changer pour faire cela 2?

Une autre question sans rapport: quel style de retrait est le meilleur pour le C et les langages similaires? J'utilise 1TBS, mais il y a tellement de choix. Certains sont-ils plus professionnels ou préférés?

user341814
la source

Réponses:

17

Essayez de définir « shiftwidth» sur la même valeur que « tabstop». Mieux encore, si vous utilisez une version assez récente de Vim, définissez " shiftwidth" sur 0 et il sera tabstopdéfini par défaut sur " ".

Heptite
la source
C'est ce que je cherchais. Débat actuellement entre la définition tsde 2, 4 ou 8
user341814
J'utilise 8 sur des fichiers non-code, et 2 ou 4 selon la langue et la fréquence d'imbrication.
Heptite
Je ne fais que C pour le moment.
user341814
33

Options d'indentation Vim

Vim utilise principalement 3 paramètres pour la taille de retrait:

  • tabstop, ts: lorsque Vim rencontre une tabulation dans un fichier que vous ouvrez, il affiche l'onglet sous la forme d'espaces {ts} (voir l' aide de tabstop ou tapez :help tabstopVim).
  • softtabstop, sts: lorsque vous modifiez un fichier et appuyez sur la touche de tabulation, Vim utilise ce paramètre pour définir la largeur de la tabulation insérée (voir l' aide du softtabstop ou tapez :help softtabstopVim).
  • shiftwidth, sw: Le nombre de places Vim utilise lors de l' indentation, soit à l' aide de la substance ou de la autoindent habituelle >>, des <<commandes. Comme Heptite l'a remarqué, c'est ce que vous cherchiez dans ce cas particulier. Et les versions récentes de Vim vous permettent en effet de ne pas définir cette option, shiftwidthprendraient alors la valeur définie par tabstop. Assez pratique (voir l' aide de shiftwidth ).

Exemple

Ainsi, par exemple, si vous utilisez les paramètres suivants:

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

Ceux-ci produiraient le comportement suivant:

  1. L'insertion d'une tabulation dans le fichier produirait un retrait de 4 espaces de large.
  2. Comme votre tabstopest défini sur 2, ce serait en fait l'équivalent de 2 totalisations. C'est assez facile à vérifier, utilisez simplement les options listet listcharspour afficher les tabulations.
  3. Si vous indentez une ligne en utilisant >>, l'indentation aurait une largeur de 8 espaces (d'où l'équivalent de 4 tabulations, basées sur la tabstopvaleur, comme ci-dessus).

entrez la description de l'image ici

Recommandations d'indentation Vim (à partir de la documentation Vim)

De l' tabstopaide ( :help tabstopdans 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.

Personnellement, j'utilise principalement la deuxième solution, avec 2 tabulations larges.

set ts=2
set sts=2
set et     "expand tabs to spaces
pabuisson
la source
-1

Selon http://vim.wikia.com/wiki/Indenting_source_code , la commande 'filetype plugin indent on' amènera le programme à utiliser des scripts d'indentation spécifiques au type de fichier situés dans le sous-répertoire indent de l'installation de Vim. Cette page indique également que «cindent» est utilisé automatiquement dans les fichiers C et C ++, et que vous ne devriez pas être obligé d'utiliser cette commande manuellement.

Je ne suis pas très familier avec Vim, car je ne l'utilise que pour une édition de texte de base occasionnelle, mais j'essaierais d'émettre manuellement la commande `` cindent '' pour utiliser la taille d'autoindentation par défaut de Vim pour ce code. Si cela ne fonctionne pas, vous pouvez essayer 'indentation du plugin filetype' et éditer les scripts vous-même pour obtenir les retraits souhaités.

Kyle
la source