VS 代码键绑定:接受 quickfix codeAction

VS Code keybinding: Accept quickfix codeAction

我正在尝试通过添加一个快捷方式来实现一个小功能来自动更正最后一个拼错的单词,这就是我目前得到的:

{
    "key": "cmd+l",
    "command": "extension.multiCommand.execute",
    "args": {
        "sequence": [
            "cSpell.goToPreviousSpellingIssue",
            "editor.action.quickFix",
            "workbench.action.navigateToLastEditLocation",
            "acceptSelectedSuggestionOnEnter",
            "acceptSelectedSuggestion"
        ]
    }
},

思路很简单:跳回第一个拼错的单词,然后 select 我的拼写检查器给我的第一个建议,最后跳回之前编辑过的位置。

以上代码使用了multiCommand插件。问题是我找不到任何击键事件让我实际上 select 我的拼写检查器给我的第一个建议。 在配置中,我使用 cSpell 来检查我的拼写。具体来说,在我按下 cmd+l 后,这就是我得到的: snap shot 显然,我设法转到上一个拼写问题,并调用 quickFix 让建议小部件弹出,然后将光标移回我最初所在的位置。因此,唯一的问题是 select 该建议的事件是什么?

非常感谢大家的帮助,或者如果有更好的方法来做同样的事情请告诉我! (能想到的关键字我都试过了,无论是VS Code的官方文档还是google都没有太多参考)

因为 quickfix 菜单与 suggestions 菜单不同,所以 nextSuggestionacceptSuggestion 类型的命令在其中不起作用。快速修复菜单中的导航命令存在未决问题,请参阅 快速修复上下文菜单中缺少导航键绑定 .

但是你可以通过其他方式得到你想要的东西。我找到了 Keybinding for applying a specific code action,其中有一个使用命令应用快速修复的方法:

{
  "key": "ctrl+shift+r ctrl+e",
  "command": "editor.action.codeAction",
  "args": {
    "kind": "refactor.extract.function",
    "apply": "first"
  }
}

Valid values for "apply":

"first" — Always automatically the first available code action.
"ifSingle" — Default. Automatically the code action if only one is available. Otherwise, show the context menu.
"never" — Always show the code action context menu, even if only a single code action is available.

根据您的用例调整它,试试这个:

{
  "key": "cmd+l",                      // "ctrl+l" for Windows
  "command": "extension.multiCommand.execute",
  "args": {
      "sequence": [
          "cSpell.goToPreviousSpellingIssue",
          {
            "command": "editor.action.codeAction",
            "args": {
              "kind": "quickfix",
              "apply": "first"   // you indicated you want the first choice
            }
          },
          // "workbench.action.navigateToLastEditLocation"
          "cursorUndo"               // better than the above I believe
      ]
  }
}