如何创建自定义的vim代码片段?

12

我想在编写C++代码时创建一些片段。
例如:
创建一个名为cpp.snippets的文件。

priority -1
snippet exam
This is an example!
endsnippet

将其放入到 ~/.vim/my-snippets/snippets/ 中。
然后,在 ~/.vimrc 中添加以下语句:

set runtimepath+=~/.vim/my-snippets/
let g:UltiSnipsSnippetsDir='~/.vim/my-snippets/'
let g:UltiSnipsSnippetDirectories=["snippets"]

但它不起作用,我该怎么修复它?


让我们从头开始:你有UltiSnips吗?它能用吗? - romainl
是的,我有UltiSnips,并且它工作正常。 - Kai7
3个回答

16

UltiSnips插件包含详细的文档。您是否阅读了以下帮助页面?

:help UltiSnips-snippet-search-path

更新:

当我阅读帮助文档时,显而易见的是,在UltiSnips中不能在g:UltiSnipsSnippetDirectories中使用名称“snippets”,因为它为snipMate兼容的代码片段保留了该名称。但评论下面分享的链接没有出现这种情况,那里使用了名称“my-snippets”。

我不使用UltiSnips,但从文档中我建议采用以下方法:

  1. 不要设置g:UltiSnipsSnippetsDirg:UltiSnipsSnippetDirectories
  2. 保留runtimepath+=配置。
  3. 创建以下目录:~/.vim/my-snippets/UltiSnips
  4. 将个人片段放置在这个新目录下。

原因:

  • 默认情况下,UltiSnips搜索您运行时路径下的所有UltiSnips目录,因此如果使用该名称,则无需配置。
  • 尽管需要runtime设置以便使用个人片段,但如果使用插件管理器,则会自动维护此配置。
  • 最后一点允许安装包含片段的vim插件。例如,此插件包含各种snipMate和UltiSnips的片段,包括C++。

是的,我有。但是,也许我误解了它的意思。 无论如何,我参考了这个网站 https://www.physik.uni-leipzig.de/~marenz/index.cgi/blog/ ,并解决了我的问题。 感谢你的回答。 - Kai7
@Kai7 我更新了我的答案,因为从你的评论中并不明显你是否理解了原始配置中的问题。我还提供了一种替代且更简单的方法来解决你的问题。希望能有所帮助。 - Vitor

14
如果您正在使用 sirver/ultisnips 插件 (UltiSnips),正确的做法就是运行 :UltiSnipsEdit 命令,它会打开当前语言/文件类型的自定义片段文件。

谢谢!这是最明智的答案。 - xrisk

1
我曾经遇到过这个问题。以下是一个答案,供那些不想头疼的人未来参考。
我有一个共享的`.vimrc`文件在Samba共享上。Windows gViM和ViM都使用此文件。
Windows相关部分的.vimrc
我在`L:`下挂载了一个Samba共享。请注意,尽管是Windows的路径,但实际上我必须使用POSIX路径,而不是Windows反斜杠`\`。
if has('win32') || has('win64') "If gVim under Windows"
    let g:UltiSnipsSnippetDirectories=["L:/.vim/custom_snippets"]
endif

Unix下.vimrc的相关部分

我的终端打开xterm-256color以获得更多颜色,但你可以将其替换为xterm。这里路径可以正确地展开~,因为这是我的真实家目录,也是``.vim`所在的位置。

if $TERM == "xterm-256color"
  let g:UltiSnipsSnippetDirectories=["~/.vim/custom_snippets"]
endif

定制代码片段的最后一步

您不需要进行任何更改!以下更改不是必要的:

"let g:UltiSnipsSnippetDirectories=["custom_snippets"]
"let g:UltiSnipsSnippetsDir="~/.vim/snippets_custom/"

然而,尽管所有路径都正常工作,Putty似乎不能正确传递Tab键或控制键我在文件类型环境中使用:UltiSnipsEdit测试了这些路径,如set ft=tex所示,它将我带到了~/.vim/snippets_custom/tex.snippets(无论是在Windows上的gvim还是从我的unix控制台中)。 也许有用的是启用Putty中的以下内容:

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接