json 为什么Tab接受建议并替换下面的文本,而Enter接受并保留在VS Code中?

kgqe7b3p  于 2023-06-07  发布在  其他
关注(0)|答案(1)|浏览(140)

我正在尝试选择IntelliSense建议我使用Tab键的建议之一。当使用Enter键时,Tab会在文本之前插入建议,并关闭打断我的json的引用。如何配置Tab使其行为与Enter相同?
输入时的预期行为:

Tab的错误行为:

可能相关的默认选项:

"editor.suggest.insertMode": "insert",
"[jsonc]":  {
        "editor.quickSuggestions": {
                "strings": true
        },
        "editor.suggest.insertMode": "replace"
    },
"editor.tabCompletion": "off",

看起来Enter遵循带注解的JSON的自定义规则,但Tab没有。

cclgggtu

cclgggtu1#

发现此问题是由IntelliJ IDEA Keybindings扩展引起的。看看它的内部,它发生的原因很简单。查看它的package.json file(它的扩展清单),并查看contributes> keybindings属性。你会看到这个:

{
    "key": "enter",
    "mac": "enter",
    "command": "acceptSelectedSuggestion",
    "when": "acceptSuggestionOnEnter && suggestWidgetVisible && suggestionMakesTextEdit && textInputFocus",
    "intellij": "Choose Lookup Item"
},
{
    "key": "tab",
    "mac": "tab",
    "command": "acceptAlternativeSelectedSuggestion",
    "when": "suggestWidgetVisible && textInputFocus",
    "intellij": "Choose Lookup Item Replace"
},

参见Difference between "acceptSelectedSuggestion" and "acceptAlternativeSelectedSuggestion" in VSCode keybinding config,它解释了:

  • acceptSelectedSuggestion使插入符号右侧的文本在接受建议后被保留。
  • acceptAlternativeSelectedSuggestion会导致插入符号右侧的文本在建议被接受后被 * 删除 *。

注意:如果你想检查某个扩展是否导致了特定的行为,你可以通过以下方式进行故障排除:在禁用扩展的情况下重新加载VS Code时是否会发生这种行为(使用命令面板中的Developer: Reload With Extensions Disabled命令)?如果没有,那么执行extension bisect来找出是什么扩展导致了它。

相关问题