logo
Search검색어를 포함하는 게시물들이 최신순으로 표시됩니다.
    Table of Contents
    파일창 끄다가 에디터 전체를 끄는 참사를 방지하기

    이미지 보기

    파일창 끄다가 에디터 전체를 끄는 참사를 방지하기

    쌓여있던 파일 에디터 창만 끄고 싶은데 자꾸 에디터 윈도우까지 꺼버려서 불편했던 모두를 위하여

    • 2일 전 작성

    • 읽는 데 6

    TOC

    들어가며

    저는 Cursor를 사용하고 있는데요, Cursor 등 VSCode 기반 에디터는 Cmd+W 단축키로 열려 있는 파일 에디터 창을 끌 수 있습니다. 그런데 여러 파일 창을 우다다 끄다가 더이상 끌 수 없는 파일창이 없으면 에디터 윈도우 자체를 꺼버리는 일이 자주 있었는데요, 저는 이게 너무 불편했습니다. 제가 왜 이것 때문에 조심스럽게 파일창들을 세어가며 꺼야 하나요!

    이런 현상을 방지하기 위해 파일창까지만 끄고, 에디터는 안 끄는, 단축키 설정 방법을 소개합니다.

    결론

    1. Command Palette 열기
    • Cmd + Shift + POpen Keyboard Shortcuts (JSON)
    1. 아래 내용을 추가
    {
      "key": "cmd+w",
      "command": "-workbench.action.closeWindow",
      "when": "!editorIsOpen && !multipleEditorGroups"
    }
    

    과정

    용어 정리

    일단 설명 전에 용어부터 정리하겠습니다.

    • Editor: 파일별로 코드를 편집하는 '파일창'을 의미합니다.
    • Window: VSCode, Cursor 등 에디터 프로그램 자체를 의미합니다. 우리가 커맨드로부터 지키고자 하는 대상이죠.

    기본 상태

    맨 처음 Keyboard Shortcuts에 진입하고, Cmd+W 커맨드에 매핑된 단축키 동작들을 살펴보면 이렇습니다.

    Keyboard Shortcuts

    여러 command들이 기본적으로 정의되어 있는데, 여러 상황들에 적용되는 action들이 매우 많음을 알 수 있습니다.

    keybindings.json 편집하기

    Keyboard Shortcuts의 커맨드들을 개발적으로 쉽게 등록하거나 삭제하려면 keybindings.json을 열어서 직접 수정할 수 있습니다.

    Cmd+Shift+P를 통해 Command Palette를 열고 Open Keyboard Shortcuts (JSON)를 검색해서 열면 keybindings.json이 열립니다. 여기에 아래 코드를 추가해주시면 됩니다.

    {
      "key": "cmd+w",
      "command": "-workbench.action.closeWindow",
      "when": "!editorIsOpen && !multipleEditorGroups"
    }
    

    코드를 추가한 상황에서 Cmd+W에 바인딩된 액션들은 이렇습니다.

    적용 시 Keyboard Shortcuts json
    적용 시 Keyboard Shortcuts

    끝입니다. 이미 됐습니다. 이제 열려 있는 Editor들이 모두 꺼져도 Window는 꺼지지 않습니다.

    비교

    그렇다면 이 코드가 뭐길래 이렇게 된 걸까요? 어떤 Shortcuts의 차이가 있는 걸까요? 다시 코드를 없는 셈 쳐보겠습니다.

    미적용 시 Keyboard Shortcuts json
    미적용 시 Keyboard Shortcuts

    차이가 보이시나요? Close Window 커맨드가 생겼습니다. 이 커맨드는 에디터 프로그램 자체(Window)를 끄는 액션입니다. 언제요? 열려 있는 파일 창(Editor)이 없고, 다중 에디터 그룹이 없을 때요. 즉, 우리가 모든 파일창을 끈 상태에서 Cmd+W를 누르면 이 커맨드가 실행되고, Window를 끄는 것이죠.

    그리고 JSON 코드로 이 액션을 없앴습니다. 어떻게요?

    코드를 없애는 코드

    처음에는 Keyboard Shortcuts GUI에서 커맨드를 찾아 우클릭+삭제(Cmd+Backspace)를 시도했습니다. 그리고 삭제된 것처럼 보였죠. 그런데 이렇게 하면 Window를 재시동했을 때 커맨드가 다시 부활해서 떡하니 있습니다. 기본 커맨드이기 때문으로 보입니다.

    그래서 기본 코드를 제거하는 JSON 코드로 기본 코드를 덮어씌운 것입니다.

    주의사항

    • "command"의 - prefix는 명령어 자체를 제거하는 것이 아니라, 특정 단축키와의 매핑을 제거하는 것입니다.
    • 즉, "key": "cmd+w"로 명시된 키 조합에서 해당 command만 제거되는 것입니다.
    • 만약 해당 명령어가 여러 키 조합에 바인딩돼 있다면, 그중 지정한 키만 제거됩니다.

    마치며

    불편을 참지 마세요. 불편에 적응하지 마세요. 내가 불편하면 먼저 불편한 사람이 벌써 있고, 그 사람들은 답을 찾아냈을 겁니다.

    간만에 짧은 글이었네요. 혹시 같은 불편을 겪고 계신 분들께 도움이 됐길 바랍니다. 감사합니다.

    References

    profile

    FE Developer 박승훈

    노력하는 자는 즐기는 자를 이길 수 없다