使用键绑定在 VSCode 中执行预定义的查找替换全部

2024-03-15

我似乎找不到可以从 VSCode 键绑定运行的记录命令的良好列表。

在在线 VSCode 文档中,命令指南 https://code.visualstudio.com/api/extension-guides/command列出了两种发现命令的方法:

  • 浏览键盘快捷键 https://code.visualstudio.com/docs/getstarted/keybindings
  • 查看VS Code的内置 高级命令API https://code.visualstudio.com/api/references/commands

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

例如,在VSCode 按键绑定 https://code.visualstudio.com/docs/getstarted/keybindings#_command-arguments页面上有一个名为“命令参数”的部分,其中包含以下示例条目:

{ "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命令或文档中类似的内容,但肯定存在类似的内容,对吧?

Thanks!


正如 @AurSaaf 指出的那样,即将推出的新工作将允许创建内置方式的命令(或在扩展中使用)来查找在当前文件中具有预设的查找/替换和选项。

我已经在 github issues 上发表了评论,试图让 args 与其他类似命令保持一致,但无济于事。以下是键绑定中当前可用的参数:

{
  "key": "alt+p",
  "command": "editor.actions.findWithArgs",
  "args": {

    "searchString": "howd\\d",      // double-escaped
    "replaceString": "qqqq9",
    "isRegex": true,
    // "regexOverride": 1,
    "findInSelection": false,
    "matchWholeWord": false,
    // "matchCase": false,
    // "matchCaseOverride": 0,
    "preserveCase": false,
    "isCaseSensitive": false
    // "preserveCaseOverride": 0,
    // "wholeWordOverride": 0
  }
}

注释掉的参数是无法使用尽管智能感知表明它们是这样的 - 所以该命令仍然有点“粗糙” - 并且目前仅在 Insiders Build 中可用。不要依赖关于智能感知args键 - 其中许多键的名称错误或此时不起作用。

另请注意,而不是query and replace如中使用的workbench.action.findInFiles并在search.action.openEditor(打开一个新的搜索编辑器)键绑定,该命令当前使用searchString and replaceString因为某些原因。


有关使用所有参数执行大量预定义查找/替换或搜索/替换的功能强大的扩展,请参阅(我写的)。特别是有很多设置选项files to include范围过滤器 - 例如当前文件或在先前搜索结果中找到的最后一个文件,以将搜索范围缩小到仅这些文件。


还有一种内置方法可以跨文件查找,我不知道您的问题后是否添加了参数。无论如何,我同意有时很难发现哪些命令可以接受参数。

有时,命令中的键绑定内的智能感知会显示它们,但并非总是如此。

所以检查一下:

{
 "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]你自己。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用键绑定在 VSCode 中执行预定义的查找替换全部 的相关文章

随机推荐

  • 如何获取当前类的类型?

    这有点难以解释 但我到处都找过了 但找不到任何好的答案 我还看到了 Stack Overflow 的问题如何引用 Java 中接口实现的类类型 https stackoverflow com questions 8161712 how ca
  • #include 在 main() 函数中

    我想知道里面是否有可能main 来自 C 的函数来包含一些东西 例如 在 Cell 程序中 我定义了 cache api h 的参数 稍后将在main 我想改变的功能 我明白什么是定义的 define可以是未定义的 undef程序中的任何位
  • OmniAuth::NoSessionError - 您必须提供会话才能使用 OmniAuth。 (在设备中配置)

    您好 我正在学习如何使用omniauth 作为 ember 应用程序的后端 当我运行我的应用程序时 我收到下面提到的错误 OmniAuth NoSessionError 您必须提供会话才能使用 OmniAuth 在救援轨道上 我的应用程序在
  • 如何使这个 JS 函数异步?

    function takesTime for var i 0 i
  • AVFoundation 根据预览宽高比裁剪捕获的静态图像

    我的问题与这个问题大多相似 裁剪 AVCaptureSession 捕获的图像 https stackoverflow com questions 5780580 cropping image captured by avcapturese
  • 我如何将 pack uri 资源与媒体播放器一起使用?

    我有一些非常简单的代码 只需要播放指定音量的声音 如下所示 var mp new MediaPlayer mp Open uri mp Volume volume mp Play 出现问题是因为这是 Prism 模块的一部分 我不知道执行程
  • spring security的配置问题

    我有 Spring Security 应用程序 以下是我的 security context xml
  • 列表理解中的“with”关键字? [复制]

    这个问题在这里已经有答案了 我遇到了这种用于读取文件中的行的语法 with open as f for line in f
  • 使用 TFS API 检测文件删除更改(自动,无需 VS 交互)

    我在 tfs 工作区中有一个本地文件夹并使用 TFS API 每天晚上我都会删除这个文件夹 然后将数据库脚本编写为 sql 文件 如果现在添加或编辑了某些内容 则会找到更改并进入待处理的更改以进行签入 问题是我如何使用 TFS API 检测
  • Python将字符串转换为变量名

    我知道这可能会出现重复 但到目前为止我还没有找到 或者应该理解 我正在寻找的答案 我有一个字符串列表 想要将每个字符串转换为一个变量名 然后为其分配一些内容 我知道我可能需要一个字典 但我对它们不熟悉 因为我对 python 相对较新 并且
  • Android wifimanager总是返回true

    这简直要了我的命 任何帮助将不胜感激 我想使用 wifi 管理器连接到开放网络 我遇到的问题是该代码声称连接到任何网络 甚至是不存在的网络 下面是执行并使用网络 SSID 调用的完整代码 无论您传递给它什么字符串作为网络的 SSID 即使不
  • 是否可以释放静态定义的数组?

    您可以释放使用静态分配定义的数组的内存吗 不 这是不可能的取消分配静态分配的内存 根据语言 例如 C C 使用指针 您也许可以将此数组所持有的内存用于其他目的 但这样做只会re use记忆 内存不会被释放per se 也就是说 将静态内存与
  • 调用基类构造函数而不命名其类

    class MyDerived public Incredble
  • iphone dev - NSUserDefaults 检查布尔值是否存在

    我刚刚向我的应用程序添加了一个设置包 但在读取布尔设置时遇到问题 我知道 在启动应用程序时 除非用户实际输入设置 否则不会读取设置 这就是我想要捕获的内容 但是 我的代码只是捕获答案是否为 否 或尚未设置的情况 我需要查明它们是否已设置 然
  • 如何去除 iPhone 中的阴影

    我正在使用以编程方式从按钮制作阴影的标准方法 但我希望在完成按钮后阴影不再存在 我可以将不透明度设置为 0 但阴影是否仍然存在 如果存在 仍然会对系统造成负担 谢谢 这给出了一个错误 tempButton superview layer s
  • HTML 电子邮件模板是否需要使用 style 属性?

    是否存在需要 出于某种原因 将 CSS 规则放置在style直接使用 HTML 标签的属性 而不是将 CSS 规则放置在 HTML 电子邮件模板 HEAD 的 STYLE 元素中的选择器内 我要求最常见的 CSS 选择器 如类型 类 ID
  • php 爆炸并强制数组键从 1 而不是 0 开始

    我有一个字符串 它将被分解以获得一个数组 正如我们所知 输出数组键将从 0 开始作为第一个元素的键 1 为第二个元素 依此类推 现在如何强制该数组从 1 而不是 0 开始 对于类型化数组来说非常简单 我们可以这样写 array 1 gt v
  • 如何从标准输入构建 tar?

    我怎样才能将信息输入tar指定文件名 就像是 tar cfz foo tgz files from 但请记住 这并不适用于所有可能的文件名 你应该考虑 null选项和饲料tar from find print0 The xargs示例对于大
  • 这种模式似乎很详尽,但我仍然收到警告

    我正在学习 sml 并编写了以下简单函数 Return a list with every other element of the input list fun everyOther everyOther x x everyOther x
  • 使用键绑定在 VSCode 中执行预定义的查找替换全部

    我似乎找不到可以从 VSCode 键绑定运行的记录命令的良好列表 在在线 VSCode 文档中 命令指南 https code visualstudio com api extension guides command列出了两种发现命令的方