簡體   English   中英

Visual Studio Code - Ctrl+Backspace 在集成終端中不起作用

[英]Visual Studio Code - Ctrl+Backspace not working in Integrated Terminal

Visual Studio Code的終端 (PowerShell) 中,我試圖Ctrl+Backspace刪除最后一個詞,但它只是在行尾添加^W ,有什么解決辦法嗎? 它在 PowerShell 中的 Visual Studio Code 之外工作正常。

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
}

鍵綁定參考:
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

看起來正在跟蹤一個問題:請參閱workbench.action.terminal.deleteWordLeft 不起作用,輸出 ^W

在 git bash 終端中對我來說很好用,但在 vscode 1.36 中對 powershell 不起作用。


vscode v1.45 對這些終端命令進行了一些更改,例如deleteWordLeft Ctrl+Backspace 現在更適合您嗎?

請參閱https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_45.md#removal-of-several-prompt-related-commands

根據最新評論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)

VSCode 1.48(2020 年 7 月)可能會有所幫助。
問題 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

檢查設置中的鍵綁定以確保它仍然設置。

在添加新擴展或更新時,鍵綁定被刪除/更改時,我遇到了一些奇怪的問題。 您可能只需要重新添加它。

Visual Studio Code 的鍵綁定

當然VSCode和PowerShell是兩種不同的環境。 如果您拆分終端窗口(我一直在為自己的工作用例執行此操作),您最終會得到 VSChost 和標准控制台主機,您會發現盡管您使用的是 VSCode,但它們的行為有所不同。

如果您還沒有這樣做,您可能需要自定義集成控制台將讀取的 VSCode 配置文件,而控制台主機將讀取您的 PowerShell 控制台配置文件,而不是您的 ISE 配置文件。

添加到 JerryGoyal 答案:

如果您在查找配置文件文件夾和/或使其正常工作時遇到困難。 這就是幫助我的東西。

  1. 我創建了文件夾 c:\\Users\\YOUR_USER_NAME\\Documents\\WindowsPowerShell\\
  2. 將 Microsoft.PowerShell_profile.ps1 放在那里
  3. Powershell 會告訴您有關安全問題的信息。 您必須通過以管理員身份運行 powershell 來允許此操作。
  4. 比類型 Set-ExecutionPolicy RemoteSigned。
  5. 回答 Y(是)。 這顯然是您自擔風險!

當我按下Ctrl + Backspace時,它顯示^W

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

Set-PSReadLineOption -EditMode Emacs

現在它起作用了!

將此添加到 vs 代碼中的 keybindings.json

 {
    "key": "ctrl+backspace",
    "command": "workbench.action.terminal.sendSequence",
    "when": "terminalFocus",
    "args": { "text": "\u0017" }
  },

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM