以下代码片段通过将TeX文件中的选定文本与剪贴板(希望是URL(相结合来创建超链接,
{
"key": "cmd+l",
"command": "editor.action.insertSnippet",
"when": "editorHasSelection && resourceExtname == .tex",
"args": {
"snippet": "\href{${CLIPBOARD:url}}{${TM_SELECTED_TEXT}}$0"
}
}
有没有办法在执行代码段时选择插入的剪贴板内容?此外,有没有办法检查剪贴板是否是有效的网络或电子邮件地址,然后才插入它?
更新
这是使用正则表达式仅粘贴剪贴板内容(当它是 url 时(的非工作尝试。
{
"key": "cmd+l",
"command": "editor.action.insertSnippet",
"when": "editorHasSelection && resourceExtname == .tex",
"args": {
"snippet": "\href{${1:${CLIPBOARD/(\^\(\(https\?\)://\)\?\(\[w\|W\]\{3\}\.\)\+\[a-zA-Z0-9-\.\]\{3,\}\.\[a-zA-Z\]\{2,\}\(\.\[a-zA-Z\]\{2,\}\)\?\$)/$1/}}}{${TM_SELECTED_TEXT}}$0"
}
}
"snippet": "\href{${1:${CLIPBOARD}}}{${TM_SELECTED_TEXT}}$0
将在您触发代码段时打印并选择CLIPBOARD
内容。 不过,您将失去url
提示,我认为没有办法挽救它。
您的第二个问题:"有没有办法检查剪贴板是否是有效的网络或电子邮件地址,然后才插入它?
我相信是的:
${1:${CLIPBOARD/(..your regex test for email validity here..)/$1/}}
编辑(检查有效电子邮件( - 已测试:
"snippet": "\href{${1:${CLIPBOARD/([A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,})?(.*)/$1/i}}}{${TM_SELECTED_TEXT}}$0"
我收到了 www.regular-expressions.info 的电子邮件正则表达式。
这似乎有效。 关键是,如果您不匹配代码段转换,在这种情况下是 CLIPBOARD 变量内容,不匹配的内容将传递并打印出来。 换句话说,如果您不捕获它,它将通过,因此防止不良电子邮件或 URL 通过并被打印的唯一方法是捕获好的电子邮件/URL和坏版本,并仅打印好的捕获组。
所以这是基本形式:(regex email check here)?(.*)
因此,组 1 具有有效的电子邮件(如果有(,如果不是有效的电子邮件,则组 2 具有剪贴板内容。 并且仅打印组 1。 整洁。 似乎有效。
编辑 2(检查有效的网址( - 伪代码:
"snippet": "\href{${1:${CLIPBOARD/(...url regex checker here...)?(.*)/$1/}}}{${TM_SELECTED_TEXT}}$0"
所以我只是在 url 正则表达式检查的末尾添加了?(.*)
。
编辑 2.5下面是一个基于更新代码段中使用的网址检查器:
"snippet": "\href{${1:${CLIPBOARD/^((https?:\/\/)?([w]{3}\.)+[a-z0-9-]{3,}\.[a-z]{2,}(\.[a-z]{2,})?)?(.*)$/$1${5:+bad url}/i}}}{${TM_SELECTED_TEXT}}$0"
注意:正则表达式验证 url 非常棘手 - 如果不是不可能的话 - 我使用了问题中的一个,并且不保证其完整性。 至少您可以看到如何escape
正则表达式。
编辑 3个电子邮件/网址(如果变量中有错误的电子邮件/网址时需要一些文本,在本例中为 $CLIPBOARD,但可以是任何变量(:
将此条件$1${2:+bad email}
添加到代码段转换的替换部分,因此对于电子邮件版本:
"snippet": "\href{${1:${CLIPBOARD/([A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,})?(.*)/$1${2:+bad email}/i}}}{${TM_SELECTED_TEXT}}$0" // email validater
您想要在bad email
位置的任何文本。 请注意,检查组 2 中是否有非空内容,如果有,请打印"错误电子邮件"。 您的正则表达式可能正在使用不同的组来捕获"不良电子邮件/URL" - 在条件${2:+bad email}
中使用该组。