【发布时间】:2016-07-31 19:39:43
【问题描述】:
我正在使用出色的 UltiSnips Vim plugin 来帮助改进我的开发工作流程。我已经使用它好几年了,它确实帮助我在编码时自动化了很多多余的输入。
无论如何:我正在尝试定义一个帮助我生成 Javascript 要求语句的 sn-p。
一个普通的 Javascript require 语句看起来像这样:
let express = require('express');
所以,这是我定义的 sn-p:
snippet req "require a module" b
let ${1} = require('${2}');
endsnippet
这让我可以在 Vim 中输入 req,然后将光标移动到 sn-p 中的 ${1} 位置,以便我可以定义变量名。一旦我第二次点击,我的光标将移动到sn-p中${2}的位置,这样我就可以定义要导入的实际Javascript模块名称。
这很好用,但我想做的是更进一步。我想做一个这样的 sn-p:
当我输入${1} 的值时,${2} 的值默认更新为${1} 的值。这样,在某些情况下,我可以省去两次键入相同模块名称的麻烦。
这个想法是我应该能够做这样的事情:
snippet req "require a module" b
let ${1} = require('${2:${1}}');
endsnippet
这样,如果我输入:
req<tab>express
我应该得到以下扩展行:
let express = require('express');
但是,它也应该在这种情况下工作:
req<tab>exp<tab>express
哪个会输出:
let exp = require('express');
这有意义吗?
无论如何:任何帮助将不胜感激!上面的代码示例不像我想象的那样工作。 ${2:${1}} 位被忽略并且无法按预期工作(它不会将 ${2} 的占位符值设置为 ${1})。
【问题讨论】:
标签: javascript vim ultisnips