* vscode vim plugin 설치
sidebar > extensions > vim > install
* 클립보드 사용
설정 > Vim: Use System Clipboard 입력 > 해당 항목 체크
x, y, p (이름 없는 레지스터)가 클립보드와 연동된다.
* 자동완성 끄기
설정 > Editor: Auto Closing Quotes 입력 > 해당 항목 에서 never 선택
설정 > Editor: Auto Closing Brackets 입력 > 해당 항목 에서 never 선택
* vim 모드 토글
ctrl + shift + p > vim toggle 입력 > tab > enter
아직 많이 안써봐서 이 동작을 얼마나 자주하게 될지는 모르겠지만
해보니 상당히 귀찮다. 다음과 같이 키바인딩 설정
* 키바인딩 추가
ctrl + shift + t 를 vim 모드 토글로 설정
ctrl + k s > Vim: Toogle Vim Mode 입력 > 마우스를 올렸을 때 왼쪽에 나타나는 + 클릭
ctrl + shift + t > enter
디폴트로 View: Reopen Closed Editor 가 같은 키를 사용하고 있음.
중복이지만 조건이 같을 때 사용자 바인딩이 우선하는지 vim 모드 토글로 잘 동작함.
혹시 문제가 생긴다면 다음과 같이 기존 바인딩을 지울 수 있음.
* 키바인딩 삭제
ctrl + k s > ctrl+shift+t (빈칸 없이) 입력 > View: Reopen Closed Editor 선택 > delete
* 기본 키바인딩 (vim 모드에서도 동작)
키 | 동작 |
---|---|
ctrl + tab | 탭 이동 |
alt + shift + f | 문서 포멧 |
ctrl + shift + d | run |
ctrl + shift + e | explorer |
ctrl + shift + g | source control |
ctrl + shift + p | prompt |
ctrl + ` | 터미널 토글 |
ctrl + , | 설정 |
* 기본 키바인딩 (vim 모드 끄고 동작)
키 | 동작 |
---|---|
ctrl + k s | 키보드 단축키 |
ctrl + b | 사이드바 토글 |
# 링크가 자동으로 생성되고 ctrl + ], ctrl + t 를 그대로 쓸 수 있어 좋다.
* vim 에서 사용하지 않는 키바인딩 해제
vim 에서 ctrl + k 를 사용하지 않도록 설정하면 ctrl + k 로 시작되는 vscode 의 키바인딩을 vim 모드에서도 사용할 수 있음.
예) Markdown: Open Preview to the side (ctrl + k, v),
Format Selection (ctrl + k f) 등
설정 > Vim: Handle Keys 입력 > Edit in settings.json 클릭 > 마지막의 settings.json 예제와 같이 원하는 키(<C-k>)에 false 값을 설정
* alt 이용
ctrl + b 의 경우 vscode 의 '사이드바 토글'과 vim 의 '앞 페이지로 이동' 이 충돌.
마우스 스크롤, page up 등을 좋아하지 않아 vim 의 기능을 포기할 수 없음.
vim 모드 중에도 alt 를 누르면 메뉴로 포커스가 옮겨져 ctrl + b 가 '사이드바 토글'로 동작함.
vim 만으로 작업할 수 있는 환경에서는 vim 을 쓰겠지만 그게 아닌 경우는
vscode + vim plugin 도 꽤 매력적이다.
vscode 와 vim 의 좋은 점만 골라 쓰기 위해서는 키바인딩을 어떻게 하느냐가
제일 중요한 것 같다.
# settings.json
{ "editor.autoClosingBrackets": "never", "editor.autoClosingQuotes": "never", "editor.fontFamily": "'Bitstream Vera Sans Mono', Consolas, 'Courier New', monospace", "editor.fontSize": 16 "editor.linkedEditing": true, "html.autoClosingTags": false, "python.formatting.autopep8Args": ["--max-line-length", "120"], "vim.useSystemClipboard": true, "vim.handleKeys": { "<C-k>": false }, "editor.fontSize": 16, "editor.minimap.enabled": false }
# keybindings.json
[ { "key": "ctrl+shift+t", "command": "toggleVim" } ]
# %% jupyter-like code cell