이 출시되었습니다! 11월의 새로운 기능 및 수정 사항을 읽어보세요.

Visual Studio Code의 키보드 단축키

Visual Studio Code를 사용하면 키보드에서 대부분의 작업을 직접 수행할 수 있습니다. 이 문서는 VS Code에 포함된 기본 키보드 단축키를 수정하는 방법을 설명합니다.

참고

Mac에서 이 페이지를 방문하면 Mac용 키보드 단축키가 표시됩니다. Windows 또는 Linux를 사용하여 방문하면 해당 플랫폼의 키가 표시됩니다. 다른 플랫폼의 키보드 단축키가 필요한 경우 관심 있는 키 위에 마우스 커서를 놓으십시오.

키보드 단축키 편집기

VS Code는 키보드 단축키 편집기를 통해 풍부한 키보드 단축키 편집 환경을 제공합니다. 이 편집기는 키보드 단축키가 있거나 없는 모든 사용 가능한 명령을 나열하고 사용 가능한 작업을 사용하여 키보드 단축키를 변경, 제거 또는 재설정할 수 있도록 합니다. 명령 또는 키보드 단축키를 찾으려면 검색 상자를 사용하여 명령 또는 바로 가기를 입력하여 목록을 필터링하십시오.

키보드 단축키 편집기를 열려면 파일 > 기본 설정 > 키보드 단축키 메뉴를 선택하거나 명령 팔레트에서 키보드 단축키 열기 명령(⌘K ⌘S (Windows, Linux Ctrl+K Ctrl+S))을 사용하십시오.

Keyboard Shortcuts

참고

키보드 단축키는 현재 키보드 레이아웃과 일치합니다. 예를 들어, 미국 키보드 레이아웃의 키보드 단축키 Cmd+\는 레이아웃이 독일어로 변경될 때 Ctrl+Shift+Alt+Cmd+7로 표시됩니다. 키보드 단축키를 변경하는 대화 상자는 키보드 레이아웃에 따라 올바르고 원하는 키보드 단축키를 할당합니다.

UI 작업에 대한 단축키 사용자 지정

UI 작업에 대한 키보드 단축키를 사용자 지정하려면 작업대에서 작업 항목을 마우스 오른쪽 버튼으로 클릭하고 키 바인딩 구성을 선택합니다. 이렇게 하면 해당 명령으로 필터링된 키보드 단축키 편집기가 열립니다. 작업에 when 절이 있으면 자동으로 포함되어 필요한 대로 키보드 단축키를 더 쉽게 설정할 수 있습니다.

키맵 확장

키맵 확장은 VS Code 단축키를 다른 편집기와 일치하도록 수정하므로 새로운 키보드 단축키를 배울 필요가 없습니다.

인기 있는 키맵 확장 목록을 얻으려면 파일 > 기본 설정 > 키보드 단축키 마이그레이션... 메뉴를 선택합니다. Marketplace에는 확장 프로그램의 키맵 카테고리도 있습니다.

키보드 단축키 참조

인쇄 가능한 버전의 기본 키보드 단축키를 제공합니다. 도움말 > 키보드 단축키 참조를 선택하여 인쇄하기 쉬운 축약된 PDF 버전을 표시합니다.

다음 링크를 통해 세 가지 플랫폼별 버전(미국 영어 키보드)에 액세스할 수 있습니다.

키보드 단축키 충돌 감지

확장이 많이 설치되어 있거나 키보드 단축키를 수정한 경우 동일한 키보드 단축키가 여러 명령에 매핑되는 키보드 단축키 충돌이 발생할 수 있습니다. 이는 특히 편집기 주위를 이동할 때 다른 키보드 단축키가 범위에 들어가고 나가는 경우 혼란스러운 동작을 초래할 수 있습니다.

키보드 단축키 목록에서 항목을 마우스 오른쪽 버튼으로 클릭하고 동일한 키 바인딩 표시를 선택하여 동일한 키보드 단축키를 가진 모든 항목을 확인합니다.

show keyboard shortcut conflicts menu

키보드 단축키 문제 해결

키보드 단축키 문제를 해결하려면 개발자: 키보드 단축키 문제 해결 토글 명령을 실행할 수 있습니다. 이렇게 하면 디스패치된 키보드 단축키 로깅이 활성화되고 해당 로그 파일이 포함된 출력 창이 열립니다.

그런 다음 원하는 키보드 단축키를 누르고 VS Code가 감지하는 키보드 단축키와 호출되는 명령을 확인할 수 있습니다.

예를 들어 macOS의 코드 편집기에서 cmd+/를 누르면 로깅 출력은 다음과 같습니다.

