Ну, это довольно просто, ИМО. Подумайте, для чего используется опция.
Скажем, confirm
является глобальным, поскольку имеет смысл для каждого экземпляра Vim. Следовательно, даже если вы выполните setlocal confirm
, это автоматически изменит глобальную опцию, поскольку она является единственной существующей.
Далее, expandtab
локально для буфера (примечание: некоторые опции могут быть локальными для окна например, :h 'diff'
). Тем не менее, существует как глобальный expandtab
(который по сути является «текущим значением по умолчанию» expandtab
для вновь создаваемых буферов), так и локальный expandtab
(по одному на каждый существующий буфер). Также обратите внимание, что некоторые «значения по умолчанию» в значительной степени бесполезны (например, filetype
будет установлен ftdetect
в любом случае, но, тем не менее, глобальный filetype
существует).
Теперь, что является глобально-локальным предмет? Это просто опция, которая может (или не может) создаваться для каждого существующего буфера. Но, конечно, всегда есть глобальная опция такого типа.
Чем она отличается от обычной локальной опции? Скажем, у вас есть в вашем vimr c:
setglobal noexpandtab noautoread
Теперь вы запускаете Vim и вводите:
:setlocal expandtab? autoread?
И затем вы получаете в ответ:
noexpandtab
--autoread
Это означает, что у вас есть локальная копия буфера вашего глобального expandtab
, но локальный autoread
вообще не был создан в текущем буфере, поэтому Vim будет использовать глобальное значение, каким бы оно ни было be.
Подводя итог сказанному выше:
«Глобальная опция» означает, что локального значения не существует вообще. Поэтому глобальное значение всегда используется.
«Локальная опция» означает, что все буферы (или windows) всегда имеют свою собственную копию, и поэтому «глобальное» значение имеет смысл только в качестве значения по умолчанию.
«Глобальный локальный параметр» означает, что некоторые буферы (или windows) могут иметь свою копию, а другие - нет. Поэтому Vim использует текущий локальный параметр, если он установлен, в противном случае он использует глобальный параметр.