【问题标题】:How to expand current filename without 'test' in vimscript or UltiSnips如何在 vimscript 或 UltiSnips 中扩展当前文件名而不使用“测试”
【发布时间】:2019-01-29 09:47:24
【问题描述】:

我正在编写一个 sn-p,我需要在其中获取 vimscript 中的当前文件名。我可以用expand('%:t:r') 愉快地做到这一点(如图here)。但是,我不仅想从文件名中排除“.js”,还想排除“.test”。

例如

如果在myName.test.js,我想抢'myName'

如果在myName.js,我也想抢'myName'

我这样做是为了创建一个 UltiSnips sn-p,因此其他方法(例如正则表达式)也很有用

【问题讨论】:

  • 我不知道您问题的其他部分,但这里是如何使用正则表达式 /^([^\.]++)/ 获取 . 之前的文件名,另请参阅演示在正则表达式 101 regex101.com/r/lHiwpQ/1

标签: regex vim vim-plugin ultisnips


【解决方案1】:

:t:r 是文件名修饰符。如果您关注:help filename-modifiers,还有一个漂亮的(但鲜为人知的):s?pat?sub? 修饰符可以执行替换。由于这可以与其他修饰符结合使用,因此您只需匹配锚定到文件名末尾的 .test

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

如果替换失败没有错误,因此无需将匹配设为可选(通过\?)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-30
    • 2014-09-25
    • 1970-01-01
    • 2017-01-27
    • 1970-01-01
    相关资源
    最近更新 更多