[KeybindingService]: / Received  keydown event - modifiers: [meta], code: MetaLeft, keyCode: 91, key: Meta
[KeybindingService]: | Converted keydown event - modifiers: [meta], code: MetaLeft, keyCode: 57 ('Meta')
[KeybindingService]: \ Keyboard event cannot be dispatched.
[KeybindingService]: / Received  keydown event - modifiers: [meta], code: Slash, keyCode: 191, key: /
[KeybindingService]: | Converted keydown event - modifiers: [meta], code: Slash, keyCode: 85 ('/')
[KeybindingService]: | Resolving meta+[Slash]
[KeybindingService]: \ From 2 keybinding entries, matched editor.action.commentLine, when: editorTextFocus && !editorReadonly, source: built-in.

예제 로그에서 첫 번째 keydown 이벤트는 MetaLeft 키(cmd)에 대한 것이며 디스패치될 수 없습니다. 두 번째 keydown 이벤트는 Slash 키(/)에 대한 것이며 meta+[Slash]로 디스패치됩니다. meta+[Slash]에 매핑된 두 개의 키보드 단축키 항목이 있었고 일치한 것은 editorTextFocus && !editorReadonlywhen 조건을 가진 명령 editor.action.commentLine에 대한 것이었습니다. 이는 내장 키보드 단축키 항목입니다.

수정된 키보드 단축키 보기

목록을 사용자 지정한 단축키만 표시하도록 필터링하려면 추가 작업 (...) 메뉴에서 사용자 키 바인딩 표시 명령을 선택합니다. 이렇게 하면 키보드 단축키 편집기에 @source:user 필터가 적용됩니다 (소스는 '사용자').

Default Keyboard Shortcuts

고급 사용자 지정

VS Code는 사용자 지정한 키보드 단축키를 keybindings.json 파일에 저장합니다. 고급 사용자 지정을 위해 keybindings.json 파일을 직접 수정할 수도 있습니다.

keybindings.json 파일 열기

  • 키보드 단축키 편집기를 열고 편집기 제목 표시줄 오른쪽에서 키보드 단축키 열기(JSON) 버튼을 선택합니다.

    Open Keyboard Shortcuts JSON button

  • 또는 명령 팔레트(⇧⌘P (Windows, Linux Ctrl+Shift+P))에서 기본 키보드 단축키 열기(JSON) 명령을 사용합니다.

키보드 규칙

VS Code의 키보드 단축키 구성은 키보드 규칙이라고도 합니다. 각 규칙은 다음 속성으로 구성됩니다.

  • key: 누른 키를 설명합니다. 예를 들어 ⌘F (Windows, Linux Ctrl+F).
  • command: 실행할 VS Code 명령의 식별자입니다. 예를 들어 Explorer 보기를 열기 위한 workbench.view.explorer.
  • when: (선택 사항) 현재 컨텍스트에 따라 평가되는 부울 식을 포함하는 절입니다.

코드(두 번의 별도 키 입력)는 두 키 입력을 공백으로 구분하여 설명합니다. 예: Ctrl+K Ctrl+C.

키가 눌리면 다음 평가 규칙이 적용됩니다.

  • 규칙은 아래에서 로 평가됩니다.
  • keywhen 절을 모두 일치하는 첫 번째 규칙이 수락됩니다.
  • 규칙이 발견되면 더 이상 규칙이 처리되지 않습니다.
  • 규칙이 발견되고 command가 설정된 경우 command가 실행됩니다.

추가 keybindings.json 규칙은 런타임 시 기본 규칙의 맨 아래에 추가되므로 기본 규칙을 덮어쓸 수 있습니다. keybindings.json 파일은 VS Code에서 감시되므로 VS Code를 실행하는 동안 편집하면 런타임 시 규칙이 업데이트됩니다.

키보드 단축키 디스패치는 JSON으로 표현된 규칙 목록을 분석하여 수행됩니다. 몇 가지 예는 다음과 같습니다.

// Keyboard shortcuts that are active when the focus is in the editor
{ "key": "home",            "command": "cursorHome",                  "when": "editorTextFocus" },
{ "key": "shift+home",      "command": "cursorHomeSelect",            "when": "editorTextFocus" },

// Keyboard shortcuts that are complementary
{ "key": "f5",              "command": "workbench.action.debug.continue", "when": "inDebugMode" },
{ "key": "f5",              "command": "workbench.action.debug.start",    "when": "!inDebugMode" },

// Global keyboard shortcuts
{ "key": "ctrl+f",          "command": "actions.find" },
{ "key": "alt+left",        "command": "workbench.action.navigateBack" },
{ "key": "alt+right",       "command": "workbench.action.navigateForward" },

