首页 > 解决方案 > VSCode:将键绑定分配给片段不起作用

问题描述

我想使用一个片段来转换'。' 至 '_'。我想将此代码段绑定到快捷键。

我包括以下keybindings.json文件。

//keybindings.json
//Snippet-1
    {
        "key": "alt+u",
        "command": "editor.action.insertSnippet",
        "when": "editorTextFocus",
        "args": {
            "snippet": "${1/[.]/_/g}",
        },
    },

按下alt+u不会插入片段。

但是,以下工作:

//keybindings.json
// Snippet-2
    {
        "key": "alt+u",
        "command": "editor.action.insertSnippet",
        "when": "editorTextFocus",
        "args": {
            "snippet": "${1/[.]/_/g}_more_text",
        },
    },

当片段中有一些文本时它可以工作,但当片段中没有文本时会失败。

任何帮助,将不胜感激。

编辑 2020/09/03:

此代码段在全局代码段文件中工作(如下所示)。只有当我在键绑定中使用它时它才会失败。

//Snippet-3

    "snake_case": {
        "prefix": "sn",
        "body":"${1/[.]/_/g}" 
    },

标签: visual-studio-codevscode-settingscode-snippetsvscode-snippets

解决方案


通常在括号中的交替组中,您不需要转义文字点,但显然您在片段中这样做。Vscode 的文档,请参阅转换示例。所以我尝试了:

"snippet": "${1/[\\.]/_/g}"

它可以按您的预期工作。但是我仍然认为这里有一个错误,因为仅添加一个空格就可以使您的版本正常工作!


推荐阅读