如何使用 VS Code 终端删除前面的单词

web*_*rc2 15 macos visual-studio-code

在我的标准 MacOS 终端中,alt+delete 会删除到前面的单词,但在 VS Code 嵌入式终端中,它会删除到前面的space。奇怪的是,alt+left 正确地将光标移动到前一个单词。例如,foo bar.baz在光标之前给出,alt+delete 将删除bar.baz,而 alt+left 将光标移动到 的开头baz。有没有办法获得正确的删除单词功能?

Mar*_*ark 7

2020 年 7 月更新:有关 cmd.exe,请参阅https://github.com/microsoft/vscode/pull/98494

看来Ctrl+H很快就能删除 left 这个词了。


在我在其他地方看到一条评论说+可以删除回最后一个非单词字符后,对此进行更多调查sendSequence 对我有用(在 bash 上)。EscDelete

{
  "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"
},
Run Code Online (Sandbox Code Playgroud)

它不会同时删除现在尾随的非单词字符,您必须将Backspace其剪掉。


在 v1.45 中可以设置集成终端的单词分隔符,请参阅https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_45.md#control-double-click-word- 使用此设置进行选择:

terminal.integrated.wordSeparators  // only affects double-click selections, not deletions
Run Code Online (Sandbox Code Playgroud)

更新:同样在 v1.45 中,类似的终端命令deleteWordLeft已被删除。 https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_45.md#removal-of-several-prompt-lated-commands

以下命令已被删除:

workbench.action.terminal.deleteWordLeft
workbench.action.terminal.deleteWordRight
workbench.action.terminal.deleteToLineStart
workbench.action.terminal.moveToLineStart
workbench.action.terminal.moveToLineEnd
Run Code Online (Sandbox Code Playgroud)

这些命令通过向终端发送特定的字符序列来工作,这是根据终端使用的命令键绑定进行的尽力猜测。这些命令的问题在于它们是一个黑匣子,您需要逐字搜索 vscode 代码库才能弄清楚它们是如何工作的。它们已被命令的自定义键绑定所取代workbench.action.terminal.sendSequence ,该命令以通用方式执行相同的操作。

这些是高级键盘快捷键,无法通过键盘快捷键 UI 完整查看,因为它们包含参数,但您可以通过运行“首选项:打开默认键盘快捷键 (JSON)”命令来查看它们的 JSON 定义:

这也应该可以帮助您学习如何使用强大的sendSequence 命令

要删除终端左侧的单词,您可以使用Ctrl+ Backspace

但这会导致您不想要的相同行为(删除所有bar.foo而不是仅删除foo),无论终端 wordSeparator 设置如何 - 不幸的是,它只影响双击选择而不是删除。


ush*_*huz 6

结合MarkRxJx的建议,设置alt+在 macOS 上backspacedeleteWordPartLeft我工作。

{
    "key": "alt+backspace",
    "command": "workbench.action.terminal.deleteWordPartLeft", 
    "when": "terminalFocus"
},
Run Code Online (Sandbox Code Playgroud)


小智 3

我认为您正在寻找的是 deleteWordPartLeft ,它对我来说在 MacOS 上绑定到 ^optionBkSpc 。