在Visual Studio中,有没有办法将设置和键绑定范围扩展到语言模式?

时间:2016-10-17 03:28:14

标签: keyboard-shortcuts visual-studio-code

VS Code 中,我知道您可以创建包含全局用户键绑定和设置的文件,并且您可以拥有用于键绑定和设置的工作区特定文件,但是是否可以定义设置或特定于语言模式的键绑定?

例如,当我在F#模式下时,我希望 Alt + / 表示FSI: Send Line,但不是在我' m时在降价模式或JS模式下。

我希望我的标签在榆树模式下为2个空格,但在C#模式下为4个空格。

我知道您可以使用when子句定义键绑定,如下所示:

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

这是实现我之后的唯一途径吗?

似乎能够在某个地方为自己的文件定义模式X的设置/键绑定是有意义的。我不喜欢在像这样的大型全局文件中散布语言模式行为。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

要基于编程语言自定义VS Code设置和键绑定,可以使用language identifier,文件扩展名或扩展名标识符。

对于设置,您可以使用language entry(在settings.json中):

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

对于键绑定,您可以使用以下when clause contexts(在keybindings.json中):

editorLangId当编辑器的关联语言ID匹配时为true。

    {
        "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当浏览器或编辑器扩展名匹配时为true。

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

extension当扩展名的ID匹配时为true。

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


注释: 我没有测试所有这些子句,但是editorLangIdresourceExtname对我来说很好。