// Global keyboard shortcuts using chords (two separate keypress actions)
{ "key": "ctrl+k enter",    "command": "workbench.action.keepEditor" },
{ "key": "ctrl+k ctrl+w",   "command": "workbench.action.closeAllEditors" },

허용되는 키

key는 수정자와 키 자체로 구성됩니다.

허용되는 수정자는 다음과 같습니다.

플랫폼 수정자
macOS Ctrl+, Shift+, Alt+, Cmd+
Windows Ctrl+, Shift+, Alt+, Win+
Linux Ctrl+, Shift+, Alt+, Meta+

허용되는 키는 다음과 같습니다.

  • f1-f19, a-z, 0-9
  • `, -, =, [, ], \, ;, ', ,, ., /
  • left, up, right, down, pageup, pagedown, end, home
  • tab, enter, escape, space, backspace, delete
  • pausebreak, capslock, insert
  • numpad0-numpad9, numpad_multiply, numpad_add, numpad_separator
  • numpad_subtract, numpad_decimal, numpad_divide

명령 인수

인수와 함께 명령을 호출할 수 있습니다. 이는 특정 파일이나 폴더에 대해 동일한 작업을 자주 수행하는 경우 유용합니다. 원하는 작업을 정확하게 수행하도록 사용자 지정 키보드 단축키를 추가할 수 있습니다.

다음은 텍스트를 인쇄하도록 Enter 키를 재정의하는 예입니다.

{
  "key": "enter",
  "command": "type",
  "args": { "text": "Hello World" },
  "when": "editorTextFocus"
}

type 명령은 첫 번째 인수로 {"text": "Hello World"}를 수신하고 기본 명령을 생성하는 대신 파일에 "Hello World"를 추가합니다.

인수를 받는 명령에 대한 자세한 내용은 내장 명령을 참조하십시오.

여러 명령 실행

키보드 단축키는 runCommands 명령을 사용하여 여러 명령을 순차적으로 실행하도록 구성할 수 있습니다.

  • 인수 없이 여러 명령 실행

    다음 예는 현재 줄을 복사하고 현재 줄을 주석으로 표시하고 커서를 복사된 줄로 이동합니다.

    {
      "key": "ctrl+alt+c",
      "command": "runCommands",
      "args": {
        "commands": [
          "editor.action.copyLinesDownAction",
          "cursorUp",
          "editor.action.addCommentLine",
          "cursorDown"
        ]
      }
    },
    
  • 명령에 인수 전달

    이 예는 새 명명되지 않은 TypeScript 파일을 만들고 사용자 지정 스니펫을 삽입합니다.

    {
      "key": "ctrl+n",
      "command": "runCommands",
      "args": {
        "commands": [
          {
            "command": "workbench.action.files.newUntitledFile",
            "args": {
              "languageId": "typescript"
            }
          },
          {
            "command": "editor.action.insertSnippet",
            "args": {
              "langId": "typescript",
              "snippet": "class ${1:ClassName} {\n\tconstructor() {\n\t\t$0\n\t}\n}"
            }
          }
        ]
      }
    },
    

runCommands로 실행되는 명령은 "args" 값을 첫 번째 인수로 수신합니다. 이전 예에서 workbench.action.files.newUntitledFile은 첫 번째이자 유일한 인수로 {"languageId": "typescript" }를 수신합니다.

여러 인수 전달

{
  "key": "ctrl+shift+e",
  "command": "runCommands",
  "args": {
    "commands": [
      {
        // command invoked with 2 arguments: vscode.executeCommand("myCommand", "arg1", "arg2")
        "command": "myCommand",
        "args": ["arg1", "arg2"]
      }
    ]
  }
}

첫 번째 인수로 배열을 전달하려면 배열을 다른 배열로 묶습니다: "args": [ [1, 2, 3] ].

키보드 단축키 제거

키보드 단축키를 제거하려면 키보드 단축키 편집기에서 해당 항목을 마우스 오른쪽 버튼으로 클릭하고 키 바인딩 제거를 선택합니다.

keybindings.json 파일을 사용하여 키보드 단축키를 제거하려면 command-를 추가하면 규칙이 제거 규칙이 됩니다.

다음은 예입니다.

// In Default Keyboard Shortcuts
...
{ "key": "tab", "command": "tab", "when": ... },
{ "key": "tab", "command": "jumpToNextSnippetPlaceholder", "when": ... },
{ "key": "tab", "command": "acceptSelectedSuggestion", "when": ... },
...

// To remove the second rule, for example, add in keybindings.json:
{ "key": "tab", "command": "-jumpToNextSnippetPlaceholder" }

빈 작업으로 특정 키보드 단축키 규칙을 재정의하려면 빈 명령을 지정할 수 있습니다.

// To override and disable any `tab` keyboard shortcut, for example, add in keybindings.json:
{ "key": "tab", "command": "" }

키보드 레이아웃

참고

이 섹션은 편집기에서 입력하는 것이 아니라 키보드 단축키에만 관련됩니다.

키는 가상 키의 문자열 표현이며 누를 때 생성되는 문자와 반드시 관련이 있는 것은 아닙니다. 더 정확하게는 다음과 같습니다.

  • 참조: 가상 키 코드(Windows)
  • tab: VK_TAB (0x09)
  • ;: VK_OEM_1 (0xBA)
  • =: VK_OEM_PLUS (0xBB)
  • ,: VK_OEM_COMMA (0xBC)
  • -: VK_OEM_MINUS (0xBD)
  • .: VK_OEM_PERIOD (0xBE)
  • /: VK_OEM_2 (0xBF)
  • `: VK_OEM_3 (0xC0)
  • [: VK_OEM_4 (0xDB)
  • \: VK_OEM_5 (0xDC)
  • ]: VK_OEM_6 (0xDD)
  • ': VK_OEM_7 (0xDE)
  • 등.

