我刚开始使用VIM的sniptMate插件,非常喜欢它,但是由于我的代码片段集合还不够丰富,我希望能够动态地添加新的代码片段,而不是在开发过程中打开代码片段文件并创建一个新的代码片段。
当我编写代码时,我意识到某个特定的代码块可以保存为代码片段,以免再次输入冗长的代码,此时我希望能够在不打开正在使用的语言的代码片段文件的情况下添加一个新的代码片段。
如果你正在使用pathogen,你可以编写自己的代码片段而不会影响原来的代码片段。要实现这一点,将你的代码片段添加到~/.vim/bundle/mysnippets/snippets/*.snippets
中。顺带一提,mysnippets
可以是任何名称。
此外,惯例是在你添加代码片段的目录中添加一个_.snippets
文件,其中包含应该在所有文件类型中都可用的代码片段。
我不确定这样做是否正确,但你可以尝试在当前工作的文件中调用MakeSnip
函数。例如:
:call MakeSnip(&ft, "foo", "<foo>${1}</foo>")
&ft
会传递您当前编辑的文件类型,"foo"
是触发器,"<foo>${1}</foo>"
是替换文本。
当然,像这样创建的片段不会持久保存。那么为什么不在另一个缓冲区中打开片段文件,在那里定义必要的新片段,然后执行:
:call ReloadSnippets(&ft)
您的新代码片段将可用。您甚至可以定义一个自动命令来调用 ReloadSnippets
函数,以便在编写代码片段文件时自动刷新。
您可以将自己的代码片段放在~/.vim/after/snippets/
或Windows上等效的目录下...请参阅:h snipMate
以获取文件名语法。
只需将您自己的代码片段放在此处(假设您希望在编辑的所有文件中使用它们):
~/.vim/after/snippets/_.snippets
例如:
snippet test
{"foo": "${1}", "bar": "${2}"}
vim-snipMate & vim-snippets
$HOME/vimfiles/bundle/vim-snippets/snippets/
创建一个新文件并以此格式命名:
html_bsmith.snippets
(在html后必须加下划线,参见:help snipmate)
然后vim会自动加载您的文件。
如果您的自定义可以在任何地方使用,只需将其放入现有文件中:
_.snippets