노트

IDE에서 Vim 쓰기

Vim Emulation in IDEs

인프라#tooling · 연결된 개념 3개

쉽게 말하면

IDE에서 Vim 쓰기는 좋은 차는 그대로 타면서 손에 익은 운전대만 바꿔 다는 거예요. 리팩터링이나 탐색 같은 IDE 기능은 그대로 쓰고, 글자 편집만 Vim 키로 빠르게 해요.

비유가 깨지는 곳 운전대만 바꾼다고 다 맞아떨어지진 않아요. yank는 기본으로 Vim 내부 레지스터에 담겨 시스템 클립보드와 따로 놀아요. 한글 입력 상태로 Esc를 누르면 다음 j, k가 한글로 들어가서 따로 설정해요.

JetBrains IDE의 IdeaVim, VS Code의 VSCodeVim처럼 IDE 안에서 Vim 키 바인딩을 흉내 내는 플러그인이 있다. IDE의 리팩터링·탐색 기능은 그대로 쓰면서 편집은 Vim 방식으로 한다.

시스템 클립보드 연동

Vim의 yank는 기본적으로 Vim 내부 레지스터에 담긴다. 시스템 클립보드와 맞추는 방법은 둘이다.

" ~/.ideavimrc
set clipboard^=unnamedplus,unnamed   " 모든 yank·delete를 클립보드로
 
" x로 지운 한 글자까지 클립보드를 덮는 게 싫다면 필요한 키만 + 레지스터로
nnoremap yy "+yy
vnoremap y "+y
nnoremap p "+p

VSCodeVim은 설정의 vim.useSystemClipboard를 켠다.

한글 입력 중 Esc 문제

한글 입력 상태로 Esc를 눌러 노멀 모드에 가면 j, k 대신 한글이 들어간다. macOS에서는 Hammerspoon 같은 자동화 도구로 "Esc를 누르면 입력 소스를 영문으로 바꾸고 Esc를 보낸다"를 묶어 해결한다. 리눅스는 fcitx·ibus 설정으로 비슷하게 할 수 있다.

자주 쓰는 설정·플러그인

let mapleader=" "
set scrolloff=5 incsearch hlsearch ignorecase smartcase number
set surround          " cs"' 로 감싼 따옴표 바꾸기
set commentary        " gcc 로 주석 토글
set easymotion        " <leader><leader>j 로 화면 안 어디든 점프
set highlightedyank
  • ignorecase + smartcase: 소문자로 검색하면 대소문자 무시, 대문자가 섞이면 구분
  • IdeaVim은 set ideajoin처럼 IDE 기능과 엮는 옵션이 따로 있다

터미널 쪽 vi 키 설정은 tmux 기초, 셸 환경은 zsh·oh-my-zsh 터미널 환경을 본다. 처음엔 느려지지만 몇 주 의식적으로 연습하면 손에 붙는다(의도적 수련).

연결된 개념

이 노트를 가리키는 문서

뜻이 가까운 노트

  • 스프링 설정 외부화와 프로파일

    스프링 부트는 설정값을 코드 밖(application.yml·환경변수·명령줄 인자 등)에 두고, 실행 환경에 따라 다른 값을 주입하게 해 준다. 같은 빌드 산출물을 개발·QA·운영에 그대로 쓰고 설정만 바꾸는 것이 목표다.

  • 언어적 안티패턴

    이름, 타입, 주석이 말하는 것과 코드가 실제로 하는 일이 어긋나는 것. 읽는 사람을 잘못된 추측으로 이끈다.

  • Vite mode와 env 파일

    Vite의 --mode는 앱이 어떤 환경 이름으로 동작할지 정하는 옵션이다. 가장 큰 효과는 어떤 .env 파일을 읽을지가 달라진다는 점이다. 기본값은 vite(dev)가 development, vite build가 production이다.

  • LLM 사용 습관

    LLM이 어떻게 만들어지는지 알고, 컨텍스트를 깨끗하게 관리하고, 모델과 도구를 골라 쓰고, 답은 초안으로 보고 검증하는 습관.

  • 코드 냄새

    당장 버그는 아니지만 이해나 변경 비용을 높이는 구조적 신호. 리팩터링을 언제 시작하고 멈출지에 정확한 공식은 없어서, 냄새라는 어휘로 직관을 공유한다.

보기 옵션