다른 키보드 레이아웃은 일반적으로 이러한 가상 키의 위치를 변경하거나 누를 때 생성되는 문자를 변경합니다. 표준 미국식과 다른 키보드 레이아웃을 사용하는 경우 Visual Studio Code는 다음과 같이 합니다.

모든 키보드 단축키는 현재 시스템의 키보드 레이아웃을 사용하여 UI에 렌더링됩니다. 예를 들어, 프랑스어(프랑스) 키보드 레이아웃을 사용하는 경우 Split Editor는 이제 Ctrl+*로 렌더링됩니다.

render keyboard shortcut

keybindings.json을 편집할 때 VS Code는 오해의 소지가 있는 키보드 단축키(파일에서 표준 미국 키보드 레이아웃의 문자로 표시되지만 현재 시스템의 키보드 레이아웃에서 다른 레이블의 키를 눌러야 하는 단축키)를 강조 표시합니다. 예를 들어 프랑스어(프랑스) 키보드 레이아웃을 사용할 때 기본 키보드 단축키 규칙은 다음과 같이 표시됩니다.

keybindings.json guidance

keybindings.json을 편집할 때 키보드 단축키 규칙을 입력하는 데 도움이 되는 UI 컨트롤도 있습니다. 키 바인딩 정의 컨트롤을 시작하려면 ⌘K ⌘K (Windows, Linux Ctrl+K Ctrl+K)를 누릅니다. 이 컨트롤은 키 입력을 수신하고 텍스트 상자에 직렬화된 JSON 표현을 렌더링하며 그 아래에는 현재 키보드 레이아웃에서 VS Code가 감지한 키가 표시됩니다. 원하는 키 조합을 입력했으면 Enter를 누르면 규칙 스니펫이 삽입됩니다.

keyboard shortcut widget

참고

Linux에서는 VS Code가 시작 시 현재 키보드 레이아웃을 감지한 다음 이 정보를 캐시합니다. 키보드 레이아웃을 변경할 때 VS Code를 다시 시작하는 것이 좋습니다.

키보드 레이아웃 독립적 바인딩

스캔 코드를 사용하면 키보드 레이아웃 변경으로 인해 변경되지 않는 키보드 단축키를 정의할 수 있습니다. 예를 들어.

{ "key": "cmd+[Slash]", "command": "editor.action.commentLine", "when": "editorTextFocus" }

허용되는 스캔 코드

  • [F1]-[F19], [KeyA]-[KeyZ], [Digit0]-[Digit9]
  • [Backquote], [Minus], [Equal], [BracketLeft], [BracketRight], [Backslash], [Semicolon], [Quote], [Comma], [Period], [Slash]
  • [ArrowLeft], [ArrowUp], [ArrowRight], [ArrowDown], [PageUp], [PageDown], [End], [Home]
  • [Tab], [Enter], [Escape], [Space], [Backspace], [Delete]
  • [Pause], [CapsLock], [Insert]
  • [Numpad0]-[Numpad9], [NumpadMultiply], [NumpadAdd], [NumpadComma]
  • [NumpadSubtract], [NumpadDecimal], [NumpadDivide]

when 절 컨텍스트

