如何使用let为当前缓冲区(vim)设置选项?
在vimlanguage中,只能使用如何使用let为当前缓冲区(vim)设置选项?,vim,Vim,在vimlanguage中,只能使用setlocal设置当前缓冲区的选项。 但是,我需要设置一个比文字更复杂的表达式,这在setlocal中是不可能的 我目前有let&formatprg=s:prgpath。“.a:args,但这设置了所有缓冲区的formatprg,这不是我想要的。 如何设置上述格式,仅针对当前缓冲区?使用let&l:option而不是let&option仅更改本地值,如setlocal option。类似地,let&g:option只设置全局值,如setglobal opti
setlocal
设置当前缓冲区的选项。
但是,我需要设置一个比文字更复杂的表达式,这在setlocal
中是不可能的
我目前有let&formatprg=s:prgpath。“.a:args
,但这设置了所有缓冲区的formatprg,这不是我想要的。
如何设置上述格式,仅针对当前缓冲区?使用
let&l:option
而不是let&option
仅更改本地值,如setlocal option
。类似地,let&g:option
只设置全局值,如setglobal option
。有关更多信息,请参阅
请注意,
formatprg
尤其是全局的(中没有“本地到缓冲区”。使全局选项缓冲区为本地需要更改Vim的源代码。或者,我刚刚发布了使用autocmds解决此问题的,并将任何全局选项转换为缓冲区或窗口本地选项。它似乎不起作用。当我打开两个窗口并运行let&l:formatprg=“hey”
时,另一个窗口中的&l:formatprg
也会发生更改。这是因为formatprg
是全局的setlocal
对它也不起作用。啊,这就解释了!不过很奇怪。我需要在本地设置formatprg,因为我想对不同的文件类型使用不同的formatprg。本地的formatexpr
,在您的情况下有效吗?如果没有,您可以在BufRead,BufEnter
上设置一个autocmd
来更改特定文件类型的formatprg
。谢谢您的建议!我在vim dev的邮件列表中找到一篇帖子,它请求对此进行修补:。我认为在下一个版本的vim中使formatprg本地化不会有什么坏处。