Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在vim中,如何更改脚本名的来源顺序?_Vim - Fatal编程技术网

在vim中,如何更改脚本名的来源顺序?

在vim中,如何更改脚本名的来源顺序?,vim,Vim,我注意到vim首先执行全局vimrc和我的个人~/.vimrc,然后是语法文件,然后是plugin.vim文件。 这常常会导致用户在其.vimrc中进行的一些自定义被这些插件之一覆盖。例如,我在formatoptions、iskeyword等中看到了这一点 问题是我如何控制执行顺序,以确保我的自定义设置最后应用并且不会被覆盖 我见过许多人询问如何找到执行顺序(:scriptnames),但没有人给出答案,试图解决有关控制这些文件执行顺序的任何问题,当问问题的人显然被某个插件或类似插件覆盖了他们的

我注意到vim首先执行全局vimrc和我的个人~/.vimrc,然后是语法文件,然后是plugin.vim文件。 这常常会导致用户在其.vimrc中进行的一些自定义被这些插件之一覆盖。例如,我在formatoptions、iskeyword等中看到了这一点

问题是我如何控制执行顺序,以确保我的自定义设置最后应用并且不会被覆盖


我见过许多人询问如何找到执行顺序(:scriptnames),但没有人给出答案,试图解决有关控制这些文件执行顺序的任何问题,当问问题的人显然被某个插件或类似插件覆盖了他们的更改时。

将您的插件放入-它们将在所有其他插件之后被源化。

如果您只想确保您的
~/.vimrc
在所有其他脚本之后被源化,那么您可以像这样启动vim:

vim -S ~/.vimrc
通过这种方式,您的
~/.vimrc
将首先在所有其他脚本(如
:scriptnames
所定义)之前获得源代码,然后在所有其他脚本获得源代码之后再次获得源代码。当vim已经在运行时,它与使用
:so~/.vimrc
来采购
.vimrc
相同


因此,这将重新启用
.vimrc
中的所有设置,无论之前加载了哪些插件。

一些设置应该在
vimrc
文件之后进行。特定于文件类型的设置就是这种行为的主要示例

示例:

  • Python的缩进设置,可在
    $VIMRUNTIME/ftplugin/Python.vim
    中找到
  • 类lisp语言的iskeyword应允许在Word中使用
    -
    ,而大多数其他语言则不允许
'iskeyword'
'formatoptions'
的示例设置都是缓冲区本地选项,可能应该根据
'filetype'
设置

如果您确实想更改特定
'filetype'
的这些设置,您可以使用after目录在ftplugins来源后添加自定义设置

示例:如果要为css文件将
-
添加到
'iskeyword'
,请将以下内容添加到
~/.vim/after/ftplugin/css.vim
文件中:

setlocal iskeyword+=-
如果一个插件行为不正常,那么你也可以使用after目录在一个插件来源之后进行更改。e、 g.
~/.vim/after/plugin/{plugin}.vim
将在
{plugin}
来源之后进行来源

有关更多帮助,请参阅:

:h after-directory
:h ftplugin
:h :setlocal

这听起来像是一个丑陋的黑客行为,你很快会后悔的。@IngoKarkat,因为它可能会推断出插件所做的设置?你放弃了对配置的控制(以及它正确归属的位置是有效的)。接下来,您的文件类型设置有一些问题,并且在每次读取缓冲区后也开始寻找vimrc…@IngoKarkat,这样您就不会重新启用插件覆盖的设置,因为它们存在是有原因的?这取决于设置。理想情况下,该插件可以对其进行配置,这样您就不需要在插件完成后进行更正。