VSCode 在片段中链接正则表达式转换
VSCode chaining regex transforms in a snippet
我正在尝试以两种方式在 VSCode 中自动转换文件名。
假设我有 test-file-name.md
,我想在我的文档中以 Test File Name
结尾。
现在我可以分别进行转换的两个部分,但我正在努力寻找如何组合它们。
- 要删除所有
-
并用 space 替换它们,我这样做:${TM_FILENAME_BASE/[-]/ /g}
- 为了将每个单词的首字母大写,我这样做:
${TM_FILENAME_BASE/(\b[a-z])/${1:/upcase}/g}
(我猜 \b
在这种情况下可能没用)
我已经尝试了多种将它们写在一起的方法,但我找不到一个接一个地写它们的方法。
试试这个:
"body": "${TM_FILENAME_BASE/([^-]+)(-*)/${1:/capitalize}${2:+ }/g}"
由于 g
标志,它将获取所有事件并多次对两个捕获组进行每次转换。在您的测试用例 (test-)(file-)(name)
中,那将是三倍。它应该适用于任意数量的带连字符的单词。
([^-]+)
连字符之前的所有内容。
${1:/capitalize}
将捕获组 1 大写。
${2:+ }
表示如果有第二个捕获组,(-*)
,添加一个space。我添加这个是因为末尾没有连字符 - 因此不会有第二个捕获组,因此末尾不应添加额外的 space。
我正在尝试以两种方式在 VSCode 中自动转换文件名。
假设我有 test-file-name.md
,我想在我的文档中以 Test File Name
结尾。
现在我可以分别进行转换的两个部分,但我正在努力寻找如何组合它们。
- 要删除所有
-
并用 space 替换它们,我这样做:${TM_FILENAME_BASE/[-]/ /g}
- 为了将每个单词的首字母大写,我这样做:
${TM_FILENAME_BASE/(\b[a-z])/${1:/upcase}/g}
(我猜\b
在这种情况下可能没用)
我已经尝试了多种将它们写在一起的方法,但我找不到一个接一个地写它们的方法。
试试这个:
"body": "${TM_FILENAME_BASE/([^-]+)(-*)/${1:/capitalize}${2:+ }/g}"
由于 g
标志,它将获取所有事件并多次对两个捕获组进行每次转换。在您的测试用例 (test-)(file-)(name)
中,那将是三倍。它应该适用于任意数量的带连字符的单词。
([^-]+)
连字符之前的所有内容。
${1:/capitalize}
将捕获组 1 大写。
${2:+ }
表示如果有第二个捕获组,(-*)
,添加一个space。我添加这个是因为末尾没有连字符 - 因此不会有第二个捕获组,因此末尾不应添加额外的 space。