如何创建仅在Visual Code中选择行的重新绑定

时间:2017-07-12 17:00:12

标签: visual-studio-code key-bindings

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

我在keybindings.json

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

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

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

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

如何才能使键绑定与我正在寻找的行为一起发挥作用?

2 个答案:

答案 0 :(得分:1)

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

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

  

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

时重新启动

答案 1 :(得分:0)

感谢@ Gama11指点我github issue

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

如Gama11所示,目前不支持reindent in ranges,但是Format Selection是一个非常相似的命令,它使用不同的逻辑来在一定范围内完成缩进。