簡體   English   中英

在 Visual Studio 代碼中,如何將單個鍵盤快捷鍵分配給多種語言?

[英]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"
  }
}

我認為這就像在鍵盤快捷鍵綁定文件中復制和粘貼一樣簡單,並在適當的地方修改langIdname 但這似乎只是調用了文件中最后一個匹配條目的片段。

那么,如何根據我輸入的語言文件為多個片段分配一個快捷方式?

雖然文檔沒有詳細說明這些細節,但這些字段僅用於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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM