Tengo dos buffers en vim:
:ls
1 %a ".vimrc" line 1
2 #h "script.sh" line 1
Press ENTER or type command to continue
Como se ve arriba, estoy en el primer búfer. Ahora, si ejecuto el :set softtabstop=16comando, espero que afecte a ambos búferes. Sin embargo, este no es el caso, mientras que el stsvalor para el primer búfer se modifica y la Tabtecla inserta cuatro caracteres de tabulación ( ts=4), entonces para el segundo búfer el stsvalor sigue siendo 4:
:ls
1 #h + ".vimrc" line 1
2 %a + "script.sh" line 1
softtabstop=4
Press ENTER or type command to continue
¿Por qué es así? Pensé que eso setafecta a todos los búferes y setlocalafecta solo al búfer activo.

:setglobal.'encoding'.vimscriptllamada a una función?setbufvarque puede usarse para lograr eso. No lo encontré al principio.No es un experto, @Martin, pero al leerlo
:help setnecesitaría "desarmar" el valor local destscada búfer para que ese búfer recoja cualquier valor global nuevo.setlocal sts=(o para banderas booleanassetlocal flag<). Tiene sentido, la configuración local se inicializa a los valores globales actuales en abierto, luego mantiene los valores locales hasta que se indique lo contrario. Si no hay una configuración local en juego, debería recoger cualquier valor global nuevo.Nuevamente, al no ser un experto, me arriesgaría a suponer que ese segundo búfer tenía una configuración local explícita antes que la posterior
set. Más de 50/50 que mi entendimiento es incorrecto, ya que estoy todavía no está claro en lo que la diferencia entresetysetglobales .fuente