如何创建仅重新缩进 Visual Code 中选定行的键绑定
How to create keybinding that reindents only selected lines in Visual Code
我在 MacOS 上使用 Visual Studio 代码 1.14,并尝试创建我自己的键绑定,重新缩进 仅 我 突出显示.
我在 keybindings.json
中有这个:
[
{
"key": "alt+cmd+[", "command": "editor.action.reindentlines",
"when": "editorHasSelection && editorTextFocus"
}
]
我根据this article选择了"when":
子句的命令。
问题:当我使用我的自定义键盘快捷键时,它会重新缩进整个页面,而不是仅缩进我的文本'已经选择了。
这也许是微不足道的,但这可能会导致格式化噩梦,例如在编写 ReactJS 应用程序时,VSC 用于检测如何缩进的正则表达式模式在查看 javascript 的混合时似乎会感到困惑和 .jsx 文件中的 html。在这种情况下,我只想 re-indent/auto-indent 我选择的文本 - 而不是整个页面。
如何让键绑定以我正在寻找的行为运行?
when
子句只能在命令处于 活动 时更改 - 而不是它的行为方式。问题是该命令的实施是对整个文件进行操作,而不是对当前选择进行操作。
我认为还不支持重新缩进选择,但它似乎在路线图上。例如,它在 #19847 中被提及(强调我的):
The reason that right now we don't support Reindent in ranges is that we have some issues with boundaries in embedded-language files. Some of them are just TextMate Grammar issues but I'm sure if that can fix all. Once that issue is addressed, I think it's easy to support reindent in ranges/selection. And then Reindent when paste/moveLines/etc.
感谢@Gama11 指点我这个github issue。
完成我试图做的事情的解决方案是使用命令 editor.action.formatSelection
而不是 editor.action.redindentlines
。
如 Gama11 所示,目前不支持在范围内重新缩进,但是格式选择是一个非常相似的命令,它使用不同的逻辑来完成特定范围内的缩进。
我在 MacOS 上使用 Visual Studio 代码 1.14,并尝试创建我自己的键绑定,重新缩进 仅 我 突出显示.
我在 keybindings.json
中有这个:
[
{
"key": "alt+cmd+[", "command": "editor.action.reindentlines",
"when": "editorHasSelection && editorTextFocus"
}
]
我根据this article选择了"when":
子句的命令。
问题:当我使用我的自定义键盘快捷键时,它会重新缩进整个页面,而不是仅缩进我的文本'已经选择了。
这也许是微不足道的,但这可能会导致格式化噩梦,例如在编写 ReactJS 应用程序时,VSC 用于检测如何缩进的正则表达式模式在查看 javascript 的混合时似乎会感到困惑和 .jsx 文件中的 html。在这种情况下,我只想 re-indent/auto-indent 我选择的文本 - 而不是整个页面。
如何让键绑定以我正在寻找的行为运行?
when
子句只能在命令处于 活动 时更改 - 而不是它的行为方式。问题是该命令的实施是对整个文件进行操作,而不是对当前选择进行操作。
我认为还不支持重新缩进选择,但它似乎在路线图上。例如,它在 #19847 中被提及(强调我的):
The reason that right now we don't support Reindent in ranges is that we have some issues with boundaries in embedded-language files. Some of them are just TextMate Grammar issues but I'm sure if that can fix all. Once that issue is addressed, I think it's easy to support reindent in ranges/selection. And then Reindent when paste/moveLines/etc.
感谢@Gama11 指点我这个github issue。
完成我试图做的事情的解决方案是使用命令 editor.action.formatSelection
而不是 editor.action.redindentlines
。
如 Gama11 所示,目前不支持在范围内重新缩进,但是格式选择是一个非常相似的命令,它使用不同的逻辑来完成特定范围内的缩进。