web-dev-qa-db-fra.com

Comment changer la taille de l'onglet dans Vim?

Chaque fois que j'ajoute un sélecteur en CSS et que j'appuie sur Enter pour définir les propriétés, le résultat est le suivant:

#selector {
        property: value;
}

(8 onglets)

Comment puis-je configurer Vim pour qu'il ressemble à ceci:

#selector {
    property: value;
}

(Onglets à 4 espaces)

125
alexchenco

Développer la réponse de zoul:

Si vous voulez configurer Vim pour qu'il utilise des paramètres spécifiques lors de la modification d'un type de fichier particulier, utilisez des autocommandes:

autocmd Filetype css setlocal tabstop=4

Cela fera en sorte que les onglets soient affichés sous forme de 4 espaces. Si vous définissez expandtab, Vim insérera des espaces (le nombre d’entre eux étant contrôlé par tabstop) lorsque vous appuyez sur tab; vous voudrez peut-être utiliser softtabstop pour que le retour arrière fonctionne correctement (c’est-à-dire, réduire l’indentation lorsque c’est ce qui se passerait si des tabulations étaient utilisées, plutôt que de toujours supprimer un caractère à la fois).

Pour prendre une décision éclairée quant à la configuration, vous devez lire les documents Vim sur tabstop, shiftwidth, softtabstop et expandtab. . Le bit le plus intéressant se trouve sous expandtab (:help 'expandtab):

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

  1. Conservez 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 taper et se comportera comme si un onglet apparaissait tous les 4 (ou 3) caractères.

  2. Définissez 'tabstop' et 'shiftwidth' sur ce que vous préférez et utilisez 'expandtab'. De cette façon, vous insérerez toujours des espaces. La mise en forme ne sera jamais déréglée lorsque "tabstop" est modifié.

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

  4. Réglez toujours 'tabstop' et 'shiftwidth' sur la même valeur et sur noexpandtab '. Cela devrait alors fonctionner (pour les retraits initiaux uniquement) pour tout paramètre d'arrêt de tabulation utilisé. Si vous faites cela, il pourrait être intéressant d’insérer des tabulations après le premier non vide. Sinon, les commentaires alignés seront incorrects lorsque "tabstop" est modifié.

78
Michał Marczyk
:set tabstop=4
:set shiftwidth=4
:set expandtab

Cela va insérer quatre espaces au lieu d'un caractère de tabulation. Les espaces sont un peu plus "stables", ce qui signifie que le texte mis en retrait avec des espaces s'affichera de la même manière dans le navigateur et dans toute autre application.

172
zoul

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 les CSS. Pour n'affecter que les fichiers css:

autocmd Filetype css setlocal tabstop=4

comme indiqué dans réponse de Michał .

96
Keith

Plusieurs réponses sur cette page sont des solutions à usage unique au problème décrit. Cela signifie que lors de la prochaine ouverture d'un document avec vim, les paramètres d'onglet précédents seront rétablis.

Si quelqu'un souhaite modifier en permanence les paramètres de l'onglet:

32
Alexander McNulty

Si vous avez souvent besoin de changer de taille et que vous ne voulez pas le lier à un type de fichier spécifique, vous pouvez avoir des commandes prédéfinies sur votre fichier .vimrc pour modifier 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>

Ceci mappe deux ensembles de tailles différents sur les clés\t et\m. Vous pouvez relier ceci à la clé que vous voulez.

6
Jens

En une ligne dans Vim:

:set tabstop=4 shiftwidth=4 expandtab

Pour une installation permanente, ajoutez ces lignes à ~/.vimrc:

set tabstop=4
set shiftwidth=4
set expandtab
0
oz19