我正在寻找一种可以通过vim向文本文件添加其他命令的方法。例如,就像你可以这样做:
# vim:syntax=foo
我想做点什么:
# vim:option call matchadd('Special', '\(REQUIRED\|OPTIONAL\)')
有什么想法吗?我知道我可以写一个语法文件,但这不是我现在所追求的。
答案 0 :(得分:5)
Vim模式行语法(请参阅:help modeline
)并非用于指定命令
在文件打开期间执行。这正是autocommands的用途(参见
:help autocommand
)。你要做的应该是自动命令
类似如下。
autocmd FileType foo call matchadd('Special', '\(REQUIRED\|OPTIONAL\)')
或
autocmd BufReadPost *.foo call matchadd('Special', '\(REQUIRED\|OPTIONAL\)')
(此处代替*.foo
,您可以使用与路径或文件名匹配的任何模式
(或两者)目标文件。)
如果您正在设置的配置是某些文件或项目的本地配置,
并且您不想使用那些.vimrc
污染您的autocmd
,请使用
localvimrc插件。它允许您在旁边有一个“本地”.vimrc
文件
您的目标文件或项目文件夹。存储在.lvimrc
中的脚本是
当您在“本地”.vimrc
所在的同一目录中打开文件时执行
是,或在其子目录中。上面显示的自动命令(或任何其他
配置)可以存储在项目本地的.lvimrc
文件中。对于
有关localvimrc配置的详细信息,请参阅插件的主页。
答案 1 :(得分:1)
这不是你问题的答案,但我也搜索了真理,这里的问题是最接近它的问题:
Vim: How to execute selected text as vim commands
这不是自动的,但可能只有一个按键足够接近它。 :)
答案 2 :(得分:0)
我的ModelineCommands plugin扩展了Vim的内置模式行,以在打开文件时执行任何Ex命令。一组可配置的验证器检查命令,并可以验证可选命令摘要的正确性,以防止执行来自未知来源的潜在恶意命令。 (这是Vim不提供此功能的主要原因!)这样,您可以将命令限制为仅简单的:let
,或让插件查询以确认未使用您的签名的任何内容的执行。自己的密钥。