Visual Studio Code:如何自动执行简单的正则表达式查找和替换?

问题描述 投票:0回答:3

我尝试在 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
regex replace visual-studio-code vscode-tasks
3个回答
17
投票

这个扩展可以完成这项工作:

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"}

您可以将多个命令一起批处理

[{...},{...}]
,这对于一次性应用一整套正则表达式操作非常有用。


8
投票

到今天为止,不延期似乎还是不行。除了已接受的答案中提出的扩展之外,还有其他 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"
            ]
        }
    }
    

1
投票

这是我编写的一个扩展,允许您将查找/替换保存在文件中或作为命名命令和/或键绑定跨文件搜索:查找和转换。使用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.

与替换相同,制作一个数组。

© www.soinside.com 2019 - 2024. All rights reserved.