본문 바로가기

AI/Claude Code

[Claude Code] Shift + Enter Key for vscode (not /terminal-setup)

 

Intro

vscode에서 claude code를 사용중이신데 shift + enter가 newline이 안되어서 /terminal-setup를 실행했음에도 여전히 new line이 안되시는 분들이 있으신 분들을 위한 글입니다. reference 문서에서는 /terminal-setup으로 충분하다는 글만 있으나 저는 적용이 안되어서 해결책을 이 글에 남깁니다.

 


Solution

* /terminal-setup을 했음에도 아무것도 안되시는 분들을 위한 Solution입니다.

* 시간 없으신 분들을 위해 해야 하는 것만 빠르게 작성했습니다.


1. vscode open

2. ctrl+shift+p or cmd+shift+p를 누르고 "Preferences: Open Keyboard Shortcuts (JSON)"으로 keybindings.json을 open

4. 아래 내용을 삽입.

[
    // 기존 내용 ...
    
    // 아래는 추가할 내용
    {
        "key": "shift+enter",
        "command": "workbench.action.terminal.sendSequence",
        "args": { "text": "\u0003\u000D" },
        "when": "terminalFocus"
    }
]

 

 

5. 다시 ctrl+shift+p or cmd+shift+p를 눌러서 "Preferences: Open Keyboard Shortcut"을 선택하여 shortcuts table을 open

6. 상단에 shift+enter로 검색하면 shift+enter를 눌렀을 때 동작하는 다양한 shortcuts들을 확인할 수 있음

7.  Command 항목에서 Terminal : SendSequence로 된 항목이 2개가 있을 것임.

8. Source가 User인 것은 방금 추가한 내용이므로 그대로 둔다. Source가 System으로 된 항목을 확인하고 그 shortcut의 key binding을 ctrl+shift+enter(windows) or cmd+shift+enter(mac)로 변경하여 충돌하지 않게 함.

9. vscode 재시작. claude code를 실행 후 shift + enter를 입력해서 newline이 적용되는지 확인한다.

 


* 설명이 궁금하신 사람들을 위한 추가 설명

 

shift+enter를 new line으로 하기 위해 claude code로 /terminal-setup을 하면 claude code config에 shift enter에 대한 shortcut이 입력됩니다. (ubuntu 경로는 /home/{user}/.config/Code/User/keybindings.json 입니다)

 

그런데 이 keybinding은 vscode의 기본설정과 우선순위가 밀리면 사실상 의미가 없어서, vscode 자체 설정을 추가해야 합니다.

그리고 test를 해본 결과 args에 다양한 text를 넣어봤지만 ("///n", "///r/n" 등) 깔끔하게 동작하는게 없어서 마지막에 찾은 keyword가 바로 "/u0003/u000D"입니다. 이 의미는 아래와 같습니다.

 

 

  • \u0003: Ctrl+C (현재 실행 중인 명령 중단)
  • \u000D: Enter (명령 실행)
  • when: "terminalFocus": 터미널에 포커스가 있을 때만 작동

 

 

이렇게 설정을 해놓는다면 이제 claude code에서 /terminal-setup만으로 shift+enter가 new line이 안되시는 분들도 정상 동작할것입니다.

 

 


 

* reference

 - https://docs.anthropic.com/ko/docs/claude-code/terminal-config