Emacs 什么';告诉VI读/写带有软制表符和指定缩进的源文件的语法是什么?
我在某处看到一段代码,告诉vi使用软标签并设置标签的大小。如果您将此代码段放在源文件的底部,那么vi将神奇地为该文件使用这些设置Emacs 什么';告诉VI读/写带有软制表符和指定缩进的源文件的语法是什么?,emacs,vim,vi,Emacs,Vim,Vi,我在某处看到一段代码,告诉vi使用软标签并设置标签的大小。如果您将此代码段放在源文件的底部,那么vi将神奇地为该文件使用这些设置 在源文件中包含该代码段的语法和规则是什么?emacs也可以使用这些设置吗?据我所知,vi没有这种功能。你很可能想到了维姆。emacs中也有类似的功能,您可以将其放入文件中 请注意,至少在Vim中,Modeline有过漏洞历史。这主要是因为有问题的选项被专门列入黑名单,而不是只允许在modelines中设置特定的变量子集。我建议使用一个插件,比如 将它放在C++源文件中
在源文件中包含该代码段的语法和规则是什么?emacs也可以使用这些设置吗?据我所知,vi没有这种功能。你很可能想到了维姆。emacs中也有类似的功能,您可以将其放入文件中
请注意,至少在Vim中,Modeline有过漏洞历史。这主要是因为有问题的选项被专门列入黑名单,而不是只允许在modelines中设置特定的变量子集。我建议使用一个插件,比如 将它放在C++源文件中:
// vim: set ft=cpp
ex: set softtabstop=4 shiftwidth=4 tabstop=4 expandtab:
查找字符串“
vim:
”,然后执行以下操作。注意:如果您不信任正在打开的文件,这可能会打开潜在的漏洞,因此在启用此功能之前请三思。请查看:h modeline
例如:
/* vim: ai set sw=4 ts=4 */
请参阅
:h modeline
,了解Vim将检查文件中modeline信息的行数。默认设置是检查前5行。您可以将其放入源文件的注释中:
// vim: set ft=cpp
ex: set softtabstop=4 shiftwidth=4 tabstop=4 expandtab:
注释语法取决于源文件的类型
对于C/C++/Java,这将是:
// ex: set softtabstop=4 shiftwidth=4 tabstop=4 expandtab:
<%-- ex: set softtabstop=4 shiftwidth=4 tabstop=4 expandtab: --%>
对于JSP,这将是:
// ex: set softtabstop=4 shiftwidth=4 tabstop=4 expandtab:
<%-- ex: set softtabstop=4 shiftwidth=4 tabstop=4 expandtab: --%>
如果将它放在源文件的开头,它就可以工作,但是如果将它放在源文件的末尾,我不确定它是否也可以工作
这对emacs不起作用。对于emacs,可能有一种不同的方法来实现同样的效果。好的,首先,在RealVI中,您可以在.exrc文件中实现这一点
第二,使用
set autoindent tabstop=8 shiftwidth=4
因为否则vi将插入它认为只有4个字符宽的标签。生成的文本文件在任何其他编辑器中看起来都没有意义。“modelines”是要在文件开头和结尾检查的行数。您错过了我最喜欢的“et”。让战争开始吧!将
集合
放在选项列表的开头是否更为传统?ex
是一种不太常见(尽管完全有效)的modeline前缀。更常见的是vim
<代码>vi也可以工作。请注意,前面必须有一个空白字符,因此这里的第一个示例实际上不起作用,但第二个示例起作用。(当然,vim本身并不关心注释语法。)基于下面答案的一些实验表明,它不仅仅是添加行。一个问题是,您需要:设置modeline modelines=5
,以使Vim最多扫描5行modeline符号。另一个问题是,即使设置了这些选项,vim
在编辑C文件时也不一定接受modeline控件,即使在编辑“非类型化”文件时完全相同的modeline工作正常(我使用junk
作为非类型化文件,使用qs07int.C
作为C文件)。我不确定是什么覆盖了modeline。