Visual Studio 代码:如何自动执行简单的正则表达式查找和替换?
Visual Studio Code: How to automate a simple regex-find and replace?
我尝试在 Visual Studio 代码中创建一个简单的正则表达式查找和替换任务。
目前我从 AD 中复制了一些用户到 Visual Studio 代码中的一个临时文件,并删除了行开头的 "CN=" 和第一个“,”之后的所有附加信息(正则表达式:,.*$)。这适用于 VSCode 中的 Find&Replace,但每次我想删除它时我都必须手动输入它。
那么问题来了,是否可以将这种任务自动化?我知道有一些外部工具 (https://code.visualstudio.com/docs/editor/tasks) 但我正在努力让它工作......
编辑:请求示例(我的正则表达式正在运行,这不是问题所在:/。我需要一个如何自动执行此任务的示例...)
示例
CN=Test User,OU=Benutzer,OU=TEST1,OU=Vert,OU=ES1,OU=HEADQUARTERS,DC=esg,DC=corp
预期输出
Test User
这个扩展可以完成这项工作:
https://marketplace.visualstudio.com/items?itemName=joekon.ssmacro#overview
正则表达式似乎遵循:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
例子
创建文件regex.json:
[{
"command": "ssmacro.replace",
"args": {
"info": "strip out EOL whitespace",
"find": "\s+$",
"replace": "",
"all": true,
"reg": true,
"flag": "gm"
}
}]
"info"
只是提醒,没有任何作用。
在keybindings.json中设置快捷方式:
"key": "ctrl+9",
"command": "ssmacro.macro", "args": {"path": "C:\...\regex.json"}
您可以将多个命令一起批处理[{...},{...}]
,这对于一次性应用一整套正则表达式操作很有用。
到今天为止,不延期似乎还是不行。除了已接受的答案中提出的扩展之外,还有另外 2 个扩展(两者都是开源的):
● Batch Replacer (but it doesn't work on the documents open in the editor : "you must have a folder open for editing and all files in it will be updated."*)
● Replace Rules:您只需在 settings.json
中添加一些规则(使用 F1
或 ctrl+shift+p
和 select [=14= 打开调色板]).
"replacerules.rules": {
"Remove trailing and leading whitespace": {
"find": "^\s*(.*)\s*$",
"replace": ""
},
"Remove blank lines": {
"find": "^\n",
"replace": "",
"languages": [
"typescript"
]
}
}
扩展文件夹是:%USERPROFILE%\.vscode\extensions
这是我写的一个扩展,它允许您将 find/replaces 保存在文件中或作为命名命令跨文件搜索 and/or 作为键绑定:Find and Transform。使用 OP 的原始问题,进行此设置(在 settings.json
中):
"findInCurrentFile": { // in settings.json
"reduceUserEntry": {
"title": "Reduce User to ...", // will appear in the Command Palette
"find": "CN=([^,]+).*",
"replace": "",
"isRegex": true,
// "restrictFind": "selections", // default is entire document
}
},
您也可以使用此设置进行跨文件搜索:
"runInSearchPanel": {
"reduceUserEntry": {
"title": "Reduce User to ...", // will appear in the Command Palette
"find": "CN=([^,]+).*",
"replace": "",
"isRegex": true
// "filesToInclude": "${fileDirname}"
// "onlyOpenEditors": true
// and more options
}
}
作为独立的键绑定:
{
"key": "alt+r", // whatever keybinding you want
"command": "findInCurrentFile", // or runInSearchPanel
"args": {
"find": "CN=([^,]+).*",
"replace": "",
"isRegex": true
扩展也可以 运行 多个 finds/replaces - 只需将它们放入一个数组中即可:
"find": ["<some find term 1>", "<some find term 2>", etc.
与替换相同,将它们组成一个数组。
我尝试在 Visual Studio 代码中创建一个简单的正则表达式查找和替换任务。
目前我从 AD 中复制了一些用户到 Visual Studio 代码中的一个临时文件,并删除了行开头的 "CN=" 和第一个“,”之后的所有附加信息(正则表达式:,.*$)。这适用于 VSCode 中的 Find&Replace,但每次我想删除它时我都必须手动输入它。
那么问题来了,是否可以将这种任务自动化?我知道有一些外部工具 (https://code.visualstudio.com/docs/editor/tasks) 但我正在努力让它工作......
编辑:请求示例(我的正则表达式正在运行,这不是问题所在:/。我需要一个如何自动执行此任务的示例...)
示例
CN=Test User,OU=Benutzer,OU=TEST1,OU=Vert,OU=ES1,OU=HEADQUARTERS,DC=esg,DC=corp
预期输出
Test User
这个扩展可以完成这项工作:
https://marketplace.visualstudio.com/items?itemName=joekon.ssmacro#overview
正则表达式似乎遵循:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
例子
创建文件regex.json:
[{
"command": "ssmacro.replace",
"args": {
"info": "strip out EOL whitespace",
"find": "\s+$",
"replace": "",
"all": true,
"reg": true,
"flag": "gm"
}
}]
"info"
只是提醒,没有任何作用。
在keybindings.json中设置快捷方式:
"key": "ctrl+9",
"command": "ssmacro.macro", "args": {"path": "C:\...\regex.json"}
您可以将多个命令一起批处理[{...},{...}]
,这对于一次性应用一整套正则表达式操作很有用。
到今天为止,不延期似乎还是不行。除了已接受的答案中提出的扩展之外,还有另外 2 个扩展(两者都是开源的):
● Batch Replacer (but it doesn't work on the documents open in the editor : "you must have a folder open for editing and all files in it will be updated."*)
● Replace Rules:您只需在 settings.json
中添加一些规则(使用 F1
或 ctrl+shift+p
和 select [=14= 打开调色板]).
"replacerules.rules": {
"Remove trailing and leading whitespace": {
"find": "^\s*(.*)\s*$",
"replace": ""
},
"Remove blank lines": {
"find": "^\n",
"replace": "",
"languages": [
"typescript"
]
}
}
扩展文件夹是:%USERPROFILE%\.vscode\extensions
这是我写的一个扩展,它允许您将 find/replaces 保存在文件中或作为命名命令跨文件搜索 and/or 作为键绑定:Find and Transform。使用 OP 的原始问题,进行此设置(在 settings.json
中):
"findInCurrentFile": { // in settings.json
"reduceUserEntry": {
"title": "Reduce User to ...", // will appear in the Command Palette
"find": "CN=([^,]+).*",
"replace": "",
"isRegex": true,
// "restrictFind": "selections", // default is entire document
}
},
您也可以使用此设置进行跨文件搜索:
"runInSearchPanel": {
"reduceUserEntry": {
"title": "Reduce User to ...", // will appear in the Command Palette
"find": "CN=([^,]+).*",
"replace": "",
"isRegex": true
// "filesToInclude": "${fileDirname}"
// "onlyOpenEditors": true
// and more options
}
}
作为独立的键绑定:
{
"key": "alt+r", // whatever keybinding you want
"command": "findInCurrentFile", // or runInSearchPanel
"args": {
"find": "CN=([^,]+).*",
"replace": "",
"isRegex": true
扩展也可以 运行 多个 finds/replaces - 只需将它们放入一个数组中即可:
"find": ["<some find term 1>", "<some find term 2>", etc.
与替换相同,将它们组成一个数组。