【发布时间】:2019-09-06 15:14:21
【问题描述】:
在我的标准 MacOS 终端中,alt+delete 删除到前面的单词,但在 VS Code 嵌入式终端中它删除到前面的 空格。奇怪的是,alt+left 正确地将光标移动到前一个单词。例如,给定光标前的foo bar.baz,alt+delete 将删除bar.baz,而alt+left 将光标移动到baz 的开头。有没有办法获得正确的删除词功能?
【问题讨论】:
在我的标准 MacOS 终端中,alt+delete 删除到前面的单词,但在 VS Code 嵌入式终端中它删除到前面的 空格。奇怪的是,alt+left 正确地将光标移动到前一个单词。例如,给定光标前的foo bar.baz,alt+delete 将删除bar.baz,而alt+left 将光标移动到baz 的开头。有没有办法获得正确的删除词功能?
【问题讨论】:
你想要的命令叫做deleteWordEndLeft。根据实验,这会在左侧删除所有连续的非空白字符,然后是所有连续的空白字符。
之前:
this is some example text
^
cursor (to left of 'm')
deleteWordEndLeft之后:
this is somemple text
^
cursor (to left of 'm')
希望这是您想要的行为! (很抱歉一开始就弄错了。)
要绑定它,请进入键绑定(文件→首选项→键盘快捷键)并使用搜索框搜索deleteWordEndLeft。这将向您显示现有的键绑定(如果有的话;它在 Windows 上默认不绑定)。您可以通过右键单击绑定并选择更改键绑定(如果已绑定)或添加键绑定(如果未绑定)来更改键绑定。
【讨论】:
curl https://stackoverflow.com/questions/57824640/how-to-delete-the-prior-word-with-vs-code-terminal/57830840#57830840 如果光标位于该 URL 的末尾并且我按 @987654327 @,我希望它阅读:curl https://stackoverflow.com/questions/57824640/how-to-delete-the-prior-word-with-vs-code-terminal/57830840#.
deleteWordEndLeft,只有@ 987654330@.
我认为您正在寻找的是 deleteWordPartLeft,它对我来说在 MacOS 上绑定到 ^optionBkSpc。
【讨论】:
对于 bash,我认为是 Ctrl+w。
【讨论】:
ctrl+w 与我的 Mac 上的 alt+delete 不同。前者删除前面的空白(如 vs 代码上的alt+delete),而后者删除最后一个块。
2020 年 7 月更新:对于 cmd.exe,请参阅 https://github.com/microsoft/vscode/pull/98494
看来 Ctrl+H 很快就能删除left这个词了。
在我在其他地方看到 Esc+Delete 有效的评论后,使用sendSequence 进行更多调查这对我有用(在 bash 上)删除回最后一个非单词字符。
{
"key": "alt+delete", // whatever keybinding you want
"command": "workbench.action.terminal.sendSequence",
"args": { "text": "\u001b\u007f" }, // delete word left to first non-word character
// = escape+delete
"when": "terminalFocus"
},
它不会同时删除现在尾随的非单词字符,您必须 Backspace 将其剪掉。
在 v1.45 中可以设置集成终端的单词分隔符,见https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_45.md#control-double-click-word-selection 使用此设置:
terminal.integrated.wordSeparators // only affects double-click selections, not deletions
更新:同样在 v1.45 中,deleteWordLeft 等终端命令已被删除。 https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_45.md#removal-of-several-prompt-related-commands
以下命令已被删除:
workbench.action.terminal.deleteWordLeft workbench.action.terminal.deleteWordRight workbench.action.terminal.deleteToLineStart workbench.action.terminal.moveToLineStart workbench.action.terminal.moveToLineEnd这些命令通过发送一个特定的字符序列到 终端,这是基于什么命令的最大努力猜测 键绑定终端使用。这些命令的问题在于 他们是一个黑匣子,你需要逐字逐句地搜索 vscode 代码库来弄清楚它们是如何工作的。它们已被替换 带有
workbench.action.terminal.sendSequence的自定义键绑定 命令,它以通用的方式执行相同的操作。这些是高级键盘快捷键,无法在它们的 全部通过键盘快捷键 UI,因为它们包含参数,但 您可以通过运行 Preferences: Open 查看他们的 JSON 定义 默认键盘快捷键 (JSON) 命令:
这也应该可以帮助您了解如何使用powerful
sendSequencecommand。
要删除终端左侧的单词,您可以使用 Ctrl+Backspace。
但这会导致您不想要的相同行为(删除所有 bar.foo 而不仅仅是 foo),无论终端 wordSeparator 设置如何 - 不幸的是,这只影响双击选择而不是删除。
【讨论】: