如何在vimscript或UltiSnips中扩展当前文件名而无需“测试”

时间:2019-01-25 12:45:02

标签: regex vim vim-plugin ultisnips

我正在编写一个片段,需要在其中获取vimscript中的当前文件名。我可以expand('%:t:r')(如here所示)高兴地做到这一点。但是,我不仅要从文件名中排除“ .js”,而且还要排除“ .test”。

例如

如果在myName.test.js中,我想获取“ myName”

如果在myName.js中,我还要获取“ myName”

我这样做是为了创建UltiSnips代码段,因此其他方法(例如regex)也将有用

1 个答案:

答案 0 :(得分:5)

:t:r是文件名修饰符。如果您遵循:help filename-modifiers,那么还有一个漂亮(但鲜为人知)的:s?pat?sub?修饰符可以执行替换。由于可以将其与其他修饰符结合使用,因此您所要做的就是将.test与锚定在文件名末尾的匹配:

:echo expand('%:t:r:s?\.test$??')

如果替换失败,就没有错误,因此不需要使匹配为可选(通过\?)。