如何设置vim以具有与打开的文件相同的选项卡和空间约定?

时间:2014-07-29 18:14:04

标签: vim

是否可以将vim与基于缓冲区的{expandtab,tabstop,shiftwidth}设置一起使用? 例如,我编辑一个使用2个空格缩进

的文件
stuct A {
  void foo () {
    int x;
  }
};

另一个带标签的文件

int main() {
    int i; // \t is used as indentation
    return i;
}

当然我可以通过缓冲区手动缓冲设置值,但我希望vim自动执行此操作。可以这样做吗?或者有一个插件可以帮我吗?

4 个答案:

答案 0 :(得分:4)

使用vim-sleuth自动检测要打开的文件中的选项卡约定。

答案 1 :(得分:1)

您可以在文件中嵌入vim命令。例如:

/* vim: set noai ts=4 sw=4: */

当您打开该文件时,将执行这些命令。您可以在http://vim.wikia.com/wiki/Modeline_magic了解有关该主题的更多信息。

答案 2 :(得分:1)

上述 vim-sleuth 的替代方案是IndentConsistencyCop plugin,与IndentConsistencyCopAutoCmds plugin结合使用。 (插件页面包含更多替代插件的链接。)

答案 3 :(得分:0)

使用Modelines

您刚刚描述了modelines的用例。您可以告诉 Vim文件的正确缩进级别,而不是试图猜测正确的缩进级别。团队会将其作为源的一部分提交,然后在Vim中打开文件的每个人都将共享相同的设置。

例如,您可以设置选项卡扩展,并将制表位和移动宽度设置为两个:

/* vim: set et ts=2 sw=2: */