我想绑定一个只有当我在javascript或javascript react(jsx)文件中时触发的命令。
理想情况下,这就是我想要的东西:
{
"key": "f9",
"command": "sortImports.sort",
"when": "editorTextFocus && (editorLangId == 'javascriptreact' && editorLangId == 'javascript')"
}
我尝试过(editorLangId ==' javascriptreact' || editorLangId ==' javascript')但是失败了。
我可以通过执行2个键绑定来实现它(一个使用javascript,一个使用javascript做出反应)。
我不太确定'何时'条件真的支持?也许是一个开始......但是我无法让它工作。
答案 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)"
javascriptreact
和javascript
不应该是我记忆中的字符串,它们被定义为语言。尝试将它们用作变量而不是字符串。