VS 代码片段将变量解释为字符串
VS Code snippet interprets variable as string
我正在使用变量转换在 VS Code 中编写一个片段。我想用插入不带扩展名的文件名的变量(例如:CurrentFileNameWithoutExtensions)替换某些文本(在本例中是复制到剪贴板上的文本)中出现的模式。发生的是模式被替换为字符串形式的变量名称,而不是变量的值。
这是片段:
"${CLIPBOARD/pattern/$TM_FILENAME_BASE/}"
输出为:“pattern”变为“$TM_FILENAME_BASE”。
正确的输出是:“pattern”变为“CurrentFileNameWithoutExtensions”。
一个可能的解决方案是输出模式之前的所有剪贴板文本,然后输出变量,最后输出模式之后的所有剪贴板文本。这将如何完成?
示例剪贴板文本:
Text that is before pattern in clipboard.
pattern
Text that is after pattern in clipboard.
代码片段可以捕获所有文本直到模式并输出:
Text that is before pattern in clipboard.
然后输出变量$TM_FILENAME_BASE
:
CurrentFileNameWithoutExtensions
最后它会输出模式后的文本:
Text that is after pattern in clipboard.
输出看起来像这样放在一起:
Text that is before pattern in clipboard.
CurrentFileNameWithoutExtensions
Text that is after pattern in clipboard.
分组捕捉不同部分,只输出你想要的分组
如果 pattern
不属于剪贴板
,它也有效
"${CLIPBOARD/^((.*?)(pattern.*)|(.*))$//}$TM_FILENAME_BASE${CLIPBOARD/^((.*?pattern)(.*)|(.*))$//}"
如果总是有一个匹配的模式,那么这行得通:
"pattern": {
"prefix": "_pt",
"body": [
"${CLIPBOARD/(.*[\r\n]*)((pattern)([\r\n]*))(.*)//}$TM_FILENAME_BASE${CLIPBOARD/(.*[\r\n]*)((pattern)([\r\n]*))(.*)//}"
],
"description": "clipboard pattern"
}
这可以处理任意数量的换行符,如
first text
pattern
second text
或
first text
pattern
second text
或
first textpatternsecond text
当然,正如 rioV8 指出的那样,如果模式在文本中除了中间部分之外的某处也匹配,那就是一个问题。
我正在使用变量转换在 VS Code 中编写一个片段。我想用插入不带扩展名的文件名的变量(例如:CurrentFileNameWithoutExtensions)替换某些文本(在本例中是复制到剪贴板上的文本)中出现的模式。发生的是模式被替换为字符串形式的变量名称,而不是变量的值。
这是片段:
"${CLIPBOARD/pattern/$TM_FILENAME_BASE/}"
输出为:“pattern”变为“$TM_FILENAME_BASE”。
正确的输出是:“pattern”变为“CurrentFileNameWithoutExtensions”。
一个可能的解决方案是输出模式之前的所有剪贴板文本,然后输出变量,最后输出模式之后的所有剪贴板文本。这将如何完成?
示例剪贴板文本:
Text that is before pattern in clipboard.
pattern
Text that is after pattern in clipboard.
代码片段可以捕获所有文本直到模式并输出:
Text that is before pattern in clipboard.
然后输出变量$TM_FILENAME_BASE
:
CurrentFileNameWithoutExtensions
最后它会输出模式后的文本:
Text that is after pattern in clipboard.
输出看起来像这样放在一起:
Text that is before pattern in clipboard.
CurrentFileNameWithoutExtensions
Text that is after pattern in clipboard.
分组捕捉不同部分,只输出你想要的分组
如果 pattern
不属于剪贴板
"${CLIPBOARD/^((.*?)(pattern.*)|(.*))$//}$TM_FILENAME_BASE${CLIPBOARD/^((.*?pattern)(.*)|(.*))$//}"
如果总是有一个匹配的模式,那么这行得通:
"pattern": {
"prefix": "_pt",
"body": [
"${CLIPBOARD/(.*[\r\n]*)((pattern)([\r\n]*))(.*)//}$TM_FILENAME_BASE${CLIPBOARD/(.*[\r\n]*)((pattern)([\r\n]*))(.*)//}"
],
"description": "clipboard pattern"
}
这可以处理任意数量的换行符,如
first text
pattern
second text
或
first text
pattern
second text
或
first textpatternsecond text
当然,正如 rioV8 指出的那样,如果模式在文本中除了中间部分之外的某处也匹配,那就是一个问题。