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

时间:2015-08-22 13:45:37

标签: vim plugins code-snippets

我想在编写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"]

但它不起作用,我该如何解决?

3 个答案:

答案 0 :(得分:12)

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

:help UltiSnips-snippet-search-path

<强>更新

当我阅读帮助部分时,其中一个显而易见的事情是,在UltiSnips中,名称“snippets”无法在g:UltiSnipsSnippetDirectories中使用,因为它是为snipMate兼容的代码段保留的。这不会发生在下面评论中共享的链接中,而是使用名称“my-snippets”。

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

  1. 请勿设置g:UltiSnipsSnippetsDirg:UltiSnipsSnippetDirectories
  2. 保留runtimepath+=配置。
  3. 创建以下目录:~/.vim/my-snippets/UltiSnips
  4. 将个人代码段放在此新目录下。
  5. 推理:

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

答案 1 :(得分:0)

我对此非常悲痛。对于那些不想遭受头痛的人,这里有一个答案供将来参考。

我在samba共享上提供了共享.vimrc Windows gViM和ViM都使用此文件。

.vimrc for Windows的相关部分

我在L:下安装了一个samba共享。请注意,我实际上必须使用POSIX作为路径,而不是Windows反斜杠\,尽管它是 Windows的路径。

if has('win32') || has('win64') "If gVim under Windows"
    let g:UltiSnipsSnippetDirectories=["L:/.vim/custom_snippets"]
endif

.vimrc for Unix的相关部分

我的终端会打开xterm-256color以获取更多颜色,但您可以与xterm进行交换。这里的路径可以正确扩展~,因为这是我的``.vim`所在的真实主目录。

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

完成加载custom_snippets的接触

你不需要任何!以下更改 NOT 必要:

"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 console)。

在Putty中启用可能很有用

答案 2 :(得分:0)

如果您使用的是def __str__(self): return str(self.get_user)插件(UltiSnips),则只需执行sirver/ultisnips命令即可​​打开当前语言/文件类型的自定义摘录文件。