我正在使用出色的UltiSnips Vim 插件来帮助改进我的开发工作流程。我已经使用它好几年了,它确实帮助我在编码时自动化了很多多余的输入。
无论如何:我正在尝试定义一个片段来帮助我生成 Javascript 要求语句。
一个普通的 Javascript require 语句看起来像这样:
let express = require('express');
所以,这是我定义的片段:
snippet req "require a module" b
let ${1} = require('${2}');
endsnippet
这让我可以输入req
Vim,然后它将光标移动到${1}
片段中的位置,以便我可以定义变量名称。一旦我第二次点击,我的光标将移动到${2}
片段中的位置,这样我就可以定义要导入的实际 Javascript 模块名称。
这很好用,但我想做的是更进一步。我想制作一个这样的片段:
当我为 输入一个值时${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}
to${1}
)。