我有一个名为.aliases
bash和zsh 的文件,我把这一行
# vim: set filetype=bash:
但是如果我做
: echo &ft
我懂了 conf
我有一个名为.aliases
bash和zsh 的文件,我把这一行
# vim: set filetype=bash:
但是如果我做
: echo &ft
我懂了 conf
Answers:
那应该工作。我自己尝试了这条线,并且行得通。我可能是您的“ modeline”选项设置为“ nomodeline”。尝试执行此操作,看看会得到什么。
:verbose set modeline?
这将告诉您“ modeline”选项的值,如果不是默认值,则为最后设置的位置。
一些Linux发行版在/ etc / vimrc或/ usr / share / vim / vimrc中将'nomodeline'设置为安全措施,即使'modeline'的安全问题早已得到解决。
modelines
该选项未实现,并且永远不会实现。就像所有安全漏洞一样,这些安全漏洞源于文件嵌入式命令或宏指令,它们可以在PDF,Word,Excel和&c&c&c中运行。
我真的就这一个难倒,因为文件是不完全正确的。
事实证明,在版本8(甚至更早版本)中,您不能set
在modeline中使用该词。该文档将“第二种形式”描述为是,/* vim: set ai tw=75: */
但这不起作用。您必须使用“第一种形式”// vim: ai tw=75
注意:您可以使用任何一种注释指示符。或根本没有。
set
对我来说在vim 8.0上很好用(尽管在7.4上不是)。同样值得注意的是,使用第二种形式// vim: ai tw=75
时,该行的末尾不能有任何其他字符,否则vim会抱怨并忽略modeline。
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Nov 24 2016 16:44:48) Inklusive der Korrekturen: 1-1689 Extra-Patches: 8.0.0056 Verändert von pkg-vim-maintainers@lists.alioth.debian.org Übersetzt von pkg-vim-maintainers@lists.alioth.debian.org Riesige Version mit GTK2-GNOME GUI.
(最后几行的意思是通过修改......,通过......编译,巨大的版本...)。
set modelines=1
(或任何非0值)在我的〜/ .vimrc中为我工作。
modeline
未设置,则没有任何效果(除非您是root用户,否则在Vim中是默认设置)
set nomodeline
内/etc/vimrc
都有在Vim中进行模式行处理。
modelines
为非零值。帮助说默认值是5
,所以这就是我设置的值,这对我有用。该指出,If 'modeline' is on 'modelines' gives the number of lines that is checked for set commands. If 'modeline' is off or 'modelines' is zero no lines are checked.
在〜/ .vimrc中,您需要设置以下内容:
set nocompatible
filetype plugin on
set modeline
由于这似乎出现在搜索中:
我有同样的问题:
# vim: set filetype=sh:
不起作用,也导致ft = conf。在我的〜/ .bash_alias中没有modeline的情况下,ft为空,因此发生了某些变化。
而
# vim: filetype=sh:
工作了。最后一个“:”的出现似乎无关紧要。
我正在OSX上使用Vim8酿造的版本,以供记录。
这很奇怪,因为在Modeline的帮助下
[text]{white}{vi:|vim:|ex:}[white]{options}
和
[text]{white}{vi:|vim:|Vim:|ex:}[white]se[t] {options}:[text]
似乎受到支持。
输出
verbose set ft?
“ vim:filetype = sh”是
filetype=sh
Last set from modeline
没有Modeline:
filetype=
用“ vim:set filetype = sh”
filetype=conf
Last set from /usr/local/Cellar/vim/8.0.1350/share/vim/vim80/filetype.vim
我的conf中可能有副作用,但是不兼容的modeline语法是唯一对我有用的语法。
很有可能是由于modeline被禁用。
我通过以下方法解决此问题:
在这种情况下,默认列入白名单的命令包括filetype
。