问题 如何找出vim不断更改expandtab设置的原因


我用vim。具体来说我正在使用 杰纳斯。我有expandtab设置。但是,在使用vim的过程中,由于某种原因,我的expandtab设置被设置为noexpandtab,我的文件开始获得硬标签。我试过打字 :verbose set expandtab? 但这并没有向我展示任何东西(具体来说,它向我展示了这一点 noexpandtab 已设置,但它不显示负责设置它的文件)。

所以我想找出:

  • 为什么我的expandtab设置可能会发生变化
  • 我如何追查罪魁祸首并防止其发生

谢谢


2754
2018-01-17 23:22


起源

你的:动词设置expandtab是什么?显示? - Rook
它只是提出'noexpandtab',即没有设置它的文件的路径。 - jonleighton
重置你的gvim并再试一次,第一件事:动词设置expandtab? (别忘了问号)。 - Rook
除此之外你的:脚本名称显示了什么? - Rook


答案:


尝试这个

:verb set expandtab?
:verb set et?
:verb set invexpandtab?

expandtab 真的可以通过多种方式设置:/


8
2018-01-17 23:50



谢谢,我会试试。我没有意识到运行这些不同的命令可能会产生不同的答案。还有什么呢 invexpandtab 做?我在谷歌上找不到太多东西。 - jonleighton
@jonleighton - 就像任何其他命令一样,它会打开/关闭状态。 set invnumber,set invexpandtab,set inv ... help invnumber。 - Rook
好的,所以我跟踪了它 对齐插件。 :verb set expandtab? 告诉我 - 我想也许我在过去尝试时忘记了问号。 - jonleighton
我想我会尝试使用表格插件作为替代方案。 (在此期间,我刚刚删除了那条线,但这非常hacky) - jonleighton
我有这个问题。原因是 set binary在 ~/.vimrc 自动设定 noexpandtab。 - DavidWinterbottom


如果您尝试以下操作,我应该补充上述内容:

:verb set expandtab?
:verb set et?
:verb set invexpandtab?

你回来时没有行号或文件:

noexpandtab

您很可能拥有以下内容并需要更改订单:

set expandtab

set binary
set noeol

改为(注意订单)

set binary
set noeol

set expandtab

原因是由于 设置二进制 命令在运行后会执行一些默认值。包括以下内容:

'textwidth'  will be set to 0
'wrapmargin' will be set to 0
'modeline'   will be off
'expandtab'  will be off

我注意到DavidWinterbottom在他的评论中提到了这一点,但这似乎是默认隐藏的唯一评论,这使我做了更多必要的阅读,所以希望这篇文章可以帮助另一个可怜的灵魂浪费无数小时跟踪这下来了。


6
2017-11-13 05:12





VIM设置可以在配置文件中设置,也可以在您正在编辑的文件内的模式行中设置。注意 expandtab 可以在VIM中缩短到 et,所以一定要找那个。

我想找的可能的配置文件:

  1. /etc/vim/vimrc 和该目录中的其他文件(有时 vimrc.local 等)
  2. $HOME/.vimrc

至于modelines,它们只是VIM的配置选项,位于文件本身的注释中。如果这只发生在某些文件而不是其他文件中,请查找类似于以下内容的注释:

/* vim: set noet ai tw=75: */

并尝试删除它们,看看它是否有帮助。


2
2018-01-17 23:29



谢谢。 Grepping并没有出现太多变化。当我接下来设法重现问题时,我会尝试ldigas,看看是否有任何解释。 - jonleighton