在 vim 中使用 UltiSnips 自定义自动完成

Custom auto-complete with UltiSnips in vim

我想使用 Vim 的 complete() 函数创建在每个制表位进行自定义完成的片段。这是我想要实现的一个简单示例。

snippet date "Date snippet"
   day of month: ${1:`!v complete(col('.'), [1, 2, 3, 4])`}
   month: ${2:`!v complete(col('.'), ['Jan', 'Feb', 'March'])`}
   year: ${3:`!v complete(col('.'), ['2012', '2013', '2014', '2015'])`}
endsnippet

在第一个制表位,我想看到 Vim 的自动完成菜单,其中包含 [1, 2, 3, 4] 个项目。与其他制表位类似。但是,当我实际上 运行 这个片段时,我得到以下输出

day of month: Jan0an0
month: 201200120
year:100

可能还有其他方法可以实现自动完成,如截屏所示 Episode 4: Python Interpolation。但是,我很想看到 Vim 在 UltiSnips 中自动完成。

请任何人就如何实现这一目标提出建议。

不幸的是,由于 Vim 的设计,这在今天的香草 Vim+UltiSnips 中无法实现。一旦 neovim 修复了交互问题,它可能是可行的。

https://github.com/SirVer/ultisnips/issues/428