告诉VI读取/写入带有软选项卡和指定缩进的源文件的语法是什么?

时间:2009-11-02 18:12:42

标签: emacs vim vi

某个地方我看到一段代码告诉vi使用软标签并设置标签的大小。如果您将此代码段放在源文件的底部,那么vi会神奇地使用该文件的那些设置。

在源文件中包含该代码段的语法和规则是什么?是否可以使用emacs来使用这些设置?

5 个答案:

答案 0 :(得分:3)

结帐:h modeline

示例:

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

请参阅:h modelines了解文件中有多少行,Vim会检查模式行信息。默认是检查前5行。

答案 1 :(得分:3)

您可以将其放在源文件的注释中:

ex: set softtabstop=4 shiftwidth=4 tabstop=4 expandtab: 

注释语法取决于源文件的类型。

对于C / C ++ / Java,这将是:

// ex: set softtabstop=4 shiftwidth=4 tabstop=4 expandtab: 

对于JSP,这将是:

<%-- ex: set softtabstop=4 shiftwidth=4 tabstop=4 expandtab: --%>

如果将它放在源文件的开头,这是有效的,但我不确定如果将它放在它的末尾也能正常工作。

这不适用于emacs。对于emacs,可能有不同的实现方法。

答案 2 :(得分:1)

据我所知,vi没有这种能力。你可能会想到Vim的modeline feature。 emacs中有类似的功能,您可以将local variables放在文件中。

请注意,至少在Vim中,modelines有漏洞的历史。这主要是由于有问题的选项被特别列入黑名单,而不是仅允许在模型中设置某个变量子集。我建议使用像securemodelines这样的插件。

答案 3 :(得分:1)

将它放在C ++源文件中:

// vim: set ft=cpp

modeline feature查找字符串“vim:”,然后执行以下操作。注意:如果您不信任正在打开的文件,这可能会打开潜在的漏洞利用,因此在启用此功能之前请三思而后行。

答案 4 :(得分:0)

好的,首先,在 real vi中,您可以在.exrc文件中执行此操作。

其次,使用

set autoindent tabstop=8 shiftwidth=4

因为否则vi会插入它认为只有4个字符宽的标签。生成的文本文件在任何其他编辑器中看起来都不合适。