开发者

Vim In-File Commands

I'm after a m开发者_如何学运维eans by which I can add additional commands to a text file via vim. For example, just as you can do something like this:

# vim:syntax=foo

I'd like to do something like:

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

Any ideas? I know I can write a syntax file, but this is not what I'm after for now.


Vim modeline syntax (see :help modeline) is not intended to specify commands to execute during file opening. That is exactly what autocommands is for (see :help autocommand). What you are trying to do should be an autocommand similar the following.

autocmd FileType foo call matchadd('Special', '\(REQUIRED\|OPTIONAL\)')

or

autocmd BufReadPost *.foo call matchadd('Special', '\(REQUIRED\|OPTIONAL\)')

(Here instead of *.foo you can use any pattern that matches path or filename (or both) of the target file.)

If the configuration you are setting up is local to some files or a project, and you don't want to pollute your .vimrc with those autocmds, use localvimrc plugin. It allows you to have a "local" .vimrc file next to your target file or project folder. Script stored in that .lvimrc is executed when you open files in the same directory where the "local" .vimrc is, or in its subdirectories. Autocommands shown above (or any other configurations) can be stored in a .lvimrc file local the project. For details about localvimrc configuration see the homepage of the plugin.


This isn't an answer to your question, but I have also searched for Truth, and this question here is the closest one to it:

Vim: How to execute selected text as vim commands

It isn't automatic, but potentially only one keypress away it's close enough. :)


My ModelineCommands plugin extends Vim's built-in modelines to execute any Ex command(s) when a file is opened. A set of configurable validators examine the commands and can verify the correctness of an optional command digest, in order to prevent the execution of potentially malicious commands from unknown sources. (That's the main reason why Vim doesn't offer this feature!) This way, you could restrict the commands to only simple :let, or have the plugin query you to confirm execution of anything that isn't signed with your own secret key.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