
我嘗試閱讀有關如何正確解決此問題的文檔,但我變得更加困惑。
文件狀態命令僅適用\u0000
於此頁面的格式和鏈接XTerm 控制序列不要提及這種\u0000
格式。
成立這CTRL
堆疊鏈接,它有所幫助,但我仍然不明白如何獲得+v
的程式碼
用於terminal.sendSequence
任何幫助將非常受歡迎
如果您需要上下文來了解為什麼我需要 CTRL
+v
作為終端 via terminal.sendSequence
,請閱讀以下內容。
目前在 VScode 中,剪貼簿會貼到終端機是由 VScode 處理的,而不是 Powershell PSReadline。
為什麼這很重要?如果剪貼簿中有多行,VScode 將一次貼上並執行一行,因此如下:
Function Hello{
Write-Host "Hello World"
}
當貼上到 Powershell 終端機時:第 1 行:
Function Hello{
2號線:
Write-Host "Hello World"
第 3 行:
}
我讀了又讀,試圖扭轉這個局面。這關聯提到主機進程弄亂了剪貼板,因此讓 PSReadline 來處理貼上
我能夠確認 VScode 就是這種情況,並使用了以下設定:
"terminal.integrated.sendKeybindingsToShell": true,
" `": [
"workbench.action.focusActiveEditorGroup"
],
這解決了問題,PSReadline 無需處理貼上,但現在 PSReadline 還處理所有其他鍵綁定,包括方便的終端 VSCode 查找欄的按鍵。
我真的不想沿著列出我想要 Vscode 處理的每個命令的路線terminal.integrated.commandsToSkipShell
答案1
這關聯您提供了參考資料Xterm.js包含各種控制代碼的檔案。
其中列出的一項是^V
:
/** Synchronous Idle (Caret = ^V) */
export const SYN = '\x16';
使用後面的字符並將其替換為代碼\x
中的最後 2 個字符\u00NN
例如,Ctrl+v
使用快捷方式在終端機中觸發Ctrl+k Ctrl+enter
:
{
"key": "ctrl+k ctrl+enter",
"command": "workbench.action.terminal.sendSequence",
"args": {
"text": "\u0016"
}
},
當我嘗試將多行內容傳送到互動式節點 shell 時,我遇到了類似的問題,並且必須將所選文字包裝在 和 之間,.editor
如下Ctrl+D
所示:
{
"key": "ctrl+k ctrl+enter",
"command": "workbench.action.terminal.sendSequence",
"when": "editorTextFocus && terminalIsOpen",
"args": {
"text": ".editor\n${selectedText}\n\u0004"
}
},
請注意,\u0004
對應於Ctrl+D
上面的範例。