如何找出 Vim 设置被更改的插件?

19

今天我表现出了一些奇怪的行为。我有

set autoindent

在我的vimrc中,但由于某种原因,每当我打开一个PHP文件时,这个功能都会关闭。

我现在已经通过添加像这样的一行来修复它:

autocmd FileType php set autoindent

但我仍在努力找出禁用此设置的位置。那么有没有一种方法可以找出在vim配置文件中更改设置的位置呢?

供参考,这是我在Ubuntu上使用的完整的vimrc.local

https://gist.github.com/mikehaertl/1612035/5fa149468006577d193858bbc8cefcd3a413e017

编辑:问题是由我一段时间前添加到我的配置中的filetype indent on引起的。不过我不知道为什么会影响自动缩进。

2个回答

25

:verbose 命令能够告诉你一个选项是在什么时候被最后修改的:

:verbose set autoindent?

如果那样还是没有帮助,您可以检查所有已执行的命令,最好将输出重定向到日志文件中:

:set verbosefile=vim.log
:20verbose edit foo.php

还要注意,有几个选项控制缩进,例如'cindent''smartindent''indentexpr'等。

顺便提一下,为了避免更改的选项值泄漏到其他缓冲区中,建议使用:setlocal


嗯,我已经尝试了,但如果我在控制台中输入它,它只会显示“autoindent”。我有什么遗漏吗? - Michael Härtl
其他缩进设置可能有问题。如果所有尝试都失败了,您必须检查每个执行的命令;我在我的答案中添加了一个示例。 - Ingo Karkat
好的,谢谢。顺便说一下,问题是由我最近添加的filetype indent on引起的。 - Michael Härtl
好的,它并没有被记录在文档中。顺便说一句,在Vim中找到除C语言以外其它语言的良好缩进设置似乎是一件非常痛苦的事情。所有可用的选项可能会变得非常混乱(正如我的问题所示)。而我尝试的不同PHP配置都有缺陷。所以可能要坚持使用autoindent。如果您在这方面有一些指针,我会很高兴听到的。 - Michael Härtl
@MichaelHärtl “它没有记录”是我们经常说的一句话,但在 Vim 的情况下,这几乎从不适用 ;) 在 :h :filetype-indent-on 中有大量的文档。顺便说一下,罪魁祸首是捆绑的 PHP 缩进脚本,其中包含一个明确的 setlocal noautoindent - glts
显示剩余3条评论

0

那行不是问题吗?

autocmd FileType php set cindent|set cinkeys-=0#

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接