如何使Vim适应我正在编辑的文件的当前缩进样式?


39

我从事一系列JavaScript项目。在大多数这些项目中,JavaScript文件的缩进为2个空格,因此我将默认缩进宽度设置为该空格。但是,在其他一些项目中,它变为1或4。

有没有办法让Vim根据当前文件中已经使用的样式来更改缩进样式?


为什么不在.vimrc中为特定文件类型添加此类设置?:au BufEnter *.js :set shiftwidth=2。这适用于所有项目,
SibiCoder

1
@SibiCoder:因为即使相同的文件类型在不同的项目中也可能具有不同的缩进样式。(例如:不属于同一公司的项目)
thameera '16

*.*只是一个模式。您也可以使用文件名或路径。或者,您可以对每个文件使用类似我给出的自动命令。您可以指示自动命令获取当前文件的制表符宽度,并将其用作此文件的路径。非常简单。
SibiCoder '16

Answers:


28

要添加到上述@Undo的答案中。Tim Pope也有一个插件试图在tpope / vim-sleuth上做同样的事情


5
根据我的经验,Sleuth似乎比detectindent更好,并且还将通过查看文件系统附近的其他文件来尝试为新文件确定适当的缩进设置。
jamessan 2015年

@jamessan不知道,很高兴知道。
Dhruva Sagar'2

2
请阅读我们关于插件推荐答案的政策,并添加一些有关如何正确使用推荐插件解决问题的详细信息。
200_success 2015年

15

我没有用过,但是恰兰/ detectindent可能正是您想要的。它似乎处于活动状态(最近更新是25天前),并且看起来像您想要的那样:

Vim插件,用于自动检测缩进设置。该插件添加了:DetectIndent命令,该命令尝试根据活动文件中使用的现有设置来智能地设置'shiftwidth','expandtab'和'tabstop'选项。


该插件不再处于积极开发中。(最新更新是3年前。)
Mateen Ulhaq
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.