
これを正しく理解する方法に関するドキュメントを読んでみましたが、さらに混乱するばかりでした。
ドキュメント\u0000
状態コマンドは、このページの形式とリンクでのみ機能しますXTerm 制御シーケンスこの\u0000
形式については何も言及しません。
見つかったこれスタックリンク、それは少し役立ちましたが、私はまだ私ができるCTRL
+のコードを取得する方法がわかりませんv
のために使用しますterminal.sendSequence
どのような助けでも大歓迎です
ターミナルにCTRL
+ が必要な理由について詳しく知りたい場合は 、以下をお読みください。v
terminal.sendSequence
現在、VScode では、ターミナルへのクリップボードの貼り付けは、Powershell の PSReadline ではなく、VScode によって処理されます。
なぜこれが重要なのでしょうか? クリップボードに複数の行がある場合、VScode は一度に 1 行ずつ貼り付けて実行します。つまり、次のようになります。
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 が貼り付けを処理する問題は修正されましたが、ターミナルの便利な VSCode 検索バーのキーを含む、他のすべてのキーバインドも PSReadline が処理するようになりました。
私は、Vscodeで処理したいコマンドをすべてリストアップするルートをたどりたくありません。terminal.integrated.commandsToSkipShell
答え1
のリンクあなたは参考文献を提供しましたjs のさまざまな制御コードを含むファイル。
リストされているものの 1 つは次のものです^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"
}
},
インタラクティブ ノード シェルに複数行のコンテンツを送信しようとしたときにも同様の問題が発生し、次のように選択したテキストを.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