多语言条件时的键绑定

问题描述 投票:2回答:2

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

这是我想要的理想选择:

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

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

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

我不太清楚'什么时候'条件真的支持什么?也许是一个开始...但我无法让它工作。

visual-studio-code
2个回答
0
投票

如果它是一个片段,那么在范围属性中使用多种语言的全局代码段文件中添加代码段似乎对我有用。 (在帮助中键入“用户代码段”,然后单击“新建全局代码段文件”)。然后将您的代码段添加到文件中。

"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
投票

现在无法测试,但这应该工作:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.