Macos 如何使用VS代码终端删除前一个单词
在我的标准MacOS终端中,alt+delete删除到前面的单词,但在VS代码嵌入式终端中,它删除到前面的空格。奇怪的是,alt+left正确地将光标移动到前面的单词。例如,给定光标前面的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。在实验中,这会从左侧删除所有连续的非空白字符,然后删除所有连续的空
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
。