簡體   English   中英

在 Visual Studio Code 中,有沒有辦法將設置和鍵綁定范圍限定為語言模式?

[英]In Visual Studio Code is there a way to scope settings and keybindings to a language mode?

VS Code 中,我知道您可以創建包含全局用戶鍵綁定和設置的文件,並且您可以為鍵綁定和設置創建特定於工作區的文件,但是是否可以定義特定於語言模式的設置或鍵綁定?

例如,我希望Alt + /表示FSI: Send Line當我處於 F# 模式時FSI: Send Line ,但不是當我處於降價模式或 JS 模式時。

我希望我的制表符在 Elm 模式下為 2 個空格,而在 C# 模式下為 4 個空格。

我知道您可以使用when子句定義鍵綁定,如下所示:

{
    "key": "alt+/",
    "command": "fsi.SendLine",
    "when": "resourceLangId == fsharp"
}

這是實現我所追求的目標的唯一方法嗎?

似乎能夠在他們自己的文件中的某個地方為模式 X 定義設置/鍵綁定是有意義的。 我不喜歡將語言模式行為分散在像這樣的大型全局文件中。

Visual Studio Code 已經聲明,目前(2016-10-19)不支持語言模式設置,但正在考慮中。 ( https://twitter.com/code/status/788301380557561857 )

VS Code Github 存儲庫上存在一些問題,要求提供此功能的變體。

https://github.com/Microsoft/vscode/issues/13532

https://github.com/Microsoft/vscode/issues/1073

要根據編程語言自定義 VS Code 設置和鍵綁定,您可以使用語言標識符、文件擴展名或擴展標識符。

對於設置,您可以使用語言條目(在settings.json ):

    "[fsharp]": {
        "editor.suggest.insertMode": "replace"
    }

對於鍵綁定,您可以使用以下when子句上下文(在keybindings.json ):

editorLangId當編輯器的關聯語言 ID 匹配時為真。

    {
        "key": "ctrl+e",
        "command": "workbench.action.files.saveAs",
        "when": "editorLangId == fsharp"
    }

resourceLangId當資源管理器或編輯器標題語言 ID 匹配時為真。

    {
        "key": "ctrl+e",
        "command": "workbench.action.files.saveAs",
        "when": "resourceLangId == fsharp"
    }

resourceExtname當資源管理器或編輯器文件擴展名匹配時為真。

    {
        "key": "ctrl+e",
        "command": "workbench.action.files.saveAs",
        "when": "resourceExtname == .fs"
    }

extension當擴展的 ID 匹配時為真。

    {
        "key": "ctrl+e",
        "command": "workbench.action.files.saveAs",
        "when": "extension == ionide.ionide-fsharp"
    }


注意:我沒有測試所有這些子句,但editorLangIdresourceExtname對我來說很好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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