我正在编写一个片段,需要在其中获取vimscript中的当前文件名。我可以expand('%:t:r')
(如here所示)高兴地做到这一点。但是,我不仅要从文件名中排除“ .js”,而且还要排除“ .test”。
例如
如果在myName.test.js
中,我想获取“ myName”
如果在myName.js
中,我还要获取“ myName”
我这样做是为了创建UltiSnips代码段,因此其他方法(例如regex)也将有用
答案 0 :(得分:5)
:t
和:r
是文件名修饰符。如果您遵循:help filename-modifiers
,那么还有一个漂亮(但鲜为人知)的:s?pat?sub?
修饰符可以执行替换。由于可以将其与其他修饰符结合使用,因此您所要做的就是将.test
与锚定在文件名末尾的匹配:
:echo expand('%:t:r:s?\.test$??')
如果替换失败,就没有错误,因此不需要使匹配为可选(通过\?
)。