VSCode:如何使 Ctrl+k 在终端中杀死直到行尾?

Posted

技术标签:

【中文标题】VSCode:如何使 Ctrl+k 在终端中杀死直到行尾?【英文标题】:VSCode: how to make Ctrl+k kill till the end of line in the terminal? 【发布时间】: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年训练的肌肉记忆?

【问题讨论】:

【参考方案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) 时遇到的问题。谢谢! 我感觉就像一个脊椎按摩师从我的生活中释放了多年的紧张感

以上是关于VSCode:如何使 Ctrl+k 在终端中杀死直到行尾?的主要内容,如果未能解决你的问题,请参考以下文章

vscode 配置

2019-09-11 VSCode清除 终端 历史快捷键

当我中断 ssh 本身时,如何使 ssh 杀死远程进程?

vscode修改扩展位置怎么还有argv.json

快捷键的使用

Shell终端快捷键总结(mac)