:set
。我了解安全方面的顾虑,但我想知道是否没有其他解决方法。关于SO的最近一个有关设置大批参数以符合编码标准的问题使我开始思考-是否可以在rc文件中定义可以由modeline打开或关闭的一组事物? br /> 原谅伪代码,但是有一种方法可以创建一个由设置参数触发的函数吗?由诸如
set_function! codestyle()
if &1 == 'psr-2'
set ts=4
set sw=4
endfi
if &1 == 'drupal7'
set ts=2
set sw=2
iab D8 Drupal 8
endif
endset_function
这样的模型触发,这在某些方面类似于文件类型匹配,但是允许手动覆盖。它还将以其他预定义的方式设置环境,避免了使文件在vim中运行其他任意命令的安全问题,但允许使用更自定义的环境。有办法吗?#1 楼
您有几种选择。第一个:您可以编写自己的Modeline解码器,即插件。这与我对另一个问题的答案非常相似。而且,除了设置vim选项,我们不能使用标准模式行做更多的事情。
第二种可能性:可以通过回调功能利用let-modeline调用一个或另一个函数。您可以在
:set
中使用CodeStyle()
函数,也可以使用一个(自动加载?)插件,然后文件中包含:确实不希望像local_vimrc这样的插件,然后编写您自己的类似于modeline的解码器。第三种方法和IMO,在这种情况下,更好的选择是定义一个新文件类型并将
.vimrc
设置为此文件类型。在适当的情况下:'ft'
。 # vim: set ft=php.psr2
是全局通用文件类型(我不确定这一点),而php
是将与您的编码样式相对应的专用文件类型。您必须定义两个ftplugins:ftplugin / psr2.vim和ftplugin / drupal7.vim,您将在其中调用psr2
(而不是:setlocal
)。评论
支持选项3。我认为这是最语义上最合适且最适合Vim的方法。
–tommcdo
15年3月17日在14:49
评论
这将需要定义您自己的set选项; AFAIK,这在Vim中是不可能的...@Carpetsmoker这是否意味着这个问题的答案是vimscript无法包装或扩展内置函数?