![](/img/trans.png)
[英]How can I change keyboard shortcut bindings in Visual Studio Code?
[英]In Visual Studio code, how do I assign a single keyboard shortcut to multiple languages?
我找不到任何人問如何做到這一點:如果我使用的是 typescript,我可能需要一個鍵盤快捷鍵來生成“if 語句”的樣板,如下所示:
if (/* cursor starts here */) {
/* selected text goes here */
}
但是如果我使用另一種語言,比如 Python,我會想要一個不同的“if 語句”:
if /* cursor starts here */:
/* selected text goes here */
官方文檔解釋了如何將單個鍵盤快捷鍵 map 轉換為單個片段。 但據我所知,它並沒有解釋如何將 map 單個鍵盤快捷鍵指向多個片段(每個片段都在一個單獨的語言文件中)。
感覺文檔留下了足夠的線索來自己解決這個問題:
{
"key": "cmd+k 1",
"command": "editor.action.insertSnippet",
"when": "editorTextFocus",
"args": {
"langId": "csharp",
"name": "myFavSnippet"
}
}
我認為這就像在鍵盤快捷鍵綁定文件中復制和粘貼一樣簡單,並在適當的地方修改langId
和name
。 但這似乎只是調用了文件中最后一個匹配條目的片段。
那么,如何根據我輸入的語言文件為多個片段分配一個快捷方式?
雖然文檔沒有詳細說明這些細節,但這些字段僅用於scope按下鍵盤時的操作:
"langId": "csharp",
"name": "myFavSnippet"
要根據語言執行不同的片段,您必須修改when
。 "when": "editorTextFocus"
無論你在什么文件中都適用,只要它有文本焦點。 嘗試同時做兩件事可能是未定義的。
以下是您應該如何更改when 子句以執行您想要的操作:
{
"key": "cmd+k 1",
"command": "editor.action.insertSnippet",
"when": "editorTextFocus && editorLangId == csharp",
"args": {
"langId": "csharp",
"name": "myFavSnippet"
}
},
{
"key": "cmd+k 1",
"command": "editor.action.insertSnippet",
"when": "editorTextFocus && editorLangId == typescript",
"args": {
"langId": "typescript",
"name": "myFavSnippet"
}
},
另外,請記住,如果您在每個片段文件中為片段賦予相同的名稱,則不需要包含langId
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.