leader는 내 단축키만 모아두는 개인 영역이야. 키를 하나 고르고 (스페이스가 제일 인기야. 크고, 손이 편하고, Normal mode에서 중요한 일을 안 하거든) 그 위에 내 명령 어휘를 쌓아 올리는 거지. 저장은 <leader>w, 파일 찾기는 <leader>ff, git status는 <leader>gs 하는 식으로. 매핑 하나하나가 손에 가르친 문장이야.
map 계열
Vim의 매핑은 모드별로 갈려. nmap은 Normal, imap은 Insert, vmap은 Visual, cmap은 Command-line이야. 언제나 noremap 쪽을 골라 (nnoremap, inoremap 같은 것들). 오른쪽을 글자 그대로 처리해서 다른 매핑을 타고 재귀로 번지지 않게 막아주거든. 무한 루프를 피하는 방법이 이거야.
Lua로 쓰면 더 깔끔해
Neovim Lua에서는 vim.keymap.set(mode, lhs, rhs, opts) 하나가 map 계열 전체를 대신해. opts는 table이라 desc (which-key 같은 plugin이 이걸 보여줘), silent = true, noremap = true (vim.keymap.set은 원래 기본값이야), buffer 안에서만 먹히게 하는 buffer = N 같은 걸 넣을 수 있어.
어느 config에나 있는 매핑
거의 모든 config에 등장하는 정통 매핑들이 있어. 다들 진짜로 짜증 나는 지점을 고쳐주거든. Esc로 검색 표시 지우기, Insert에서 jk로 빠져나오기, leader-w로 저장, leader-q로 종료, Ctrl-h/j/k/l로 창 옮기기 (Ctrl-w 접두사 없이 바로), n / N 뒤에 zz를 붙여 화면 가운데로, Visual mode에서 J / K로 줄 옮기기.
매핑은 미리 깔지 말고 필요해진 다음에 더해. 남의 dotfile에서 200줄짜리 keymap 파일을 통째로 가져오지 마. 하루에 같은 키 조합을 두 번 치고 있는 자신을 발견하면, 그때 매핑해. 제일 좋은 keymap은 찾아보지 않아도 기억나는 매핑이고, 그건 진짜로 아쉬웠던 데서만 나와.
Code
Leader 박고 정통 Insert escape·vim
" Vimscript
let mapleader = " "
inoremap jk <Esc>
inoremap jj <Esc>
config에 starter keymap 묶음을 넣고 Neovim을 다시 읽혀. 하나씩 시험해봐. <Space>w로 저장, Insert mode에서 jk로 탈출, Ctrl-h/j/k/l로 창 옮기기 (:vs로 창을 하나 열어두고). 그다음 딱 하나만 내 매핑을 더해봐. 늘 하는 동작으로. 예를 들면 nnoremap <leader>sv :source $MYVIMRC<CR>로 config 다시 읽기 같은 거. 매핑은 하나씩 벌어서 늘려. 한꺼번에 퍼오지 말고.
Progress
Progress is local-only — sign in to sync across devices.