Question Redéfinir l'onglet en 4 espaces


Mon paramètre actuel suppose 8 espaces; comment pourrais-je le redéfinir?


860
2017-12-10 06:18


origine


Réponses:


Cela dépend de ce que vous voulez dire. Voulez-vous que les caractères de tabulation de votre fichier apparaître 4 espaces large, ou par "onglet" voulez-vous réellement dire un indentation, généré en appuyant sur la touche de tabulation, ce qui entraînerait littéralement le fichier contenant (jusqu'à) 4 caractères d'espace pour chaque «onglet» que vous tapez?

En fonction de votre réponse, l'un des ensembles de les paramètres devraient fonctionner pour vous:

  • Pour les caractères de tabulation qui apparaissent sur 4 espaces:

    set tabstop=4
    

    Si vous utilisez un caractère de tabulation réel dans votre code source, vous voudrez probablement aussi ces paramètres (ce sont en fait les paramètres par défaut, mais vous pouvez les définir de manière défensive):

    set softtabstop=0 noexpandtab
    

    Enfin, si vous souhaitez qu'un retrait corresponde à un seul onglet, vous devez également utiliser:

    set shiftwidth=4
    
  • Pour les indentations composées de 4 espaces mais sont entrés avec la touche de tabulation:

    set tabstop=8 softtabstop=0 expandtab shiftwidth=4 smarttab
    

Pour rendre les paramètres ci-dessus permanents, ajoutez ces lignes à votre vimrc.

Au cas où vous auriez besoin de faire des ajustements, ou si vous voulez simplement comprendre ce que ces options signifient toutes, voici une description de chaque option:

tabstop

La largeur d'un tabulateur dur mesurée en "espaces" - en fait la largeur (maximale) d'un caractère de tabulation réel.

shiftwidth

La taille d'un "retrait". Il est également mesuré dans les espaces, donc si votre base de code indent avec des caractères de tabulation, alors vous voulez shiftwidth pour égaler le nombre de caractères de tabulation fois tabstop. Ceci est également utilisé par des choses comme le =, > et < commandes.

softtabstop

En définissant cette valeur sur une valeur différente de zéro tabstop fera la touche de tabulation (en mode insertion)   insérer une combinaison d'espaces (et éventuellement d'onglets) simuler La tabulation s'arrête à cette largeur.

expandtab

En activant ceci, la touche tabulation (en mode insertion) insérera des espaces au lieu de   les caractères de tabulation. Cela affecte également le comportement de retab commander.

smarttab

En activant ceci, la touche de tabulation (en mode insertion) insérera des espaces ou des tabulations pour   aller au tiret suivant   du curseur suivant lorsque le curseur se trouve au début d'une ligne (c'est-à-dire   seuls les caractères précédents sont des espaces).

Pour plus de détails sur l'un de ces voir :help 'optionname' in vim (par ex. :help 'tabstop')


1277
2017-12-10 06:19



Pour le définir de manière permanente pour l'utilisateur actuel, créez (ou modifiez) .vimrc fichier:

$ vim ~/.vimrc

Ensuite, collez la configuration ci-dessous dans le fichier. Une fois que vim est redémarré, les paramètres de l'onglet s'appliqueront.

set tabstop=4       " The width of a TAB is set to 4.
                    " Still it is a \t. It is just that
                    " Vim will interpret it to be having
                    " a width of 4.

set shiftwidth=4    " Indents will have a width of 4

set softtabstop=4   " Sets the number of columns for a TAB

set expandtab       " Expand TABs to spaces

638
2017-12-10 06:20



ou raccourci pour vim modeline:

vim :set ts=4 sw=4 sts=4 et :

44
2017-12-10 06:22



J'ai copié et collé ceci dans mon fichier .vimrc:

" size of a hard tabstop
set tabstop=4

" always uses spaces instead of tab characters
set expandtab

" size of an "indent"
set shiftwidth=4

Les 2 premiers paramètres signifient que lorsque j'appuie sur Tab, j'obtiens 4 espaces. Le troisième paramètre signifie que quand je fais V> (c'est-à-dire visuel et indent) Je reçois également 4 espaces.

Pas aussi complet que la réponse acceptée, mais cela pourrait aider les gens qui veulent juste quelque chose à copier et à coller.


20
2018-06-28 10:49



Mettez vos paramètres souhaités dans le ~ / .vimrc fichier - Voir ci-dessous pour quelques directives et meilleures pratiques.

Il y a quatre façons principales d'utiliser les onglets dans Vim:

  1. Gardez toujours 'tabstop' à 8, réglez 'softtabstop' et 'shiftwidth' sur 4 (ou 3 ou ce que vous préférez) et utilisez 'noexpandtab'. Ensuite, Vim utilisera un mélange d'onglets et d'espaces, mais en tapant et se comportera comme un onglet apparaît tous les 4 (ou 3) caractères.

    Remarque: Si vous définissez 'tabstop' sur une autre valeur que 8, votre fichier risque d'apparaître incorrect à de nombreux endroits (par exemple, lors de l'impression).

  2. Définissez 'tabstop' et 'shiftwidth' comme vous préférez et utilisez 'expandtab'. De cette façon, vous insérerez toujours des espaces. Le formatage ne sera jamais foiré quand 'tabstop' est changé.

  3. Définissez 'tabstop' et 'shiftwidth' sur ce que vous préférez et utilisez un | modeline | pour définir ces valeurs lors de l'édition du fichier à nouveau. Ne fonctionne que lorsque vous utilisez Vim pour éditer le fichier.

  4. Définissez toujours 'tabstop' et 'shiftwidth' sur la même valeur et 'noexpandtab'. Cela devrait alors fonctionner (pour les retraits initiaux seulement) pour n'importe quel paramètre de tabulation que les gens utilisent. Il pourrait être agréable d'avoir des onglets après le premier non-vide inséré comme espaces si vous faites cela cependant. Sinon, les commentaires alignés seront erronés lorsque 'tabstop' est changé.

La source:


11
2018-05-07 01:45



Encore une chose, utilisez
:retab
convertir les existants tab à spaces http://vim.wikia.com/wiki/Converting_tabs_to_spaces


7
2017-11-10 14:40



Ajouter une ligne
set ts=4
dans
~/.vimrc fichier par utilisateur
ou
/etc/vimrc fichier pour l'ensemble du système


6
2017-07-19 14:12



:set sw=4

Voir Maîtriser l'éditeur de VI


4
2017-12-10 06:21