Visual Studio代码-Ctrl + Backspace在Integrated Terminal中不起作用

时间:2018-10-14 20:21:03

标签: powershell visual-studio-code

Visual Studio Code的终端(PowerShell)中,我试图按Ctrl+Backspace删除最后一个单词,但是它只是在行尾添加了^W,任何想法解决这个问题?在PowerShell中的Visual Studio Code外部运行良好。

7 个答案:

答案 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
}

键绑定参考:
 https://docs.microsoft.com/en-gb/previous-versions/powershell/module/psreadline/Get-PSReadLineKeyHandler?view=powershell-5.0

https://docs.microsoft.com/en-gb/previous-versions/powershell/module/psreadline/set-psreadlinekeyhandler?view=powershell-5.0

答案 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

之前(在 不起作用时):

https://user-images.githubusercontent.com/39542938/82770461-bca2ce00-9e06-11ea-8f76-1b168cf03e3d.gif

(工作后):

https://user-images.githubusercontent.com/39542938/82770356-430ae000-9e06-11ea-9229-288667544326.gif

答案 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答案中:

如果您在查找配置文件文件夹和/或使其无法工作时遇到困难。这就是帮助我的地方。

  1. 我创建了文件夹c:\ Users \ YOUR_USER_NAME \ Documents \ WindowsPowerShell \
  2. 在此处放置Microsoft.PowerShell_profile.ps1
  3. Powershell会告诉您有关安全性问题。您必须通过以管理员身份运行powershell来允许此操作。
  4. 比类型Set-ExecutionPolicy RemoteSigned。
  5. 回答Y(是)。这显然需要您自担风险!

答案 6 :(得分:0)

当我按下 Ctrl+Backspace 时它显示 ^W

只需在 vscode 控制台中运行此命令

Set-PSReadLineOption -EditMode Emacs

现在可以了!