【问题标题】:How to create keybinding that reindents only selected lines in Visual Code如何创建仅重新缩进可视代码中选定行的键绑定
【发布时间】:2017-07-12 17:00:11
【问题描述】:

我在 MacOS 上使用 Visual Studio Code 1.14,并尝试创建自己的键绑定,重新缩进我突出显示的代码行。

我有这个在keybindings.json:

[
    {
        "key": "alt+cmd+[", "command": "editor.action.reindentlines",
        "when": "editorHasSelection && editorTextFocus"
    }
]

我根据this article"when": 子句选择了命令。

问题:当我使用自定义键盘快捷键时,它会重新缩进整个页面,而不仅仅是我选择的文本 >。

这可能很琐碎,但这可能会导致格式方面的噩梦,例如在编写 ReactJS 应用程序时,VSC 用于检测如何缩进行的正则表达式模式在查看 .jsx 中的 javascript 和 html 混合时似乎会感到困惑文件。在这种情况下,我只想重新缩进/自动缩进我选择的文本 - 而不是整个页面。

如何让键绑定与我正在寻找的行为一起工作?

【问题讨论】:

    标签: visual-studio-code key-bindings


    【解决方案1】:

    when-clause 只能在命令活动时更改 - 而不是它的行为方式。问题是该命令的实现对整个文件进行操作,而不是当前选择。

    我认为目前尚不支持选择的重新缩进,但它似乎在路线图上。例如,#19847(强调我的)中提到了它:

    目前我们不支持范围内的 Reindent 的原因是我们在嵌入式语言文件中存在一些边界问题。其中一些只是 TextMate 语法问题,但我确定这是否可以解决所有问题。一旦解决了这个问题,我认为支持范围/选择中的重新缩进很容易。然后在粘贴/移动线/等时重新缩进。

    【讨论】:

    • 阅读有关该问题的 cmets 非常有见地。您引用的那个问题提到了另一个命令,它完全符合我的意图!感谢您为我指明正确的方向。
    【解决方案2】:

    感谢@Gama11 将我指向此github issue

    完成我想要做的事情的解决方案是使用命令editor.action.formatSelection 而不是editor.action.redindentlines

    如 Gama11 所示,当前不支持范围内的重新缩进,但是格式选择是一个非常相似的命令,它使用不同的逻辑来完成特定范围内的缩进。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-17
      • 2022-06-12
      • 1970-01-01
      • 2018-06-26
      相关资源
      最近更新 更多