Macos 如何使用VS代码终端删除前一个单词

Macos 如何使用VS代码终端删除前一个单词,macos,visual-studio-code,Macos,Visual Studio Code,在我的标准MacOS终端中,alt+delete删除到前面的单词,但在VS代码嵌入式终端中,它删除到前面的空格。奇怪的是,alt+left正确地将光标移动到前面的单词。例如,给定光标前面的foo bar.baz,alt+delete将删除bar.baz,而alt+left将光标移动到baz的开头。有没有办法获得正确的delete word功能?对于bash,我认为是Ctrl+w。您需要的命令称为deleteWordEndLeft。在实验中,这会从左侧删除所有连续的非空白字符,然后删除所有连续的空

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

对于bash,我认为是Ctrl+w。

您需要的命令称为
deleteWordEndLeft
。在实验中,这会从左侧删除所有连续的非空白字符,然后删除所有连续的空白字符

之前:

  this is some example text
                  ^
                cursor (to left of 'm')
deleteWordEndLeft
之后:

  this is somemple text
              ^
            cursor (to left of 'm')
希望这就是你想要的行为!(很抱歉一开始就弄错了。)


要绑定它,请进入密钥绑定(文件)→ 偏好→ 键盘快捷键)并使用搜索框搜索
deleteWordEndLeft
。这将显示现有的密钥绑定(如果有的话;在Windows上默认情况下不绑定)。您可以通过右键单击绑定并选择更改键绑定(如果绑定)或添加键绑定(如果未绑定)来更改键绑定。

我想您要查找的是deleteWordPartLeft,它为我绑定到MacOS上的^optionBkSpc。

2020年7月更新:有关cmd.exe,请参阅

看起来Ctrl+H很快就能删除单词left


关于
sendSequence
的更多调查这对我来说很有效(在bash上),因为我在别处看到一条评论,说Esc+Delete可以删除最后一个非单词字符

{
  "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"
},
它不会同时删除尾随的非单词字符,您必须退格才能将其删除


在v1.45中,可以设置集成终端的字分隔符,请参阅 使用此设置:

terminal.integrated.wordSeparators  // only affects double-click selections, not deletions

更新:在v1.45中,也删除了诸如
deleteWordLeft
等终端命令

已删除以下命令:

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)命令:

这也将帮助您学习如何使用

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


但这会导致您不想要的相同行为(删除所有的
bar.foo
,而不是只删除
foo
),而不考虑终端字分隔符设置-这只会影响双击选择,而不是删除。很遗憾,

将和建议的内容结合起来,将alt+backspace设置为
deleteWordPartLeft
work's for me on macOS

{
    "key": "alt+backspace",
    "command": "workbench.action.terminal.deleteWordPartLeft", 
    "when": "terminalFocus"
},

ctrl+w
与我的mac电脑上的
alt+delete
不同。前者删除前一个空格(如vs code上的
alt+delete
),而后者删除最后一个块。这已经绑定到alt+delete,它会删除前一个空格,而不是问题中描述的删除错误行为。@weberc2哎呀,很抱歉误读了这个问题。我已经编辑了我的答案。嗯,显然VS代码对终端和主编辑器有不同的快捷方式。我特别指的是终端,我想要的行为是能够删除URL中的最后一个单词:
curlhttps://stackoverflow.com/questions/57824640/how-to-delete-the-prior-word-with-vs-code-terminal/57830840#57830840
如果光标位于该URL的末尾,并且我按了
alt+backspace
,我希望它是:
curlhttps://stackoverflow.com/questions/57824640/how-to-delete-the-prior-word-with-vs-code-terminal/57830840#
。有趣的是,编辑器的行为正常,但终端没有。@weberc2浏览可用的命令(Ctrl+Shift+P,“首选项:打开默认键盘快捷键(JSON)”,似乎终端没有
deleteWordEndLeft
,只有
deleteWordLeft