Visual Studio Code
的终端(PowerShell)中,我想使用 Ctrl+Backspace
删除最后一个单词,但它只会在行末添加 ^W
,有什么解决办法吗?在 PowerShell 中以外的其他地方可以正常工作。Visual Studio Code
的终端(PowerShell)中,我想使用 Ctrl+Backspace
删除最后一个单词,但它只会在行末添加 ^W
,有什么解决办法吗?在 PowerShell 中以外的其他地方可以正常工作。ctrl+backspace
在 vscode 集成终端中被映射为 ctrl+w
(可能是一个错误),现在我们需要将 ctrl+w
绑定到显式删除单词的操作。很奇怪,对吧?
Set-PSReadLineKeyHandler -Chord 'Ctrl+w' -Function BackwardKillWord
请注意,这仅适用于当前的终端会话。
要使这种行为持久化,您可以在配置文件Microsoft.PowerShell_profile.ps1
文件中设置它。如果该文件不存在于您的PowerShell版本文件夹中,请创建该文件。
C:\Program Files\PowerShell\6\Microsoft.PowerShell_profile.ps1
在顶部写下
if ($env:TERM_PROGRAM -eq "vscode") {
Set-PSReadLineKeyHandler -Chord 'Ctrl+w' -Function BackwardKillWord
}
查看更多:强化你的 PowerShell
当我按下 Ctrl+Backspace 时,屏幕显示了 ^W
。
只需在 vscode 控制台中运行此命令:
Set-PSReadLineOption -EditMode Emacs
现在它可以正常工作了!
ctrl + 箭头键
让您跳过单词。 - cyclingLinguist将以下内容放在你的Microsoft.PowerShell_profile.ps1
配置文件顶部(在终端中输入$profile
查找它,如果不存在则可能需要创建一个)。
if ($env:TERM_PROGRAM -eq "vscode") {
Set-PSReadLineOption -EditMode Emacs
}
{
"key": "ctrl+backspace",
"command": "workbench.action.terminal.sendSequence",
"when": "terminalFocus",
"args": { "text": "\u0008" }
},
看起来这是一个正在被追踪的问题:请参见workbench.action.terminal.deleteWordLeft Doesn't Work, Outputs ^W。
在git bash终端中运行良好,但在powershell中截至vscode 1.36版本还不行。
vscode v1.45对这些终端命令进行了一些更改,例如deleteWordLeft
。现在Ctrl+Backspace对您是否更有效?
请检查您的设置中的按键绑定,确保它仍然设置正确。
当添加新扩展或更新时,我曾经遇到过按键绑定被删除/更改的奇怪情况。您可能只需要重新添加它。
当然,VSCode和PowerShell是两个不同的环境。如果您分割终端窗口(我经常为自己的工作使用案例这样做),您将得到VSChost和标准consolehost,您会发现虽然您在VSCode中,但它们的行为不同。
如果您还没有这样做,您可能想要自定义您的VSCode配置文件,这是集成控制台将读取的内容,而consolehost将读取您的PowerShell控制台配置文件而不是ISE配置文件。
补充JerryGoyal的答案:
如果您在查找配置文件夹和/或使其正常工作方面遇到困难。以下是帮助我的方法。
$profile
命令来查看Microsoft.PowerShell_profile.ps1
文件的位置。 - Zikoat$HOME\Documents\PowerShell
中创建一个就足够了。有关详细信息,请参见此链接。(PS:在该链接中还提到可以使用VS Code特定的配置文件,但在我的测试中,VS Code无法识别它。) - Steuerman