据我所知,VIM在set和setl之间有所不同,因为第一个为所有缓冲区设置了一个选项,而后者只设置了当前缓冲区的选项.如果我做了a:set tw = 80而不是a:setl tw = 80,这是显而易见的.
现在,当我执行a:set ft = plsql时,它只会在当前缓冲区上操作,尽管我没有执行setl.当然,这是有道理的.然而,我没有看到这是否记录在某处.因此,问题可能归结为:是否存在默认情况下在当前缓冲区上运行而其他选项在“无处不在”运行的选项以及记录在哪里的选项?
确实有选项在当前缓冲区上运行(在某些情况下确实是当前窗口).该文档包含该选项的文档.如果您转到:help option-list中的任何选项,它将具有以下三个字符串之一作为第三行:
global local to window local to buffer
(或它们的某种组合).例如,:help’ft’给出:
*'filetype'* *'ft'* 'filetype' 'ft' string (default: "") local to buffer {not in Vi} {not available when compiled without the |+autocmd| feature} When this option is set,the FileType autocommand event is triggered. All autocommands that match with the value of this option will be executed. Thus the value of 'filetype' is used in place of the file name.
所以这个选项是缓冲区的本地选项.有关更多讨论,请参阅:
:help option-summary