J'ai deux tampons dans vim:
:ls
1 %a ".vimrc" line 1
2 #h "script.sh" line 1
Press ENTER or type command to continue
Comme vu ci-dessus, je suis sur le premier tampon. Maintenant, si j'exécute la :set softtabstop=16
commande, je m'attends à ce qu'elle affecte les deux tampons. Cependant, ce n'est pas le cas - alors que la sts
valeur du premier tampon est en effet modifiée et que la Tabtouche insère quatre caractères de tabulation ( ts=4
), alors pour le deuxième tampon, la sts
valeur est toujours 4
:
:ls
1 #h + ".vimrc" line 1
2 %a + "script.sh" line 1
softtabstop=4
Press ENTER or type command to continue
Pourquoi est-ce si? Je pensais que cela set
affecte tous les tampons et setlocal
affecte uniquement le tampon actif ..
:setglobal
.'encoding'
.vimscript
appels de fonction?setbufvar
qui peut être utilisée pour y parvenir. Je ne l'ai pas trouvé au début.Pas un expert, @Martin, mais à la lecture,
:help set
vous devrez "désactiver" la valeur locale dests
chaque tampon pour que ce tampon récupère toute nouvelle valeur globale.setlocal sts=
(ou pour les drapeaux booléens,setlocal flag<
). Un peu logique, les paramètres locaux initialisés aux valeurs globales actuelles à l'ouverture, puis gardez les valeurs locales jusqu'à indication contraire. S'il n'y a pas de paramètre local en jeu, il devrait récupérer toutes les nouvelles valeurs globales.Encore une fois, n'étant pas un expert, je risquerais de deviner que ce deuxième tampon avait un paramètre local explicite avant le dernier
set
. Plus de 50/50 que ma compréhension est fausse, car je ne sais toujours pas quelle est la différence entreset
etsetglobal
est .la source