:h local-options
says:
for each buffer-local option there also is a global value, which is used for
new buffers. With ":set" both the local and global value is changed. With
"setlocal" only the local value is changed, thus this value is not used when
editing a new buffer.
:h global-local
says:
For some global options it's useful to sometimes have a different local value.
You can set the local value with ":setlocal". That buffer or window will then
use the local value, while other buffers and windows continue using the global
value.
I am confused by how these are different. It sounds to me like if I say :setlocal
on a buffer-local or a global-local option, the setting is set for that particular buffer (assuming the global-local in this case is a "Global or local to buffer" and not a "Global or local to window" option). And if I say :setglobal
, the global setting (default for all buffers) is set, and :set
sets both global and local options.
The only possible difference I can find in the documentation (and maybe this is the answer?) is that there is special documentation around :set<
or :setlocal=
for global-local options that lets you erase the local value and fall back to the current global setting. There's no documentation that indicates that buffer-local settings can be unset / fall back to a global value. Is that true? And is that the essence of the difference in these two options?