多语言条件时的键绑定

时间:2016-08-24 11:46:08

标签: visual-studio-code

我想绑定一个只有当我在javascript或javascript react(jsx)文件中时触发的命令。

理想情况下,这就是我想要的东西:

   {
        "key": "f9",
        "command": "sortImports.sort",
        "when": "editorTextFocus && (editorLangId == 'javascriptreact' && editorLangId == 'javascript')"
    }

我尝试过(editorLangId ==' javascriptreact' || editorLangId ==' javascript')但是失败了。

我可以通过执行2个键绑定来实现它(一个使用javascript,一个使用javascript做出反应)。

我不太确定'何时'条件真的支持?也许是一个开始......但是我无法让它工作。

2 个答案:

答案 0 :(得分:0)

如果是代码段,则将代码段添加到scope属性中具有多种语言的全局代码段文件中似乎对我有用。 (在帮助中输入“用户片段”,然后单击“新的全局片段文件”)。然后将您的代码段添加到文件中。

"myFavSnippet": {
    "scope": "javascript,javascriptreact",
    "prefix": "console.log",
    "body": [
        "console.log(${1:}$SELECTION)${0};"
    ],
    "description": "console.log"
},

这是我放入keybindings.json文件中的内容:

 {
    "key": "shift+cmd+l",
    "command": "editor.action.insertSnippet",
    "when": "editorTextFocus",
    "args": {
      "name": "myFavSnippet"
    }  
  },

尽管在documentation中编写了什么,但似乎没有将langId属性添加到args的情况下仍然有效。即使将代码段放入特定于语言的代码段文件中,这也对我有用。

答案 1 :(得分:-1)

现在无法测试,但这应该可行:

"when": "editorTextFocus && (editorLangId == javascriptreact || editorLangId == javascript)"

javascriptreactjavascript不应该是我记忆中的字符串,它们被定义为语言。尝试将它们用作变量而不是字符串。