Eu tenho dois buffers no vim:
:ls
1 %a ".vimrc" line 1
2 #h "script.sh" line 1
Press ENTER or type command to continue
Como visto acima, estou no primeiro buffer. Agora, se eu executar o :set softtabstop=16
comando, espero que ele afete os dois buffers. No entanto, esse não é o caso - enquanto o sts
valor do primeiro buffer é realmente alterado e a Tabchave insere quatro caracteres de tabulação ( ts=4
), para o segundo buffer o sts
valor ainda é 4
:
:ls
1 #h + ".vimrc" line 1
2 %a + "script.sh" line 1
softtabstop=4
Press ENTER or type command to continue
Por que? Eu pensei que isso set
afeta todos os buffers e setlocal
afeta apenas o buffer ativo ..
:setglobal
.'encoding'
.vimscript
chamadas de função?setbufvar
que pode ser usada para conseguir isso. Não o encontrou no início.Não é um especialista, @Martin, mas, ao ler,
:help set
você precisará "desarmar" o valor local dests
cada buffer para que esse buffer pegue qualquer novo valor global.setlocal sts=
(ou para sinalizadores booleanossetlocal flag<
). Meio que faz sentido, as configurações locais inicializadas com os valores globais atuais em aberto e, em seguida, mantenha os valores locais até que seja informado o contrário. Se não houver configuração local em jogo, ele deverá receber novos valores globais.Novamente, não sendo especialista, arriscaria adivinhar que esse segundo buffer tinha uma configuração local explícita antes do posterior
set
. Mais de 50/50 de que meu entendimento está errado, pois ainda não estou claro qual é a diferença entreset
esetglobal
é .fonte