我已经尝试了一天来使代码片段与正则表达式一起工作,但是我似乎无法将这种想法包扎起来。
用例正在编写LaTeX,特别是带有自动标签的部分。标签方面存在一些问题,因为LaTeX不允许标签中使用某些丹麦字符。因此,我希望代码片段能够处理替换本身以及其他一些格式。这意味着我想要以下内容:
最后,我想突出显示“已转换”的文本,因此如果需要,可以将其更改为其他内容(如果标签重复)。
摘要如下所示:
\section{$1} \label{sec:${2:$1(after regex)}
完全没有任何希望的希望
转换将执行以下操作
Ørneog Mus! -> oerne_og_mus
这可以在Textmate中使用以下代码段进行
\section{${1:section name}}
\label{sec:${2:${1/(\w+)(\W+$)?|\W+/${1:?${1:/asciify/downcase}:_}/g}}}
但是这与VS代码不兼容。可以以某种方式更改它以使其与VS代码一起使用吗?
我真的不认为您可以在一个正则表达式中做到这一点。这意味着正常的代码段将不起作用。宏可以根据需要运行任意数量的代码段转换。
使用宏扩展名multi-command将其放入您的settings.json:
"multiCommand.commands": [
{
"command": "multiCommand.latexLabelTransform",
"sequence": [
"cursorHomeSelect",
"editor.action.clipboardCopyAction",
{
"command": "editor.action.insertSnippet",
"args": {
"snippet": "${TM_SELECTED_TEXT/(æ)|(ø)|(å)/${1:+ae}${2:+oe}${3:+aa}/gi}"
}
},
"cursorHomeSelect",
{
"command": "editor.action.insertSnippet",
"args": {
"snippet": "${TM_SELECTED_TEXT/(.*)/${1:/downcase}/}"
}
},
"cursorHomeSelect",
{
"command": "editor.action.insertSnippet",
"args": {
"snippet": "${TM_SELECTED_TEXT/[^a-z0-9 ]//g}"
}
},
"cursorHomeSelect",
{
"command": "editor.action.insertSnippet",
"args": {
"snippet": "\\section {$CLIPBOARD} \\label{sec:${2:${TM_SELECTED_TEXT/\\s/_/g}}}"
}
}
]
}
]
以及一些绑定:
{
"key": "alt+d",
"command": "extension.multiCommand.execute",
"args": { "command": "multiCommand.latexLabelTransform" },
"editorLangId == latex" // assuming this is correct
},
[如果以文本开头,例如Ørne og Mus!
,请参见以下演示:
如演示中所示,已选择转换的部分。在触发宏之前,在文本结尾处使用光标。如果需要,我可能也可以使它以\section {yourTextHere}
开头。
我试图让它作为常规代码片段使用,但它似乎并不是一种在单个转换中获得想要完成的多重转换的方法。
让我知道这是否适合您。
好,所以我可能最终找到了一个可以作为摘要使用的解决方案
"\\section{$1}",
"\\label{sec:${2:${1/(æ)|(ø)|(å)|(é)|( +)|[^A-Za-z0-9]/${1:+ae}${2:+oe}${3:+aa}${4:+e}${5:+_}/g}}}",
仅发现了几个问题。
任何人都知道如何进行更改?或者,我甚至可以在哪里找到此类正则表达式的良好资源(我一直找不到))