Vim est très accommodant en ce qui concerne l'onglet Vs. préférences d'espace. Si je comprends bien, le tabstop
paramètre indique la largeur d'un caractère de tabulation. Le shiftwidth
paramètre spécifie le nombre de colonnes à incrémenter / décrémenter lors de l'utilisation des commandes <<et >>, tandis que le softtabstop
paramètre influence la quantité d'espaces à insérer lorsque vous appuyez sur la Tabtouche en mode insertion. Si expandtab
est activé, la touche de tabulation insère le softtabstop
nombre de caractères d'espacement. Alors qu'avec expandtab
désactivé, appuyer sur la Tabtouche insère le plus petit nombre possible de caractères tabulation + espace correspondant softtabstop
. (Corrigez-moi si j'ai tort, s'il-vous plait.)
Ce dernier point me fait me demander: y a-t-il un cas pratique où vous ne voudriez pas shiftwidth == tabstop && tabstop == softtabstop
? Je ne peux pas penser à un seul. En ce qui me concerne, ce serait plus pratique si je pouvais définir tous les 3 à la même valeur, en une seule affectation. par exemple appeler:
:set stab=4
ce qui équivaudrait à courir:
:set tabstop=4 softtabstop=4 shiftwidth=4
Quelqu'un peut-il suggérer comment cela pourrait être fait?
MISE À JOUR
Merci pour les réponses si loin de trop de php , hobbs et kaiser.se . Plutôt que de répondre à chacun individuellement, je mets à jour la question ici.
Softtabstop avec expandtab désactivé
J'ai dit ci-dessus qu'avec expandtab désactivé, appuyez sur la touche Tab pour insérer le plus petit nombre possible de caractères tabulation + espace correspondant softtabstop
. Je maintiens cela, mais je pense que je dois expliquer ce que je voulais dire. J'essaierai de le faire à l'aide de quelques exemples. Pour suivre, exécutez :set list
pour voir les caractères de tabulation.
tabstop=4 softtabstop=2 shiftwidth=4 noexpandtab
En mode insertion, une pression sur la touche de tabulation insère 2 caractères d'espacement. Appuyez une deuxième fois sur la touche de tabulation et au lieu d'insérer deux autres caractères d'espace (pour un total de 4 caractères d'espace), il remplace les 2 espaces précédents par un seul caractère de tabulation. Tabstop est défini sur 4, donc un seul caractère de tabulation a la même largeur que 4 espaces.
tabstop=4 softtabstop=6 shiftwidth=4 noexpandtab
En mode insertion, appuyez sur la touche de tabulation pour insérer 1 caractère de tabulation plus 2 espaces. Le caractère de tabulation a une largeur de 4, donc la largeur totale est de 6, et ceci est réalisé en utilisant 3 caractères. Une seconde pression sur la touche de tabulation insère deux caractères de tabulation et supprime les deux espaces insérés précédemment. La largeur totale est de 12, et ceci est réalisé en utilisant 3 caractères.
Dans ces deux exemples, Vim insère le nombre minimum possible de caractères tabulation + espace correspondant à softtabstop.
Si je travaille avec expandtab désactivé, je ne me vois pas vouloir le contrôle supplémentaire granulaire qui peut être obtenu en définissant softtabstop sur une valeur différente de tabstop. Il me serait toujours utile de pouvoir régler tabstop
, softtabstop
et shiftwidth
à la même valeur avec une seule commande.
Expandtab rend softtabstop redondant?
tabstop=4 softtabstop=0 shiftwidth=4 expandtab
En mode insertion, appuyer sur la touche de tabulation insère 4 espaces. Appuyer sur la touche de suppression supprime un seul espace - vous devez donc reculer 4 fois si vous appuyez sur la touche de tabulation par accident.
tabstop=4 softtabstop=4 shiftwidth=4 expandtab
En mode insertion, appuyer sur la touche de tabulation insère 4 espaces. Appuyez sur la touche de retour arrière pour supprimer 4 espaces.
Si je travaille avec expandtab
activé, je préférerais que la touche de suppression supprime la même quantité d'espaces que les inserts de touche de tabulation. Donc, dans ce cas aussi, je pense qu'il serait utile de pouvoir attribuer la même valeur à tabstop
, softtabstop
et shiftwidth
simultanément.
Un raccourci serait toujours utile
C'est génial que Vim offre autant de flexibilité, mais je ne me vois pas en avoir besoin. Je veux juste pouvoir choisir la largeur d'un onglet, et s'il s'agit d'un onglet «dur» (en utilisant un caractère de tabulation) ou d'un onglet «souple» (composé d'espaces). Basculer entre les onglets durs et souples est assez facile ( :set expandtab!
), mais j'aurais aimé qu'il soit plus simple de définir la largeur de l'onglet, sans avoir à jouer avec 3 paramètres différents.
Donc, ma proposition de suggestion pour quelque chose comme :set stab=4
me semble toujours bonne.