Arduino 是否可以在snipmate中包含文件的片段

Arduino 是否可以在snipmate中包含文件的片段,arduino,vim,Arduino,Vim,我正在使用这些插件 我目前正在为Arduino创建一个代码段文件。我意识到c语言的所有代码片段也适用于Arduino 我不只是复制粘贴它们,而是考虑包含整个c文件,然后只添加特定于Arduino的部分 因此,我的问题是,是否可以将其他文件中的代码片段包含到您的代码片段文件中?否。您需要将这些代码片段拉/粘贴到您的arduino.snippets文件中。(在搜索snipmate插件的文档后,我找到了这个问题的答案) 我不能在另一个代码段文件中包含一个代码段文件,但对于某个文件类型,我可以包含多个代

我正在使用这些插件

我目前正在为Arduino创建一个代码段文件。我意识到c语言的所有代码片段也适用于Arduino

我不只是复制粘贴它们,而是考虑包含整个c文件,然后只添加特定于Arduino的部分


因此,我的问题是,是否可以将其他文件中的代码片段包含到您的代码片段文件中?

否。您需要将这些代码片段拉/粘贴到您的arduino.snippets文件中。

(在搜索snipmate插件的文档后,我找到了这个问题的答案)

我不能在另一个代码段文件中包含一个代码段文件,但对于某个文件类型,我可以包含多个代码段。我已经在我的.vimrc中声明了以下内容,并且它现在可以工作了

" Add c snippets to Arduino
let g:snipMate = {}
let g:snipMate.scope_aliases = {} 
let g:snipMate.scope_aliases['arduino'] = 'arduino,c'

我正在使用我创建的这个工具。

@Sudar:您的方法很好,但若您稍后有另一个配置或lang,那个么就并没有必要了,您的vimrc将会膨胀


只需在snipmate中创建
arduino.snippets
,然后
:设置ft=c.arduino
。Snipmate根据其文件类型识别代码片段,您特别询问了Snipmate,因此这可能有点不恰当,但无论如何:还有一个名为UltiSnips的插件,它与Snipmate非常相似(具有一些附加功能)。在UltiSnips的代码段文件中,您可以使用extends语句,该语句完全满足您的要求。

将以下内容添加到
$VIMRUNTIME/after/plugin/snipMate.vim
文件中:

call ExtractSnipsFile(g:snippets_dir.'arduino.snippets', 'c')
这将解析并初始化
.c
文件类型的
arduino.snippets
文件

基本上,它只是从该文件中加载代码片段,并将它们添加到指定的文件类型,在您的例子中是
c
文件

有关使用
ExtractSnipsFile
的帮助,请参阅
:help ExtractSnipsFile

编辑2018.03.14

可以使用
UltiSnipsAddFiletypes
为同一文件类型加载多个代码段文件。 例如,如果您想在编辑
.arduino
文件时加载
.c
代码段,只需将以下行添加到
ftplugins/arduino.vim

UltiSnipsAddFiletypes arduino.c

我没有使用过UtiSnips,但我对snipmate非常满意,因此可以继续使用。我在文档中也看到了这一点。但问题是,我已经有了两个用于“arduino”文件类型的其他autocmd。将其更改为“c.arduino”也会影响他们。此文件是vim snipmate的一部分,还是我必须创建一个单独的文件,仅此行?另外,如果你能解释一下这是如何工作的,那也会很有帮助。我正在使用的是一个叉子
ExtractSnipsFile
似乎仅在snipmate.vim中可用,而在vim snipmateDisregard中不可用。那么,您的答案可能是最好的选择,并且在不编辑任何插件文件的情况下配置插件。