我正在编写一个片段,我需要在 vimscript 中获取当前文件名。我可以很高兴地做到这一点(expand('%:t:r')
如图所示)。但是,我不仅想从文件名中排除“.js”,还想排除“.test”。
例如
如果在myName.test.js
,我想抓住 'myName'
如果在myName.js
,我也想抢 'myName'
我这样做是为了创建一个 UltiSnips 片段,因此其他方法(例如正则表达式)也很有用
我正在编写一个片段,我需要在 vimscript 中获取当前文件名。我可以很高兴地做到这一点(expand('%:t:r')
如图所示)。但是,我不仅想从文件名中排除“.js”,还想排除“.test”。
例如
如果在myName.test.js
,我想抓住 'myName'
如果在myName.js
,我也想抢 'myName'
我这样做是为了创建一个 UltiSnips 片段,因此其他方法(例如正则表达式)也很有用
:t
and:r
是文件名修饰符。如果您关注:help filename-modifiers
,还有一个漂亮的(但鲜为人知的):s?pat?sub?
修饰符可以执行替换。由于这可以与其他修饰符结合使用,您需要做的就是匹配.test
锚定到文件名的末尾:
:echo expand('%:t:r:s?\.test$??')
如果替换失败,则没有错误,因此无需将匹配设为可选(通过\?
)。