C.W.K.
Stream
Lesson 01 of 08 · published

왜 Vim이 아직도 중요한가

~12 min · vim, philosophy, remote-development

Level 0갇힌 자
0 XP0/35 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete

Vim은 어디에나 있고, 안 사라져

Cursor, JetBrains, VS Code 천지인 시대에 왜 굳이 1991년에 처음 나온 에디터를 배워야 하지? 30년이 지나도 안 변한 세 가지 이유: 이미 깔려있다, 언어를 안 가린다, 손이 홈 row를 안 떠난다.

SSH로 어디 들어가든 Vim은 거기 있어

모든 Linux 서버는 Vim 또는 Vi를 기본으로 깔고 나와. 새벽 2시에 프로덕션 장애 디버깅을 빌려온 노트북에서 해야 할 때, 좋아하는 에디터를 깔 여유 같은 건 없어 — 박스에 깔린 걸 써야 돼. Vim은 공통분모인데 실제로 좋은 공통분모야.

예상 못한 곳에서 Vim이 튀어나와

  • git commit은 commit message 입력에 기본으로 Vim을 띄워.
  • crontab -e는 cron job을 Vim으로 편집해.
  • visudo는 sudoers 파일을 Vi로 편집해.
  • kubectl edit, CI 스크립트의 EDITOR=vim, Docker 컨테이너, 임베디드 시스템, 복구 셸, BSD 인스톨러 — Vim은 어딜 가도 있어.

키보드 only 편집이 주는 속도

Vim의 문법이 손에 박히면, 능숙한 타이피스트가 글 쓰듯이 텍스트를 편집하게 돼 — 메커니즘을 의식하지 않고. 마우스도, 메뉴 사냥도, Cmd+Shift+P 팔레트도 없어. 그냥 정확한 키 입력이 단어처럼 합쳐져서 문장처럼 명령이 돼. 8시간 코딩하는 하루에 그게 수천 번의 컨텍스트 스위치를 안 치르게 해줘.

원칙: Vim이 빠른 건 더 많은 키를 더 빠르게 쳐서가 아냐. 빠른 이유는 일하는 시간 대부분이 편집이라서고, Vim은 타이핑이 아닌 편집에 최적화돼 있어서야.

홈 row가 주는 ergonomic 이득

손이 홈 row에 머물러. 마우스로 손 옮길 일도 없고, 화살표 키 스트레칭도 없고, Cmd 모디파이어 엄지 곡예도 없어. 개발자 RSI 대부분은 modeless 에디터가 강요하는 chord-heavy 편집 패턴에서 와. 모달 편집은 chord를 sequence로 바꿔주고 — sequence는 손에 부드러워.

첫날부터 다 옮길 필요는 없어. VS Code, JetBrains, Cursor, Neovide — 현대 에디터는 전부 Vim 모드를 갖고 있어. 많은 개발자가 IDE 안에서 motion을 먼저 익히고, 머슬 메모리가 박히면 Neovim으로 졸업해. 어느 쪽이든 투자한 게 누적돼.

Code

원하든 원치 않든 Vim이 매복하는 자리·bash
# git commit message의 기본 에디터
git commit  # $EDITOR / git config core.editor 가 가리키는 거 (대개 vim)

# Cron jobs
crontab -e

# Sudoers 파일
sudo visudo

# 어떤 Linux 컨테이너 / 복구 셸이든
docker run -it --rm alpine sh -c 'apk add vim && vim /etc/hosts'

# Vim을 글로벌 에디터로 박기
export EDITOR=vim         # bash/zsh
git config --global core.editor vim
오늘만 살아남기 위한 키트 — 이거만 알면 일단 OK·vim
:q       " 종료 (저장 안 된 변경 있으면 거부)
:q!      " 변경 버리고 강제 종료
:w       " 저장 ("write")
:wq      " 저장 + 종료
ZZ       " 저장 + 종료 (Normal mode 단축, 콜론 X)
i        " Insert mode 진입 (이제 일반 에디터처럼 타이핑)
Esc      " Insert mode 빠져나와서 Normal mode로

External links

Exercise

터미널 세 개 열어. 첫 번째에서 아무 git repo 안에서 git commit --allow-empty 돌리고 commit message 저장 후 Vim 빠져나와. 두 번째에서 crontab -e 돌리고 # test cron entry 한 줄 추가하고 저장 + 종료 (crontab -l에 그 줄이 보여야 통과). 세 번째에서 EDITOR=vim git config --global --edit 돌리고 코멘트 한 줄 추가, 저장, 종료. 셋 다 당황 안 하고 하면 입학 시험 통과야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.