我尝试在 Visual Studio Code 中创建一个简单的正则表达式查找和替换任务。
目前,我将一些用户从 AD 复制到 Visual Studio 代码中的临时文件,并删除行开头的“CN=”以及第一个“,”之后的所有附加信息(正则表达式:,.*$)。这与 VSCode 中的“查找和替换”配合得很好,但每次我想删除它时,我都必须手动输入它。
那么问题来了,这种任务有可能自动化吗?我知道有一些外部工具(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 个扩展(两者都是开源的):
替换规则:您只需在
settings.json
中添加一些规则(使用F1
或ctrl+shift+p
打开调色板并选择Preferences: open settings (JSON)
)。
"replacerules.rules": {
"Remove trailing and leading whitespace": {
"find": "^\\s*(.*)\\s*$",
"replace": "$1"
},
"Remove blank lines": {
"find": "^\\n",
"replace": "",
"languages": [
"typescript"
]
}
}
这是我编写的一个扩展,允许您将查找/替换保存在文件中或作为命名命令和/或键绑定跨文件搜索:查找和转换。使用OP的原始问题,进行此设置(在
settings.json
中):
"findInCurrentFile": { // in settings.json
"reduceUserEntry": {
"title": "Reduce User to ...", // will appear in the Command Palette
"find": "CN=([^,]+).*",
"replace": "$1",
"isRegex": true,
// "restrictFind": "selections", // default is entire document
}
},
您还可以使用此设置进行跨文件搜索:
"runInSearchPanel": {
"reduceUserEntry": {
"title": "Reduce User to ...", // will appear in the Command Palette
"find": "CN=([^,]+).*",
"replace": "$1",
"isRegex": true
// "filesToInclude": "${fileDirname}"
// "onlyOpenEditors": true
// and more options
}
}
作为独立的按键绑定:
{
"key": "alt+r", // whatever keybinding you want
"command": "findInCurrentFile", // or runInSearchPanel
"args": {
"find": "CN=([^,]+).*",
"replace": "$1",
"isRegex": true
扩展程序还可以运行多个查找/替换 - 只需将它们放入数组中即可:
"find": ["<some find term 1>", "<some find term 2>", etc.
与替换相同,制作一个数组。