在 .vimrc 中有一行set expandtab
,但有时这不起作用。问题是当我按下tab
键时会插入一个新选项卡,但它不会扩展到空格。我可以看到 'tab' 在那里set list
。
:scriptnames
清单显示 .vimrc 已加载,但问题有时仍然存在。我set expandtab
每次都必须手动运行。1
:~/.vimrc
还有其他类似的问题,似乎.vimrc
实际上没有加载。知道是什么问题吗?
更新 verb set expandtab?
或其他类似命令均返回 noexpandtab
Last set from ~/.vimrc
。
日志已粘贴这里。它包括我的 .vimrc、grep -rI
结果和 的跟踪VIM -V9
。
expandtab 问题并非总是发生,下次发生时我会更新此帖子。 总是发生的另一个问题是set autoindent
不起作用。verb set autoindent
显示它未设置,请参阅最后几行周围的跟踪。 但实际上它已经在 中设置了.vimrc
,我每次都必须手动设置它。 这类似于expandtab
问题。
答案1
当您看到此行为时,请检查是否使用此命令设置了 expandtab:
:set expandtab?
如果未设置,vim 将返回 noexpandtab,这意味着在处理 .vimrc 之后某些东西对其进行了更改 - 一个插件、一个由 .vimrc 生成的文件,它创建了一个竞争条件,最后应用了设置,等等。
有几种不同的设置方法,因此您必须检查每种方法。以下命令将告诉您最后设置了 expandtab 的方法:
:verb set expandtab?
另请查看et
expandtab 的别名,例如:verb set et?
和invexpandtab
,用于关闭/打开 expandtab,:verb set invexpandtab?
这应该向您显示 .vimrc 设置被覆盖的内容。
如果您发现 expandtab 值设置得当,并且制表符没有转换为空格,那么这是一个完全不同的问题 - 如果是这种情况,请发布对您的问题的更新。
更新:
因为它告诉你 .vimrc 是最后设置的,所以其中一定有直接或间接的东西在起作用。最好的办法是将 .vimrc 发布到 pastebin 或类似网站上,并发布指向它的链接。
您还可以将“set expandtab”作为 .vimrc 中的最后一项,因为它是按顺序处理的。
您提到其他设置与 vimrc 设置值不一致 - 哪些?
我还会通过 grep 遍历 .vim 目录和子目录来查找 expandtab ,但你可能会得到大量的误报。如果你这样做,grep -rI expandtab ~/.vim
它可能会让我们回到 .vimrc 中可能被拉入的位置。
另外 - 尝试创建一个调试日志并检查其中是否存在任何错误警告等,尤其是(obv.)任何包含“expandtab”的日志
使用 -V[N] 选项运行 vim 将会产生大量的运行时日志,这里 N 是调试级别。
vim -V9myVimLog
将在当前目录中创建一个名为“myvimlog”的调试级别为 9 的日志
最好的办法是发布你的 .vimrc。确保混淆所有个人信息。