터미널 고급
Visual Studio Code의 통합 터미널에는 유니코드 및 이모지 지원, 사용자 정의 키 바인딩, 자동 응답 등 여러 고급 기능과 설정이 있습니다. 이 주제에서는 이러한 고급 기능을 자세히 설명합니다. VS Code나 통합 터미널을 처음 사용하는 경우 터미널 기본 주제를 먼저 검토하는 것이 좋습니다.
지속 세션
터미널은 두 가지 유형의 지속 세션을 지원합니다:
- 프로세스 재연결: 창을 다시 로드할 때(예: 확장 설치 후) 이전 프로세스에 재연결하고 내용을 복원합니다.
- 프로세스 복구: VS Code를 다시 시작할 때 터미널의 내용이 복원되고 프로세스가 원래 환경을 사용하여 다시 시작됩니다.
이 두 가지 지속 세션은 terminal.integrated.enablePersistentSessions
를 false
로 설정하여 비활성화할 수 있으며, 복원되는 스크롤백의 양은 terminal.integrated.persistentSessionScrollback
설정으로 제어됩니다. 프로세스 복구는 terminal.integrated.persistentSessionReviveProcess
로 독립적으로 구성할 수 있습니다.
창 간 터미널 이동
터미널 탭은 VS Code 창 간에 드래그 앤 드롭할 수 있습니다. 이는 명령 팔레트와 Terminal: Detach Session 및 Terminal: Attach to Session 명령을 통해 수동으로도 수행할 수 있습니다.
시작 시 터미널 동작 구성
창을 열 때 터미널 뷰가 보이면 지속 세션을 사용하여 터미널에 다시 연결하거나 새 셸을 생성합니다. 이 동작은 terminal.integrated.hideOnStartup
설정으로 세부 조정할 수 있습니다.
never
(기본값): 시작 시 터미널 뷰를 숨기지 않습니다.whenEmpty
: 지속 세션이 복원되지 않은 경우에만 터미널을 숨깁니다.always
: 지속 세션이 복원된 경우에도 항상 터미널을 숨깁니다.
키 바인딩과 셸
내장 애플리케이션으로서 통합 터미널은 VS Code 내에서 디스패치된 일부 키 바인딩을 가로채야 합니다.
구성 가능한 terminal.integrated.commandsToSkipShell
설정은 어떤 명령의 키 바인딩이 항상 "셸을 건너뛰고" 대신 VS Code의 키 바인딩 시스템에서 처리되어야 하는지를 결정합니다. 기본적으로 VS Code 경험에 필수적인 명령의 하드코딩된 목록이 포함되어 있지만 특정 명령을 추가하거나 제거할 수 있습니다:
{
"terminal.integrated.commandsToSkipShell": [
// 사이드바 가시성 토글 키 바인딩이 셸을 건너뛰도록 합니다
"workbench.action.toggleSidebarVisibility",
// 빠른 열기 키 바인딩을 셸로 보냅니다
"-workbench.action.quickOpen"
]
}
기본 명령의 전체 목록을 보려면 terminal.integrated.commandsToSkipShell
설정 세부 정보를 참조하십시오.
terminal.integrated.sendKeybindingsToShell
은 terminal.integrated.commandsToSkipShell
을 재정의하고 대부분의 키 바인딩을 셸로 디스패치하도록 구성할 수 있습니다. 그러나 이렇게 하면 Ctrl+F
와 같은 키 바인딩을 사용하여 찾기를 열 수 없게 됩니다.
코드
코드 키 바인딩은 두 개의 키 바인딩으로 구성됩니다. 예를 들어, Ctrl+K
를 누른 후 Ctrl+C
를 눌러 줄을 주석으로 변경합니다. 코드 키 바인딩은 기본적으로 셸을 건너뛰지만 terminal.integrated.allowChords
로 비활성화할 수 있습니다.
macOS 화면 지우기
macOS에서 Cmd+K
는 화면을 지우는 일반적인 터미널 키 바인딩이므로 VS Code도 이를 존중합니다. 이는 Cmd+K
코드가 작동하지 않음을 의미합니다. Cmd+K
코드를 활성화하려면 지우기 키 바인딩 제거를 수행하십시오:
{
"key": "cmd+k",
"command": "-workbench.action.terminal.clear"
}
또한, 키 바인딩 우선 순위로 인해 확장이 Cmd+K
키 바인딩을 기여하는 경우 이 키보드 단축키는 자동으로 재정의됩니다. 이 경우 사용자 키 바인딩에서 다시 정의하여 Cmd+K
지우기 키 바인딩을 다시 활성화할 수 있습니다. 사용자 키 바인딩은 확장 키 바인딩보다 우선 순위가 높습니다:
{
"key": "cmd+k",
"command": "workbench.action.terminal.clear",
"when": "terminalFocus && terminalHasBeenCreated || terminalFocus && terminalProcessSupported"
}
기호
VS Code의 메뉴에 액세스하기 위해 기호를 사용하는 것(예: 파일 메뉴의 Alt+F
)은 터미널에서 기본적으로 비활성화되어 있습니다. 이러한 키 이벤트는 셸에서 중요한 단축키인 경우가 많기 때문입니다. 기호를 활성화하려면 terminal.integrated.allowMnemonics
를 설정하십시오. 그러나 이렇게 하면 모든 Alt
키 이벤트가 셸로 전달되지 않습니다. 이 설정은 macOS에서는 아무런 효과가 없습니다.
사용자 정의 명령어 조합 키 바인딩
workbench.action.terminal.sendSequence
명령을 사용하여 터미널에 특정 텍스트 명령어 조합를 보낼 수 있습니다. 여기에는 셸에서 특별히 해석되는 이스케이프 명령어 조합가 포함됩니다. 이 명령을 사용하면 화살표 키, Enter
, 커서 이동 등을 보낼 수 있습니다.
예를 들어, 아래 명령어 조합는 커서 왼쪽의 단어를 건너뛰고(Ctrl+Left
) Backspace
를 누릅니다:
{
"key": "ctrl+u",
"command": "workbench.action.terminal.sendSequence",
"args": {
"text": "\u001b[1;5D\u007f"
}
}