Vim文件内命令

时间:2011-06-16 00:57:40

标签: vim

我正在寻找一种可以通过vim向文本文件添加其他命令的方法。例如,就像你可以这样做:

# vim:syntax=foo

我想做点什么:

# vim:option call matchadd('Special', '\(REQUIRED\|OPTIONAL\)')

有什么想法吗?我知道我可以写一个语法文件,但这不是我现在所追求的。

3 个答案:

答案 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,或让插件查询以确认未使用您的签名的任何内容的执行。自己的密钥。