VS Code는 선택적 when 절을 통해 키보드 단축키가 활성화되는 시점을 정밀하게 제어할 수 있습니다. 키보드 단축키에 when 절이 없으면 키보드 단축키는 항상 전역적으로 사용할 수 있습니다. when 절은 키보드 단축키를 활성화하기 위해 참 또는 거짓으로 평가됩니다.

VS Code는 VS Code UI에서 어떤 요소가 보이고 활성화되었는지에 따라 다양한 컨텍스트 키와 특정 값을 설정합니다. 예를 들어, 내장 디버깅 시작 명령에는 적절한 디버거가 사용 가능하고(컨텍스트 debuggersAvailable이 참) 편집기가 디버그 모드가 아닐 때(컨텍스트 inDebugMode가 거짓)만 활성화되는 키보드 단축키 F5가 있습니다.

Start Debugging when clause in the Keyboard Shorts editor

기본 keybinding.json(기본 키보드 단축키 열기(JSON))에서 키보드 단축키의 when 절을 직접 볼 수도 있습니다.

{ "key": "f5",  "command": "workbench.action.debug.start",
                   "when": "debuggersAvailable && !inDebugMode" },

조건부 연산자

when 절 조건부 표현식의 경우 키보드 단축키에 다음 조건부 연산자가 유용합니다.

연산자 기호
같음 == "editorLangId == typescript"
같지 않음 != "resourceExtname != .js"
또는 || "isLinux||isWindows"
그리고 && "textInputFocus && !editorReadonly"
일치 =~ "resourceScheme =~ /^untitled$|^file$/"

조건부 연산자에 대한 전체 목록은 when 절 컨텍스트 참조에서 찾을 수 있습니다.

사용 가능한 컨텍스트

사용 가능한 when 절 컨텍스트 중 일부는 when 절 컨텍스트 참조에서 찾을 수 있습니다.

거기 있는 목록이 완전한 것은 아니며, 키보드 단축키 편집기(기본 설정: 키보드 단축키 열기)에서 검색하고 필터링하거나 기본 keybindings.json 파일(기본 설정: 기본 키보드 단축키 열기(JSON))을 검토하여 다른 when 절 컨텍스트를 찾을 수 있습니다.

리팩터링에 대한 사용자 지정 키보드 단축키

editor.action.codeAction 명령을 사용하면 특정 리팩터링 (코드 액션)에 대한 키보드 단축키를 구성할 수 있습니다. 예를 들어, 아래 키보드 단축키는 함수 추출 리팩터링 코드 액션을 트리거합니다.

{
  "key": "ctrl+shift+r ctrl+e",
  "command": "editor.action.codeAction",
  "args": {
    "kind": "refactor.extract.function"
  }
}

자세한 내용은 리팩터링 문서를 참조하십시오. 다양한 종류의 코드 액션과 여러 가능한 리팩터링의 경우 우선순위를 지정하는 방법을 배울 수 있습니다.

자주 묻는 질문

특정 키에 바인딩된 명령을 어떻게 알 수 있습니까?

키보드 단축키 편집기에서 특정 키 입력을 필터링하여 어떤 명령이 어떤 키에 바인딩되어 있는지 확인할 수 있습니다. 다음 스크린샷에서 Ctrl+Shift+P모든 명령 표시에 바인딩되어 명령 팔레트를 가져오는 것을 볼 수 있습니다.

Keyboard shortcuts quick outline

작업에 키보드 단축키를 추가하는 방법 (예: 줄 삭제에 Ctrl+D 추가)

기본 키보드 단축키에서 작업을 트리거하는 규칙을 찾고 keybindings.json 파일에 수정된 버전을 작성합니다.

// Original, in Default Keyboard Shortcuts
{ "key": "ctrl+shift+k",          "command": "editor.action.deleteLines",
                                     "when": "editorTextFocus" },
// Modified, in User/keybindings.json, Ctrl+D now will also trigger this action
{ "key": "ctrl+d",                "command": "editor.action.deleteLines",
                                     "when": "editorTextFocus" },

특정 파일 유형에 대한 키보드 단축키를 추가하려면 어떻게 해야 합니까?

when 절에서 editorLangId 컨텍스트 키를 사용합니다.

{ "key": "shift+alt+a",           "command": "editor.action.blockComment",
                                     "when": "editorTextFocus && editorLangId == csharp" },

keybindings.json에서 키보드 단축키를 수정했습니다. 왜 작동하지 않습니까?

가장 일반적인 문제는 파일에 구문 오류가 있는 것입니다. 그렇지 않으면 when 절을 제거하거나 다른 key를 선택해 보세요. 안타깝게도 이 시점에서는 시행착오 과정입니다.

© . This site is unofficial and not affiliated with Microsoft.