Comment changer la taille de l'onglet dans Vim?

chaque fois que j'ajoute un sélecteur dans CSS et que j'appuie sur Enter pour définir les propriétés il finit comme ceci:

#selector {
        property: value;
}

(8-tabs)

Comment puis-je configurer Vim pour le faire comme ceci:

#selector {
    property: value;
}

(tabs à 4 espaces)

78
demandé sur 3ocene 2010-01-13 08:21:34

5 réponses

l'Expansion de zoul réponse:

si vous voulez configurer Vim pour utiliser des paramètres spécifiques lors de l'édition d'un type de fichier particulier, vous voudrez utiliser autocommands:

autocmd Filetype css setlocal tabstop=4

Cela fera en sorte que les onglets sont affichés en 4 espaces. Le réglage de expandtab fera que Vim insérera effectivement les espaces (le nombre d'entre eux étant contrôlé par tabstop ) lorsque vous appuyez sur tab; vous pourriez vouloir utiliser softtabstop pour faire fonctionner correctement backspace (c'est-à-dire, réduire l'indentation lorsque c'est ce qui se produirait si des onglets étaient utilisés, plutôt que de toujours supprimer un char à la fois).

pour prendre une décision pleinement instruite sur la façon de mettre en place les choses, vous aurez besoin de lire Vim docs sur tabstop , shiftwidth , softtabstop et expandtab . Le morceau le plus intéressant se trouve sous expandtab ( :help 'expandtab ):

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

  1. toujours garder "tabstop" à 8, Mettre "softtabstop" et "shiftwidth" à 4 (ou 3 ou ce que vous préférez) et utiliser "noexpandtab". Puis Vim utilisera un mélange d'onglets et d'espaces, mais taper et se comporter comme un onglet apparaît tous les 4 (ou 3) caractères.

  2. réglez" tabstop " et "shiftwidth" à ce que vous préférez et utilisez "expandtab". De cette façon, vous insérerez toujours des espaces. Le formatage ne sera jamais foiré lorsque 'tabstop' est changé.

  3. définissez" tabstop " et "shiftwidth" à ce que vous préférez et utilisez |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. Toujours mettre 'tabstop' et 'shiftwidth' à la même valeur, et 'noexpandtab'. Cela devrait alors fonctionner (pour les tirets initiaux seulement) pour n'importe quel réglage de tabstop que les gens utilisent. Il pourrait être sympa pour avoir des onglets après le premier non-blanc insérés comme des espaces si vous faites ceci cependant. Sinon, les commentaires alignés seront erronés lorsque 'tabstop' est modifié.

59
répondu Michał Marczyk 2010-01-13 06:03:00
:set tabstop=4
:set shiftwidth=4
:set expandtab

ceci insérera quatre espaces au lieu d'un caractère de tabulation. Les espaces sont un peu plus" stables", ce qui signifie que le texte en retrait avec des espaces apparaîtra la même chose dans le navigateur et toute autre application.

110
répondu zoul 2010-01-13 05:35:43

pour effectuer le changement pour une session, utilisez cette commande:

:set tabstop=4

pour rendre le changement permanent, ajoutez-le à ~/.vimrc ou ~/.vim/vimrc :

set tabstop=4

cela affectera tous les fichiers, pas seulement css. Affecter que les fichiers css:

autocmd Filetype css setlocal tabstop=4

comme indiqué dans Michał la réponse de .

58
répondu Keith 2017-05-23 12:02:46

Plusieurs des réponses sur cette page sont à usage unique' résout le problème décrit. Autrement dit, la prochaine fois que vous ouvrez un document avec vim, les paramètres de l'onglet précédent reviendront.

si quelqu'un est intéressé à changer en permanence les paramètres de l'onglet:

  • trouver/ouvrir votre .vimrc - instructions ici
  • ajouter les lignes suivantes: ( plus d'info ici )

     set tabstop=4
     set shiftwidth=4
     set expandtab
    
  • puis enregistrer fichier et test

15
répondu Alexander McNulty 2018-02-24 21:16:15

si vous avez besoin de changer de taille souvent et que vous ne voulez pas lier cela à un type de fichier spécifique, vous pouvez avoir des commandes prédéfinies sur votre .fichier vimrc pour changer rapidement les préférences:

nmap <leader>t :set expandtab tabstop=4 shiftwidth=4 softtabstop=4<CR>
nmap <leader>m :set expandtab tabstop=2 shiftwidth=2 softtabstop=2<CR>

cette carte deux ensembles de tailles différentes pour les touches \t et \M. Tu peux le refaire avec les clés que tu veux.

3
répondu Jens 2014-12-09 02:20:33