【问题标题】:VSCode: how to make Ctrl+k kill till the end of line in the terminal?VSCode:如何使 Ctrl+k 在终端中杀死直到行尾?
【发布时间】:2018-11-07 05:00:18
【问题描述】:

在 Visual Studio Code 中,Ctrl-k 快捷键绑定到 clearing the terminal

我在 Windows 中使用了 configured bash as my terminal,并希望它像传统的 Emacs 键绑定一样,也就是说,让它终止行尾。

我尝试在用户设置中禁用此配置的默认键绑定,但没有成功:

"commandsToSkipShell": [
        "workbench.action.terminal.clear"
      ]

如何让终端服从我20年训练的肌肉记忆?

【问题讨论】:

    标签: terminal visual-studio-code keyboard-shortcuts vscode-settings


    【解决方案1】:

    刚刚发现!您需要在配置前加上一个减号。编辑%APPDATA%\Code\User\settings.json 并输入此密钥:

    "terminal.integrated.commandsToSkipShell": [
        "-workbench.action.terminal.clear"
      ]
    

    似乎配置选项已重命名,所以我编辑了现在对我有用的内容(2018 年 11 月)。

    【讨论】:

    • 这不起作用。来自documentation:“默认情况下,当和弦键绑定是最高优先级键绑定时,它将始终跳过终端外壳(绕过terminal.integrated.commandsToSkipShell)并由VS Code而不是终端进行评估。”
    【解决方案2】:

    对于那些在 2019 年 11 月查看此内容的人,只需将以下内容复制并粘贴到您的 keybindings.json 文件中:

    {
        "key": "ctrl+k",
        "command": "-workbench.action.terminal.clear",
        "when": "terminalFocus"
    },
    

    【讨论】:

    • 我还是要按ctrl+k两次正常吗?
    • 我从用户设置中更改了这个,然后在 keybindings.json 中添加了“-”。可能还有另一个与“workbench.action.clear”相关的键绑定需要删除。您也可以尝试像键绑定一样保存 json 文件,手动应用它们并再次保存。
    • 这没有回答问题:它清除终端,而问题是如何杀死直到行尾。
    • 这是清除终端的原始设置,但是在“工作簿”之前添加减号应该只是从光标位置清除到行尾。我很确定它在 Linux Mint 上运行良好,但我明天会再次尝试测试它。
    • 我试过了,没发现有什么区别,在终端使用ctrl+k还是触发和弦。
    【解决方案3】:

    遇到了同样的问题。将此 sn-p 添加到 keybindings.json 有效:

    {
      "key": "ctrl+k",
      "command": "deleteAllRight",
      "when": "terminalFocus"
    }
    

    【讨论】:

    • 这对我有用,和弦仍然有效,但我可以使用 ctrl+k 清除终端,而不会像我的肌肉记忆那样触发和弦。
    • 这太棒了,因为它确实可以正确杀死,然后Ctrl+Y 也可以正常工作!
    • 截至 2020 年,这是现在的正确答案。使用 Shift-Ctrl-P 查找keyboard.json 文件并搜索keybindings
    • 仅供参考:如果您之前从未打开过keybindings.json,它将不会出现在搜索中;你要找的是Preferences: Open Keyboard Shortcuts (JSON)
    【解决方案4】:

    如果您对 Unix shell 有多年的记忆力,并且想要阻止 VSCode 捕获您的键盘快捷键,请关闭 allowChords。在较新的 VSCode 版本中,您只需打开 File -> Preferences -> User (tab),搜索 allowChords 并取消选中即可。

    或者您可以编辑您的%APPDATA%\Code\User\settings.json 文件并输入:

       "terminal.integrated.allowChords": false
    

    现在很多终端快捷方式都可以使用了:

    • Ctrl+K 杀到行尾,
    • Ctrl-Y 从上方粘贴已终止的行
    • Ctrl+R 在您的历史记录中搜索您的命令,
    • 然后 Ctrl+A 转到行首

    我在这个帖子中有另一个答案,但我认为这是一个更好的解决方案。这是documentation

    如果您只想修复 Ctrl-K 行为,请查看其他答案。

    【讨论】:

    • 我希望我能投票两次!谢谢。
    • 我想指出,VS Code 甚至在该配置的描述中说“当您希望 ctrl+k 进入您的 shell(而不是 VS Code)时,将此设置为 false 特别有用。”
    • 好的。但是没有转义序列可以在不更改 VS Code 默认行为的情况下将控制字符发送到终端? vi 或 bash 中的 Ctrl+V 之类的东西按字面意思插入下一个控制字符(不解释它)。
    • 这解决了我在集成终端中尝试使用 VIM 二合字母 (vimhelp.org/digraph.txt.html) 时遇到的问题。谢谢!
    • 我感觉就像一个脊椎按摩师从我的生活中释放了多年的紧张感
    猜你喜欢
    • 1970-01-01
    • 2021-05-23
    • 1970-01-01
    • 2013-02-20
    • 1970-01-01
    • 1970-01-01
    • 2019-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多