使用键绑定在VSCode中执行预定义的Find-Replace-All

时间:2019-08-18 02:57:37

标签: visual-studio-code vscode-settings key-bindings vscode-extensions

我似乎找不到一个可以从VSCode键绑定运行的文档化命令的完整列表。

在在线VSCode文档上,Commands Guide列出了两种发现命令的方式:

找到的用于键盘快捷键的命令通常是不带参数的“简单”命令。 “高级命令api”似乎缺少一些非常基本的基本命令。

例如,在VSCode Keybindings页面上,有一个名为“命令参数”的节,其中包含以下示例条目:

{ "key": "enter", "command": "type",
  "args": { "text": "Hello World" },
  "when": "editorTextFocus" }

但是我没有看到type命令记录的任何地方。因此,我认为可能还存在其他类似的基本命令,但是我不知道在哪里可以找到它们的文档。

无论如何,此刻我真正要寻找的是一个命令,我可以运行该命令在当前编辑器中进行预定义的搜索和替换,指定查找文本,替换文本和选项...类似下方:

{ "key": "ctrl+shift+8", 
  "command": "findReplaceAll",
  "args": { 
    "findText": "Company(\\w+)", 
    "replaceText": "User$1"
    "options": { "ignoreCase": false, "wholeWord": true, "regex": true }
  },
  "when": "editorTextFocus" }

但是我无法在文档中找到任何这样的findReplaceAll命令或类似内容,但是可以肯定存在这样的东西,对吧?

谢谢!

2 个答案:

答案 0 :(得分:1)

有一个内置的方法可以执行此操作,我不知道是否在您的问题后添加了参数。无论如何,我都同意有时很难发现哪些命令可以接受参数。

有时,命令中的键绑定中的智能感知将使它们浮出水面,但并非总是如此。

所以检查一下:

{
 "key": "ctrl+shift+f",
 "command": "workbench.action.findInFiles",
 "args": {
   <cursor here>  // cursor there and type Ctrl+space
  }
}

将显示可用的args,如下例所示。


{
  "key": "ctrl+shift+f",
  "command": "workbench.action.findInFiles",
  "args": {

    "query": "Company(\\w+)",   // needs to be double-escaped
    "replace": "User$1",
    "triggerSearch": true,
    "isRegex": true,
  
    // "filesToExclude": "",
    // "filesToInclude": "",
    "matchWholeWord": true,
    "isCaseSensitive": true
  }
},

这将执行搜索,但不会对文件进行实际替换-您必须自己触发replace [all]

答案 1 :(得分:0)

安装扩展名Replace Rules

settings.json(工作区或用户)中构建搜索替换。阅读有关可能性的页面。

  "replacerules.rules": {
    "Replace User": {
      "find": "User(\d+)",
      "replace": "Player$1"
    }
  }

keybindings.json中定义以下按键绑定:

  {
  "key": "ctrl+shift+alt+u",
  "command": "replacerules.runRule",
  "when": "editorTextFocus",
  "args": { "ruleName": "Replace User"}
  }

如果您选择一些文本,则搜索替换将仅在所选内容内执行。