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

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

评论

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

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

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

#1 楼

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

评论


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

–詹姆斯
15年2月3日在17:45

@jamessan不知道,很高兴知道。

–德鲁瓦·萨加尔(Dhruva Sagar)
2015年2月3日在17:47

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

– 200_success
2015年2月6日在22:17

#2 楼

我没有用过,但是恰兰/ detectindent可能正是您想要的。它似乎处于活动状态(最新更新时间为25天),看起来像您想要的操作:


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


评论


该插件不再处于积极开发中。 (最新更新是3年前。)

–玛蒂·乌尔哈克(Mateen Ulhaq)
17/09/21在5:33



活动叉:github.com/roryokane/detectindent

–汤姆·黑尔
20年9月3日,9:23