是否可以将vim与基于缓冲区的{expandtab,tabstop,shiftwidth}设置一起使用? 例如,我编辑一个使用2个空格缩进
的文件stuct A {
void foo () {
int x;
}
};
另一个带标签的文件
int main() {
int i; // \t is used as indentation
return i;
}
当然我可以通过缓冲区手动缓冲设置值,但我希望vim自动执行此操作。可以这样做吗?或者有一个插件可以帮我吗?
答案 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的用例。您可以告诉 Vim文件的正确缩进级别,而不是试图猜测正确的缩进级别。团队会将其作为源的一部分提交,然后在Vim中打开文件的每个人都将共享相同的设置。
例如,您可以设置选项卡扩展,并将制表位和移动宽度设置为两个:
/* vim: set et ts=2 sw=2: */