首页 > 解决方案 > 是否可以修复vim中的选项?

问题描述

跟进如何确保 formatoptions *never* 包含 `r` 或 `o`?,措辞不好。

是否可以在 vim 中以无法被插件或启动脚本修改的方式分配选项。例如,类似:

set const final opt=value

在 .vimrc 中会很棒。我想如果 opt 已经是常量,这将是一个错误,导致 vim 在遇到这种情况时拒绝打开它正在初始化的缓冲区,甚至可能退出。

目前是否存在这样的功能?

标签: vim

解决方案


不完全是。:const和都有:lockvar,但它们仅用于变量。对于 VimScript 来说,选项是完全不同的东西。

但是,您可以使用自动命令伪造此功能。例如,

augroup ForbidSetOptions | au!
    autocmd OptionSet formatoptions
        \ if &filetype ==# 'foo'
            \ echom 'You are not allowed to "set fo" for "foo" files!'
            \ set formatoptions=jcroql
        \ endif
augroup end

请注意,我们不会陷入无限递归,因为默认情况下不会从另一个自动命令触发自动命令。

但请注意,此事件不是在启动时有意触发的。因此,您可能应该查阅相关的插件文档,而不是按照您想要的方式设置选项。或者编写您自己的~/.vim/after/plugin/...(或~/.vim/after/ftplugin/...)脚本来自动撤消这些不需要的设置。


推荐阅读