如何设置最后执行的 VimScript?
How to set a VimScript to be executed last?
问题
我的 vimrc
(set noshowmode
) 中的一个设置在稍后的加载过程中被插件覆盖。
目标
有一个Vim最后执行的脚本文件(或至少在插件之后)。
我所知道的
- 插件Vim脚本在
vimrc
(Source)之后执行。
after-directory
运行 接近最后一个并保持用户覆盖
(来源::h after-directory
)。
- Vim的
runtimepath
决定了运行. 的顺序
尝试失败
我尝试将 Vim 脚本文件(包含 set noshowmode
)附加到
$VIMRUNTIME
的结尾
set runtimepath=$VIMRUNTIME,~/.vim/nosmd.vim
,但是这个方法结束了
弄乱其他插件(即 vim-airline
,未加载)。
我还尝试创建 ~/.vim/after
目录并将我的
Vim里面有脚本,但是没有效果。
您的尝试
set runtimepath=$VIMRUNTIME,~/.vim/nosmd.vim
那不行。 'runtimepath'
包含根配置目录列表;您不能直接将脚本文件放在那里。相反,指向包含 plugin/yours.vim
.
的目录
I also tried creating the ~/.vim/after
directory and putting my VimScript in there, but this had no effect.
您可以使用 :scriptnames
检查您的脚本是否已执行(以及在插件加载序列的末尾!)
解决方案
一点预防胜于任何解决方法。我会首先尝试找到更改 'showmode'
选项的罪魁祸首;插件不应该这样做(或者至少有一个可配置的选项来禁用它)。
:verbose set showmode?
可能已经告诉您是谁更改了此设置。
正如@romainl 已经评论的那样,~/.vim/after/plugin/myplugin.vim
应该可以用于撤消此操作。如果它没有尝试以下 autocmd(在你的 ~/.vimrc
中)作为最后的手段:
autocmd VimEnter * set noshowmode
问题
我的 vimrc
(set noshowmode
) 中的一个设置在稍后的加载过程中被插件覆盖。
目标
有一个Vim最后执行的脚本文件(或至少在插件之后)。
我所知道的
- 插件Vim脚本在
vimrc
(Source)之后执行。 after-directory
运行 接近最后一个并保持用户覆盖 (来源::h after-directory
)。- Vim的
runtimepath
决定了运行. 的顺序
尝试失败
我尝试将 Vim 脚本文件(包含
set noshowmode
)附加到$VIMRUNTIME
的结尾set runtimepath=$VIMRUNTIME,~/.vim/nosmd.vim
,但是这个方法结束了 弄乱其他插件(即vim-airline
,未加载)。我还尝试创建
~/.vim/after
目录并将我的 Vim里面有脚本,但是没有效果。
您的尝试
set runtimepath=$VIMRUNTIME,~/.vim/nosmd.vim
那不行。 'runtimepath'
包含根配置目录列表;您不能直接将脚本文件放在那里。相反,指向包含 plugin/yours.vim
.
I also tried creating the
~/.vim/after
directory and putting my VimScript in there, but this had no effect.
您可以使用 :scriptnames
检查您的脚本是否已执行(以及在插件加载序列的末尾!)
解决方案
一点预防胜于任何解决方法。我会首先尝试找到更改 'showmode'
选项的罪魁祸首;插件不应该这样做(或者至少有一个可配置的选项来禁用它)。
:verbose set showmode?
可能已经告诉您是谁更改了此设置。
正如@romainl 已经评论的那样,~/.vim/after/plugin/myplugin.vim
应该可以用于撤消此操作。如果它没有尝试以下 autocmd(在你的 ~/.vimrc
中)作为最后的手段:
autocmd VimEnter * set noshowmode