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=16
comando, espero que afecte a ambos búferes. Sin embargo, este no es el caso, mientras que el sts
valor 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 sts
valor 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 set
afecta a todos los búferes y setlocal
afecta solo al búfer activo.
:setglobal
.'encoding'
.vimscript
llamada a una función?setbufvar
que puede usarse para lograr eso. No lo encontré al principio.No es un experto, @Martin, pero al leerlo
:help set
necesitaría "desarmar" el valor local dests
cada 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 entreset
ysetglobal
es .fuente