对于我已经在Vim中打开过的文件,似乎有一些奇怪的类似缓存的行为正在进行。我打开了一个文件foo.txt,然后在~/.vim/after/ftplugin/text.vim中更改一些设置,但是这些新设置不会出现在foo.txt中。我可以退出vim,重新打开foo.txt,或者用:e重新加载,甚至用:so ~/.vim/after/ftplugin/text.vim重新加载,但是这些似乎对foo.txt的设置没有影响。如果我mv foo.txt bar.txt,设置显示为bar.txt,没有问题。
编辑
我似乎可以强制设置重新加载foo.txt,其顺序如下:
:so ~/.vimrc:so ~/.vim/after/ftplugin/text.vim问题:
~/.vimrc是不够的?它应用了直接在~/.vimrc中指定的设置,但不是应该在filetype plugin indent on行加载ftplugins吗?为什么采购text.vim之后是必要的?发布于 2017-02-27 17:51:37
Vim 运行时由几百个文件组成,我不知道为什么您希望Vim持续监视它们。没有,这些文件是在一些定义良好(并有文档记录的)点加载的,仅此而已。
特别是没有安全的方法来重新加载您的配置。您可以做像:so ~/.vimrc这样的事情,但是除非专门编写vimrc来考虑这一点,否则就会有缺点(比如autocmd的堆积)。如果你想安全,你必须放弃Vim,重新启动它。这就是维姆的工作方式。
现在,对于ftplugin来说,您可以通过这样的方法来解决问题:
:setf text(使用实际的文件类型而不是text)。这适用于简单的set fubar选项。它之所以有效,是因为在幕后,setf实际上是一个精心编写的autocmd。对于更复杂的构造(如autocmd或文件作用域变量),它仍然会中断,原因与:so ~/.vimrc存在缺陷的原因相同。
发布于 2017-02-27 23:01:40
还有几个精确性:
.vimrc只加载一次->,用于定义全局内容.gvimrc相同,只在.vimrc之后加载gvim。macros/脚本(显式/手动加载)。正如你所看到的,所有的东西都只装载一次。如果您想要加载它们几次,则必须手动和显式地进行加载。这就是为什么我们中的一些人有一个:Reload命令来简化重新加载任何类型的脚本--我的脚本集合隐藏在我的脚本集合中: lh-misc -> plugin/vim-->.vim。
https://stackoverflow.com/questions/42491812
复制相似问题