在Visual Studio Code
的终端(PowerShell)中,我试图按Ctrl+Backspace
删除最后一个单词,但是它只是在行尾添加了^W
,任何想法解决这个问题?在PowerShell中的Visual Studio Code外部运行良好。
答案 0 :(得分:1)
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
}
答案 1 :(得分:1)
基于最新评论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)
答案 2 :(得分:1)
VSCode 1.48(2020年7月)可能会有所帮助。
Issue 98404确实允许 ctrl + backspace 删除cmd.exe
中的整个单词,这也可以用于Powershell会话。
请参见PR 98494:
之前(在 不起作用时):
(工作后):
答案 3 :(得分:0)
检查设置中的键盘绑定,以确保它仍然设置。
添加新扩展名或更新时,键绑定被删除/更改时,我有些奇怪。您可能只需要重新添加即可。
Key Bindings for Visual Studio Code
当然,VSCode和PowerShell是两个不同的环境。如果您拆分终端窗口(我会一直使用我自己的工作用例进行此操作),那么最终您将获得VSChost和标准consolehost,并且您会发现尽管您使用的是VSCode,但它们的行为有所不同。>
如果您尚未这样做,则可能要自定义您的VSCode配置文件,这是集成控制台将读取的内容,因为consolehost将读取您的PowerShell控制台配置文件而不是ISE配置文件。
答案 4 :(得分:0)
看起来像一个正在跟踪的问题:请参见workbench.action.terminal.deleteWordLeft Doesn't Work, Outputs ^W。
在git bash终端中对我来说工作正常,但从vscode 1.36开始,powershell不适用于我。
答案 5 :(得分:0)
要添加到JerryGoyal答案中:
如果您在查找配置文件文件夹和/或使其无法工作时遇到困难。这就是帮助我的地方。
答案 6 :(得分:0)
当我按下 Ctrl+Backspace 时它显示 ^W
。
只需在 vscode 控制台中运行此命令
Set-PSReadLineOption -EditMode Emacs
现在可以了!