Ich habe zwei Puffer in vim:
:ls
1 %a ".vimrc" line 1
2 #h "script.sh" line 1
Press ENTER or type command to continue
Wie oben gesehen, bin ich im ersten Puffer. Wenn ich nun den :set softtabstop=16
Befehl ausführe , erwarte ich, dass er beide Puffer beeinflusst. Dies ist jedoch nicht der Fall. Während der sts
Wert für den ersten Puffer tatsächlich geändert wird und die TabTaste vier Tabulatorzeichen ( ts=4
) einfügt , ist der sts
Wert für den zweiten Puffer immer noch 4
:
:ls
1 #h + ".vimrc" line 1
2 %a + "script.sh" line 1
softtabstop=4
Press ENTER or type command to continue
Warum ist das so? Ich dachte, das set
betrifft alle Puffer und setlocal
nur den aktiven Puffer.
:setglobal
.'encoding'
.vimscript
Funktionsaufrufen festzulegen?setbufvar
der dies erreicht werden kann. Habe es zuerst nicht gefunden.Kein Experte, @Martin, aber nach dem Lesen
:help set
müssten Sie den lokalen Wert vonsts
in jedem Puffer "deaktivieren" , damit dieser Puffer einen neuen globalen Wert aufnimmt .setlocal sts=
(oder für boolesche Flagssetlocal flag<
). Ein bisschen macht es Sinn, lokale Einstellungen beim Öffnen auf aktuelle globale Werte zu initialisieren und dann lokale Werte beizubehalten, bis etwas anderes gesagt wird. Wenn keine lokale Einstellung im Spiel ist, sollten neue globale Werte erfasst werden.Da ich kein Experte bin, würde ich die Vermutung wagen, dass dieser zweite Puffer vor dem späteren eine explizite lokale Einstellung hatte
set
. Mehr als 50/50, dass mein Verständnis falsch ist, da ich immer noch unklar bin, was der Unterschied zwischenset
undsetglobal
ist .quelle