【发布时间】:2020-12-05 10:44:57
【问题描述】:
我尝试在 VSCode 中创建一个 sn-p 以快速包含 C++ 标头保护。例如文件路径为C:\workspace\src\chrome\browser\ui\webui\settings\about_handler.h
sn-p 预计生成如下:
#ifndef CHROME_BROWSER_UI_WEBUI_SETTINGS_ABOUT_HANDLER_H_
#define CHROME_BROWSER_UI_WEBUI_SETTINGS_ABOUT_HANDLER_H_
#endif // CHROME_BROWSER_UI_WEBUI_SETTINGS_ABOUT_HANDLER_H_
从VScode snippet syntax guide,我尝试使用TM_FILEPATH 变量,但找不到将文件路径转换为上述宏的解决方案。我尝试了以下方法:
- 通过转换
${TM_FILEPATH/([^a-zA-Z0-9])|([a-zA-Z0-9])/${1:+_}${2:/upcase}/g}_,我可以将文件路径生成为C__WORKSPACE_SRC_CHROME_BROWSER_UI_WEBUI_SETTINGS_ABOUT_HANDLER_H_。此正则表达式会将所有非数字和非字母字符转换为_并将所有字母字符更改为大写。 - 通过转换
${TM_FILEPATH/.*src[\\\\\\/](.*)/${1:/upcase}/},我可以生成CHROME\BROWSER\UI\WEBUI\SETTINGS\ABOUT_HANDLER.H。这个正则表达式删除了从开始到src的路径,因为我当前的工作区位于src文件夹中,所以我希望我的标题宏与之相关。
问题是我无法结合这两个转换来获得我想要的宏。有什么想法可以让它发挥作用吗?
【问题讨论】:
-
@WiktorStribiżew 我之前已经对你的答案投了赞成票
-
所以,它没有用,对吧?您还需要这方面的帮助吗?
-
@WiktorStribiżew 不,您的解决方案完美无缺
标签: regex visual-studio-code vscode-snippets