1

为了在未来获得一些时间,我正在尝试为 VsCode 创建一些片段。

有上下文。我有一个tmp.hpp我想要的文件

#ifndef TMP_HPP_
    #define TMP_HPP

#endif

我的问题是,我希望能够随心所欲地进行修改TMP。为此,我希望它成为默认值 Finaly,如果我决定修改TMPWHATEVER我想强制WHATEVER为大写。

更准确地说,我希望 my${1}具有默认值:${TM_FILE_BASE}并且我也希望${1}和/或 my${TM_FILE_BASE}成为${/upper}

这是我目前得到的:

"Creates a ifndef": {
    "prefix": "ifndef",
    "body": [
      "#ifndef ${${1:TM_FILENAME_BASE/(.*)/${1:/upcase}/}}_HPP_",
      "  #define ${${1:TM_FILENAME_BASE/(.*)/${1:/upcase}/}_HPP_",
      "",
      "#endif"
    ],
    "description": "Creates a basic ifndef"
}

谢谢

4

1 回答 1

4

您需要使用嵌套变量:

"Creates a ifndef": {
    "prefix": "ifndef",
    "body": [
      "#ifndef ${1:${TM_FILENAME_BASE/(.*)/${1:/upcase}/}}_HPP_",
      "  #define ${1:${TM_FILENAME_BASE/(.*)/${1:/upcase}/}}_HPP_",
      "",
      "#endif"
    ],
    "description": "Creates a basic ifndef"
}

注意${1:${TM_FILENAME_BASE/(.*)/${1:/upcase}/}}部分。这里,${1:...}是占位符的语法,其中的 thr${TM_FILENAME_BASE/(.*)/${1:/upcase}/}指定使用基于正则表达式的替换修改的变量(所有内容都匹配并捕获到第 1 组中,/(.*)/并使用大写变体替换${1:/upcase}/}(这里$1是 Group 1 个值占位符))。

于 2020-01-28T09:22:44.287 回答