简单的键绑定不能按预期工作

时间:2018-02-01 01:44:48

标签: visual-studio-code key-bindings

我正在尝试将 ctrl + x 绑定到editor.action.clipboardCutAction(剪切),但条件是它仅在选择文本时调用。

但是,它不起作用。当没有选择文本时,它仍会切断整行。

代码:

"key": "ctrl+x",
"command": "editor.action.clipboardCutAction",
"when": "editorTextFocus && editorHasSelection && !editorReadonly"

2 个答案:

答案 0 :(得分:1)

vscode 团队的一名成员开发了“官方”答案。这本质上是@Victor 提出的。见disable Ctrl+X cut line when no selection

<块引用>

ctrl+x 只是特殊的,需要绑定到一个空操作来停止 默认。我添加了一个什么都不做的 noop 命令。所以最后 解决方案是:

{
    "key": "ctrl+x",
    "command": "noop"
},
{
    "key": "ctrl+x",
    "command": "editor.action.clipboardCutAction",
    "when": "editorHasSelection"
}

应该会在 v1.56 中发布。

答案 1 :(得分:0)

临时解决方案

作为临时解决方案,您可以先重新分配此快捷方式。例如:

{
    "key": "ctrl+x",
    "command": "workbench.action.closeMessages",
},
{
    "key": "ctrl+x",
    "command": "editor.action.clipboardCutAction",
    "when": "editorTextFocus && editorHasSelection && !editorReadonly"
},

而不是命令workbench.action.closeMessages,您可以使用另一个。

临时解决方案的缺点

如果未选择任何内容,则按 ctrl + x 将执行第一个组合键并运行workbench.action.closeMessages命令。

替代解决方案

在设置 ctrl +,中添加以下内容:

// Controls whether copying without a selection copies the current line.
"editor.emptySelectionClipboard": false,

替代解决方案的缺点

复制时也适用。