1

这是我正在使用的当前片段

snippet req
  const ${1:} = require('$1');

正如您可能已经猜到的那样,它适用于我安装的软件包,npm但不适用于本地文件。假设我有一个文件../user.js,我想将其包含在我的 nodejs 项目中,而不是显示为

const ../user.js = require('../user.js');

我希望它像

const user = require('../user.js');

从我的假设来看,我必须以某种方式使用/获取最后一个元素来拆分文件路径,并在爆炸后再次获取第一个元素,.这将适用于全局安装和本地文件包含。问题是我是新手snipmate,还没有弄清楚如何实现这一点。非常感谢任何朝着正确方向的推动。提前感谢您帮助我。

更新

参考此处的 snipmate 文档,我发现我可以使用system标准的 unix 命令对字符串执行操作。现在我仍然坚持如何准确地通过$1系统。这是我拥有的更新代码

snippet req
  const `system('echo $1')` = require('${1:}'); 
4

2 回答 2

3

原始的 snipMate 无法操作镜像制表位;不过,我认为UltiSnips允许这样做。(`...`插值仅在片段扩展期间执行;您不能传入$1它。)

如果不想切换,可以将包含文件的定义拆分成路径和模块名,只将后者镜像到变量名中:

snippet req
    const $2 = require('${1:path/}${2:module}');
于 2017-01-24T16:12:23.780 回答
1

我没有你的代码片段设置,但现在你可以将它发送到 bash,我假设你可以通过管道grep提取你想要的部分值。如果您放入类似的东西,../models/user.js则应该将其user.js拉出。

snippet req
  const `system('echo $1 | grep -Po "(?<=/)[^/]*$"')` = require('${1:}');
于 2017-01-24T16:09:31.610 回答