VS Code에 Shift Shift 단축키 등록하는 방법
서론
자바/스프링 공부를 하면서 IntelliJ IDEA
를 자주 사용하다 보니 편리한 단축키를 많이 익혔다. 그중 Shift Shift
단축키가 특히 마음에 들었는데, 유용함도 유용함이지만 같은 키를 두 번 누르는 단축키가 재밌어서 자주 사용하다 보니 금방 익숙해질 수 있었다.

단축키 인식을 못해요
VS Code
에서도 검색에 같은 단축키를 쓰고 싶다는 생각이 들어 키보드 단축키 목록을 열어봤는데, 아쉽게도 Intellij
처럼 파일명과 파일 내부 코드를 동시에 검색할 수 있는 방법은 아직 없는 것 같았다. 다양한 검색 관련 기능들 중 내가 찾던 기능은 다음과 같다:
- 디렉토리 내 모든 파일 내부를 검색하고, 해당 라인으로 이동:
Search: Find in Files
- 디렉토리 내 파일명을 검색하고, 해당 파일로 이동:
Go to File...

첫번째 기능인 Find in Files
의 경우 기본적으로 Shift + Command + F
에 바인딩 되어 있다. 여기서 Shift가 빠진 Command + F
단축키는 현재 화면, 즉 현재 열려있는 에디터에서 검색하도록 동작하는 것이 직관적이므로 디렉토리 내 모든 파일에서 검색하려면 Shift를 같이 눌러준다
고 기억하면 될 것 같다.
그래서 첫번째 기능의 단축키는 그대로 두고 Command + P
라는 근본 없는 단축키에 바인딩돼있는 Go to File...
기능의 단축키를 Shift Shift
로 변경하려 했더니, Shift Shift
와 같이 동일한 키를 두 번 누르는 단축키는 누르는 속도와 상관 없이 인식하지 못하는 것만 같았다..


분명 나랑 비슷한 생각을 했던 사람이 있을 것 같아 인터넷에 검색을 해 보니 10년도 넘은 스택 오버플로우 질문글을 찾을 수 있었고, 2021년에 릴리즈된 VS Code 1.54.0
버전부터 Shift Shift
같은 단축키를 사용할 수 있게 됐다는 답변을 봤다. 하지만 4년이 지난 지금까지도 UI에서는 동일한 키를 반복 입력하는 단축키를 적용할 수 없어서, 약간의 수고로움을 감수해야 했다.
Shift Shift 검색 단축키 적용 방법


키보드 단축키 설정 화면에서 Open Keyboard Shortcuts (JSON)
을 클릭하면 keybindings.json
파일을 직접 수정할 수 있다.
이 파일은 key
, command
, when
형식으로 구성된 JSON 파일이며 다음과 같은 Element 구조를 가진다:
- key : 단축키가 들어간다. UI에서는 설정이 불가능하던
Shift Shift
같은 단축키도 매핑시켜줄 수 있다. - command : 단축키를 통해 실행할 명령이 들어간다. 새로운 단축키를 추가하려면 그냥 작성하고, 기존 단축키를 제거하려면 value 앞에
-
를 붙여준다. - when (optional) : 단축키를 인식하기 위한 상황, 조건이 들어간다.
기존 단축키인 Command + P
를 삭제하고, Go to File
기능을 Shift Shift
단축키에 매핑시켜 주기 위해 keybindings.json
파일 하단에 아래 두 Elements를 추가해주면 된다:
{
"key": "shift shift",
"command": "workbench.action.quickOpen"
},
{
"key": "cmd+p",
"command": "-workbench.action.quickOpen"
},

파일을 저장한 다음 다시 단축키 패널을 열어보니 키바인딩이 Shift Shift
로 변경되어 있으며, 정상적으로 동작하는 것을 확인할 수 있었다:


다른 단축키 수정
단축키 수정하는 방법을 알아본 김에, 다른 단축키들도 취향에 맞게 변경해봤다.
명령 패널
Control Control
단축키로 명령 패널을 열기 위해, keybindings.json
파일 하단에 아래 두 Elements를 추가해주면 된다:
{
"key": "ctrl ctrl",
"command": "workbench.action.showCommands"
},
{
"key": "f1",
"command": "-workbench.action.showCommands"
},
탭 전환 단축키 정상화
VS Code에서는 Control + Tab
, Control + Shift + Tab
두 단축키가 뭔가 불편한 느낌이 들 때가 있어서 탭이 여러 개 열려있을땐 마우스/트랙패드를 통해 탭을 전환하곤 했다. 두 단축키가 브라우저처럼 한 칸씩 이동하는게 아니라 최근에 사용한 순서
대로 이동하기 때문이었다는 것을 알게 됐고, 이 또한 같이 수정해줬다:
Control + Tab
을 누르면 오른쪽 탭으로 한 칸 이동하도록 수정Control + Shift + Tab
을 누르면 왼쪽 탭으로 한 칸 이동하도록 수정- 기존
Control + Tab
단축키의 기능을Command + E
에 매핑 - 기존
Control + Shift + Tab
단축키의 기능을Command + Shift + E
에 매핑
{
"key": "cmd+e",
"command": "-actions.findWithSelection"
},
{
"key": "ctrl+tab",
"command": "-workbench.action.quickOpenPreviousRecentlyUsedEditorInGroup",
"when": "!activeEditorGroupEmpty"
},
{
"key": "ctrl+tab",
"command": "-workbench.action.quickOpenNavigateNextInEditorPicker",
"when": "inEditorsPicker && inQuickOpen"
},
{
"key": "cmd+e",
"command": "workbench.action.quickOpenPreviousRecentlyUsedEditorInGroup",
"when": "!activeEditorGroupEmpty"
},
{
"key": "cmd+e",
"command": "workbench.action.quickOpenNavigateNextInEditorPicker",
"when": "inEditorsPicker && inQuickOpen"
},
{
"key": "ctrl+shift+tab",
"command": "-workbench.action.quickOpenNavigatePreviousInEditorPicker",
"when": "inEditorsPicker && inQuickOpen"
},
{
"key": "ctrl+shift+tab",
"command": "-workbench.action.quickOpenLeastRecentlyUsedEditorInGroup",
"when": "!activeEditorGroupEmpty"
},
{
"key": "shift+cmd+e",
"command": "workbench.action.quickOpenLeastRecentlyUsedEditorInGroup",
"when": "!activeEditorGroupEmpty"
},
{
"key": "shift+cmd+e",
"command": "workbench.action.quickOpenNavigatePreviousInEditorPicker",
"when": "inEditorsPicker && inQuickOpen"
},
{
"key": "ctrl+tab",
"command": "workbench.action.nextEditorInGroup"
},
{
"key": "ctrl+shift+tab",
"command": "workbench.action.previousEditorInGroup"
},
Explorer 토글
Command + 1
단축키로 파일 익스플로러를 열고 닫을 수 있는 설정이다. 전부터 사용하던 단축키 설정인데, 함께 기록해두려 한다:
- 사이드바가 닫힌 상태에서
Command + 1
을 누르면 사이드바의 익스플로러가 열림 - 사이드바가 열려 있으며 익스플로러가 아닌 다른 탭일 경우
Command + 1
을 누르면 익스플로러로 이동 - 사이드바가 열려 있으며 익스플로러 탭일 경우,
Command + 1
을 누르면 사이드바를 닫음 (토글)
{
"key": "shift+cmd+e",
"command": "-workbench.view.explorer",
"when": "viewContainer.workbench.view.explorer.enabled"
},
{
"key": "cmd+1",
"command": "-workbench.action.focusFirstEditorGroup"
},
{
"key": "cmd+1",
"command": "workbench.view.explorer",
"when": "viewContainer.workbench.view.explorer.enabled"
},
{
"key": "cmd+1",
"command": "workbench.action.closeSidebar",
"when": "filesExplorerFocus"
},
keybindings.json
전체 코드
// Place your key bindings in this file to override the defaultsauto[]
[
{
"key": "shift+cmd+e",
"command": "-workbench.view.explorer",
"when": "viewContainer.workbench.view.explorer.enabled"
},
{
"key": "cmd+1",
"command": "-workbench.action.focusFirstEditorGroup"
},
{
"key": "cmd+1",
"command": "workbench.view.explorer",
"when": "viewContainer.workbench.view.explorer.enabled"
},
{
"key": "cmd+1",
"command": "workbench.action.closeSidebar",
"when": "filesExplorerFocus"
}, // `Command + 1`로 Explorer 윈도우 토글
{
"key": "ctrl+alt+n",
"command": "-code-runner.run"
},
{
"key": "ctrl+r",
"command": "-workbench.action.openRecent"
},
{
"key": "ctrl+r",
"command": "code-runner.run"
}, // `Control + R`로 Code Runner 익스텐션 실행 (Run Code)
{
"key": "escape",
"command": "search.action.clearSearchResults",
"when": "searchViewletFocus"
}, // `Command + Shift + F` 검색 콘솔에서 `ESC`를 통해 검색 창 입력 초기화
{
"key": "cmd+p",
"command": "-workbench.action.quickOpen"
},
{
"key": "shift shift",
"command": "workbench.action.quickOpen"
}, // `Shift Shift`로 검색 창 열기
{
"key": "ctrl ctrl",
"command": "workbench.action.showCommands"
}, // `Control Control`로도 명령 창을 열 수 있도록 단축키 오버로딩 (기본값은 F1)
{
"key": "ctrl+tab",
"command": "-workbench.action.quickOpenPreviousRecentlyUsedEditorInGroup",
"when": "!activeEditorGroupEmpty"
},
{
"key": "ctrl+tab",
"command": "-workbench.action.quickOpenNavigateNextInEditorPicker",
"when": "inEditorsPicker && inQuickOpen"
},
{
"key": "ctrl+tab",
"command": "workbench.action.nextEditorInGroup"
}, // `Control + Tab`이 브라우저처럼 동작하도록 변경 (다음 탭으로 이동)
{
"key": "ctrl+shift+tab",
"command": "-workbench.action.quickOpenNavigatePreviousInEditorPicker",
"when": "inEditorsPicker && inQuickOpen"
},
{
"key": "ctrl+shift+tab",
"command": "-workbench.action.quickOpenLeastRecentlyUsedEditorInGroup",
"when": "!activeEditorGroupEmpty"
},
{
"key": "ctrl+shift+tab",
"command": "workbench.action.previousEditorInGroup"
}, // `Control + Shift + Tab`이 브라우저처럼 동작하도록 변경 (이전 탭으로 이동)
{
"key": "cmd+e",
"command": "-actions.findWithSelection"
},
{
"key": "cmd+e",
"command": "workbench.action.quickOpenPreviousRecentlyUsedEditorInGroup",
"when": "!activeEditorGroupEmpty"
},
{
"key": "cmd+e",
"command": "workbench.action.quickOpenNavigateNextInEditorPicker",
"when": "inEditorsPicker && inQuickOpen"
}, // 기존 `Control + Tab` 기능을 `Command + E`로 이동 (최근 탭으로 이동)
{
"key": "shift+cmd+e",
"command": "workbench.action.quickOpenLeastRecentlyUsedEditorInGroup",
"when": "!activeEditorGroupEmpty"
},
{
"key": "shift+cmd+e",
"command": "workbench.action.quickOpenNavigatePreviousInEditorPicker",
"when": "inEditorsPicker && inQuickOpen"
}, // 기존 `Control + Shift + Tab` 기능을 `Command + Shift + E`로 이동 (최근 탭 역순으로 이동)
{
"key": "ctrl+[Backquote]",
"command": "workbench.action.terminal.toggleTerminal",
"when": "terminal.active"
}, // 한글 키보드일 때도 터미널 토글 단축키가 동작할 수 있도록 단축키 오버로딩 (기본값은 Control + `)
// 250617
]