Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.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脚本中,如何判断是否在.vimrc中指定了设置?_Vim - Fatal编程技术网

在vim脚本中,如何判断是否在.vimrc中指定了设置?

在vim脚本中,如何判断是否在.vimrc中指定了设置?,vim,Vim,在vim插件中,如何判断用户是否已经在其.vimrc文件中设置了变量 例如,我在.vimrc: set shiftwidth=2 然后我加载一个具有 set shiftwidth=3 所以我想这样修改插件: if !exists("shiftwidth") set shiftwidth=3 endif 但是,当我加载了一个新的vim窗口并加载了修改后的插件时,我的选项卡仍然设置为3,而不是2 如何使其仅设置shiftwidth=3,除非.vimrc中另有规定?这些命令应显示设置shif

在vim插件中,如何判断用户是否已经在其.vimrc文件中设置了变量

例如,我在
.vimrc

set shiftwidth=2
然后我加载一个具有

set shiftwidth=3
所以我想这样修改插件:

if !exists("shiftwidth")
  set shiftwidth=3
endif
但是,当我加载了一个新的vim窗口并加载了修改后的插件时,我的选项卡仍然设置为
3
,而不是
2


如何使其仅设置
shiftwidth=3
,除非
.vimrc
中另有规定?

这些命令应显示设置
shiftwidth
的位置:

:set verbose=15
:set shiftwidth
:set verbose=0
如果您希望以编程方式使用该信息执行某些操作,则需要重定向详细输出,并根据需要对其进行解析:

:redir => myvariable
:set verbose=15
:set shiftwidth
:set verbose=0
:redir END
myvariable
现在将包含原本会打印到屏幕上的文本

修改后的答案 以下是我认为你可以做你在评论中澄清的事情的方法

将最后一行添加到用户的vimrc,以将shiftwidth的当前值保存到全局变量。该值将在加载任何插件之前保存,除非在最后一行之前在vimrc中显式地获取插件。然后,您可以在自己的插件中将shiftwidth重置为该值

[everything in vimrc comes before this line]
:let g:vimrc_shiftwidth = &shiftwidth

您可以使用类似于
write>>[file]
命令的方式以编程方式添加此行。您可能会包含一条注释,指示是哪个插件将此命令添加到vimrc。此外,我认为这不会捕获正确的值,例如,如果用户使用exrc选项并在不同的vimrc中设置shiftwidth。总之,还是不推荐。

详细的
:set shiftwidth
输出确认我的插件是上次设置
shiftwidth
值的地方,但是你没有回答我关于如何修改插件的问题,以便它使用
.vimrc
中指定的值(如果设置了)。@neezer--对不起,我读得不够仔细。Verbose只会告诉您上次设置的位置。如果用户在启动后更改了值集,这对您没有帮助。我认为您需要打开vimrc文件并搜索设置
shiftwidth
的行,它可以是
set sw=…
set shiftwidth=…
let&sw=…
,或者
let&shiftwidth=…
@Herbert Sitz-Hmm,我觉得一定有比每次加载插件时浏览
.vimrc
文件更好的方法。我不担心用户在加载插件后是否会更改它,我只是想让它正确加载,例如:用ftype打开一个文件来加载插件=>在
.vimrc
中设置
shiftwitdth
相等,除非
.vimrc
中没有设置,在这种情况下,
shiftwidth
将等于插件默认值。@neezer为什么需要这个?除了解析重定向输出外,无法判断vimrc中是否设置了设置(使用
静默设置shiftwidth?
使其不显示给用户)。但是有一个问题:可以有不止一个vimrc:see
:h.vimrc
@ZyX-我只想让插件尊重用户为
shiftwidth
设置的任何值,而不是指定它自己的值。我喜欢将制表符设置为2个空格,所以这就是我在
.vimrc
中设置的。然而,加载此插件会将其重置为3个空格,插件代码中的注释会显示“设置默认选项卡宽度”的效果。这让我很沮丧,因为我已经将默认设置为我想要的:2个空格。我正在寻找一种方法,让插件尊重我的偏好,而不是强加自己的偏好。