Visual studio code 我可以在vscode中定义替换操作的任务吗?

Visual studio code 我可以在vscode中定义替换操作的任务吗?,visual-studio-code,Visual Studio Code,我替换每个调试器在我的解决方案中使用“”的短语每天数次。我认为如果有一种方法可以定义此操作的任务,那就更好了。 你知道解决办法吗。是否有此功能?您需要一个宏扩展,例如。它将允许您将命令链接在一起,以使用一个键绑定运行 在您的settings.json中: { "command": "multiCommand.removeDebugger", // "interval": 250, "sequence": [ "workbench.action.findInFiles",

我替换每个
调试器在我的解决方案中使用“”的短语每天数次。我认为如果有一种方法可以定义此操作的任务,那就更好了。

你知道解决办法吗。是否有此功能?

您需要一个宏扩展,例如。它将允许您将命令链接在一起,以使用一个键绑定运行

在您的settings.json中:

{
  "command": "multiCommand.removeDebugger",
  // "interval": 250,
  "sequence": [

    "workbench.action.findInFiles",
    // "toggleSearchRegex",  // depending if the default is regex on or off
                             // and where you want it to end up

    "search.action.refreshSearchResults",
    "workbench.action.replaceInFiles",
    "search.focus.nextInputBox",
    "editor.action.clipboardCutAction",

    "search.action.replaceAll"
  ]
},
这将打开“在文件中查找”面板。然后,它将运行命令,在文件中实际搜索所选字符串(这是执行替换之前的必要步骤)。然后,它将移动到“替换输入框”,清除其内容(因为您希望不使用任何内容替换“调试器;”),然后运行“在所有文件中替换”命令。如果您真的想这样做,VSCode将提示您

在您的keybindings.json中放置一些您选择的keybinding,例如:

{
  "key": "ctrl+alt+u",
  "command": "extension.multiCommand.execute",
  "args": { "command": "multiCommand.removeDebugger" }
},
唯一的要求是突出显示要首先搜索的短语-在您的示例中是
debugger-然后用Ctrl-Alt-U或其他方式触发它

这是它工作的演示gif——我把它的速度放慢了,这样就可以看到它在执行以下步骤:

。gif软件在按键时是不稳定的-它只是Ctrl-Alt-U。

我为这个任务创建了一个。它在windows和mac上注册绑定到
ctrl+alt+shift+d
ctrl+cmd+shift+d
的命令
Remove Debugger Statements
,以执行所需操作


此外,它还必须在执行操作时指定要包括/排除的文件/文件夹。

您的意思是只查找和替换吗?选择一个调试器;Ctrl-Shift-L将选择全部,然后删除。还是你在找别的东西?你真的用“”替换了吗?两个引号?实际上我想做和你说的一样的工作,但是在一个项目的所有文件中。。你知道有什么解决办法吗?我想定义一个任务来查找replaceall
调试器是一个很好的方法,但我不知道怎么做。我有一个宏解决方案-你想替换调试器;什么都没有?是的。我想这么做。不幸的是,这对我不起作用。实际上,它在第二个输入(替换输入)中停止。我上传了一张这张图片,让你直观地看到我的想法。谢谢我的朋友。那个“type”命令不应该在那里-我复制了错误的东西。现在试试看。它显然还需要250毫秒的延迟间隔选项。实际上我认为它不需要延迟,但在更改设置后重新加载vscode。我编辑了上面的宏。非常感谢。现在可以了,但我有一个问题(或要求)!我们是否可以使用命令来选择
调试器和提示窗口中用于选择
替换
选项的命令?!:)实际上,我喜欢把步骤减少到一个步骤(一条捷径)。例如,我可以通过
ctrl+alt+u
来完成所有这些步骤;它不会删除
调试器当它周围没有空间时。例如,如果我编写
调试器在行尾,它不会删除它。或者如果我写
constructor(){debugger;}
它不会删除它。但最终你的解决方案非常好。@alihasani谢谢你的反馈。我会在有时间的时候尽快研究这些情况,并会更新您。@alihasani我已经更新了扩展,以使调试器语句与其他代码匹配,并专门删除它们。否则,如果调试器语句位于单独的一行上,则它将与整行一起删除。您可以查看一下,如果还有其他可能的重要事项,请告诉我。非常感谢。现在问题已经解决了,但我看到了一个新问题:当
调试器时位于单独的一行中,它将与整行一起删除,但下一行(位于
调试器;
开启后的一行)将出现在前一行的末尾。@alihasani您是否使用版本0.0.6,因为它应该解决您提到的确切问题。它应该只删除包含调试器的行;除非下一行仅包含换行符/回车键,否则不在其上显示下一行。