【发布时间】:2019-03-19 07:01:14
【问题描述】:
在Visual Studio Code 的终端(PowerShell)中,我试图点击Ctrl+Backspace 删除最后一个单词,但它只是将^W 添加到行尾,有什么想法可以解决这个问题吗?它可以在 PowerShell 中的 Visual Studio Code 之外正常工作。
【问题讨论】:
标签: powershell visual-studio-code
在Visual Studio Code 的终端(PowerShell)中,我试图点击Ctrl+Backspace 删除最后一个单词,但它只是将^W 添加到行尾,有什么想法可以解决这个问题吗?它可以在 PowerShell 中的 Visual Studio Code 之外正常工作。
【问题讨论】:
标签: powershell visual-studio-code
ctrl+backspace 以某种方式映射到 vscode 集成终端中的ctrl+w(可能是一个错误),现在我们需要设置ctrl+w 绑定以显式删除单词。很奇怪吧?
Set-PSReadLineKeyHandler -Chord 'Ctrl+w' -Function BackwardKillWord
请注意,这仅适用于当前终端会话。
要使这种行为持续存在,您可以在配置文件Microsoft.PowerShell_profile.ps1 文件中设置它。如果您的 powershell version 文件夹中不存在该文件,请创建该文件。
C:\Program Files\PowerShell\6\Microsoft.PowerShell_profile.ps1
写在顶部
if ($env:TERM_PROGRAM -eq "vscode") {
Set-PSReadLineKeyHandler -Chord 'Ctrl+w' -Function BackwardKillWord
}
【讨论】:
$profile 来查看Microsoft.PowerShell_profile.ps1 文件的位置。
根据最新评论 https://github.com/microsoft/vscode/issues/68167 我已经修改了 JerryGoyal 的答案,因此我们不必修改绑定:
将以下内容放在您的 Microsoft.PowerShell_profile.ps1 配置文件的顶部(在终端中输入 $profile 以找到它,如果它不存在,您可能需要创建一个)
if ($env:TERM_PROGRAM -eq "vscode") {
Set-PSReadLineOption -EditMode Emacs
}
这对我有用(vscode 1.43)
【讨论】:
看起来像是正在跟踪的问题:请参阅workbench.action.terminal.deleteWordLeft Doesn't Work, Outputs ^W。
在 git bash 终端中对我来说很好,但在 vscode 1.36 中对我来说不是 powershell。
vscode v1.45 对这些终端命令进行了一些更改,例如 deleteWordLeft。 Ctrl+Backspace 现在是否更适合您?
【讨论】:
VSCode 1.48(2020 年 7 月)可能会有所帮助。
Issue 98404 确实允许 ctrl+backspace 删除 cmd.exe 中的整个单词,这可能适用于powershell 会话。
见PR 98494:
之前(当它不工作时):
之后(工作):
【讨论】:
检查您的设置中的键绑定以确保它仍然设置。
在添加新扩展或更新时,我遇到了一些奇怪的键绑定被删除/更改的问题。您可能只需要重新添加它。
Key Bindings for Visual Studio Code
当然,VSCode 和 PowerShell 是两个不同的环境。如果你拆分你的终端窗口(我一直这样做是为了我自己的工作用例),你最终会得到 VSChost 和标准控制台主机,你会发现虽然你在 VSCode 中,但它们的行为不同。
如果您还没有这样做,您可能需要自定义 VSCode 配置文件,这是集成控制台将读取的内容,因为 consolehost 将读取您的 PowerShell 控制台配置文件而不是您的 ISE 配置文件。
【讨论】:
要添加到 JerryGoyal 答案:
如果您在查找配置文件文件夹和/或使其正常工作时遇到困难。这对我有帮助。
【讨论】:
当我按下 Ctrl+Backspace 时,它显示 ^W。
只需在 vscode 控制台中运行此命令
Set-PSReadLineOption -EditMode Emacs
现在可以使用了!
【讨论】: