我在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的正则表达式模式似乎变得混乱文件。在这种情况下,我只想重新缩进/自动缩进我选择的文本 - 而不是整个页面。
如何才能使键绑定与我正在寻找的行为一起发挥作用?
答案 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是一个非常相似的命令,它使用不同的逻辑来在一定范围内完成缩进。