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 在终端中杀死直到行尾?的主要内容,如果未能解决你的问题,请参考以下文章