Terminal.sendSequence를 통해 CTRL + v를 터미널로 보내는 방법은 무엇입니까?

Terminal.sendSequence를 통해 CTRL + v를 터미널로 보내는 방법은 무엇입니까?

나는 이것을 올바르게 파악하는 방법에 대한 문서를 읽으려고 노력했지만 더욱 혼란스러워졌습니다.

문서\u0000상태 명령은 이 페이지의 형식과 링크 에서만 작동합니다.XTerm 제어 시퀀스\u0000이 형식 에 대해서는 언급하지 마세요 .

설립하다이것CTRL스택 링크, 약간 도움이 되었지만 + 에 대한 코드를 얻는 방법을 아직도 이해하지 못합니다 v.

사용terminal.sendSequence

어떤 도움이라도 정말 환영받을 것입니다.

를 통해 터미널에 CTRL+가 필요한 이유에 대한 컨텍스트가 필요하면 다음을 읽으십시오.vterminal.sendSequence


현재 VScode에서 클립보드를 터미널에 붙여넣는 작업은 Powershell PSReadline이 아닌 VScode에서 처리됩니다.

이것이 왜 중요합니까? 클립보드에 여러 줄이 있는 경우 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"
  }
},

여러 줄의 콘텐츠를 대화형 노드 셸로 보내려고 할 때 비슷한 문제가 있었고 선택한 텍스트를 다음과 같이 줄바꿈해야 .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

관련 정보