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

필수 설정 — Vimscript 와 Lua

~14 min · vim, config, vimscript, lua

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

Config 가 사는 곳

클래식 Vim 이 시작 시 ~/.vimrc 읽어. Neovim 은 Vimscript 원하면 ~/.config/nvim/init.vim, Lua 원하면 ~/.config/nvim/init.lua 읽어 (Neovim 권장 — Lua 는 진짜 프로그래밍 언어고 현대 Neovim 생태계의 나머지가 그걸로 작성돼).

Vim 을 "이상한 에디터" 에서 "내 에디터" 로 바꾸는 설정

약 25 줄 config 로 편안하고 현대적인 Vim 을 가질 수 있어. 이 레슨의 나머지는 각 필수 설정이 뭘 하고 왜 켜고 싶은지 walkthrough 야.

라인 번호 — relative 가 비밀

set number 가 현재 라인의 절대 번호 표시. set relativenumber 가 다른 모든 라인의 커서로부터의 거리 표시. 합치면 커서 라인은 절대 번호, 그 외는 도달하려면 칠 count. "7" 표시된 라인까지 삭제? 7dd. 머리 계산 X.

Tab vs space — 영원한 논쟁, 파일별로 해결

대부분 언어에 set expandtab (Tab 키가 스페이스 생성), set tabstop=4 (탭 캐릭터가 4 스페이스 너비로 표시), set shiftwidth=4 (>> 가 4 만큼 indent), set softtabstop=4 (Insert mode 의 Tab 이 4 스페이스처럼 작동) 원해. 일부 언어 (Go, Makefile) 는 hard tab 원해 — autocommand 로 filetype 별 처리.

너랑 안 싸우는 검색

set ignorecase + set smartcase 의미: 소문자 검색은 case-insensitive (/foo 가 Foo, FOO, foo 매치); 대문자 검색은 case-sensitive (/Foo 가 Foo 만 매치). 거의 항상 원하는 거. incsearch (타이핑하며 매치 미리보기) 와 hlsearch (모든 매치 하이라이트) 추가.

삶의 질 묶음

scrolloff=8 이 커서 위/아래 8 라인 보이게 유지 — 커서가 화면 마지막 라인에 안 앉아. signcolumn=yes 가 git/LSP 사인용 컬럼 reserve 해서 사인 나타날 때 텍스트 안 점프. termguicolors 가 true-color 지원 활성. updatetime=250CursorHold 이벤트 (많은 plugin 이 사용) 즉시 느낌. undofile 이 세션 사이 undo 히스토리 보존.

Config 의 모든 라인 이해해. Vim 의 가장 큰 함정은 인터넷에서 2000 라인 .vimrc 복사 + 붙여넣기. 6 개월 후 깨지고, 왜인지 모르고, Vim 포기. 작게 시작. 부재를 느꼈을 때만 설정 추가. 아래 25 줄 config 가 첫날부터 생산적으로 일하기에 실제로 필요한 거야.

Code

필수 설정 — Vimscript (~/.vimrc)·vim
" 디스플레이
set number
set relativenumber
set cursorline
set signcolumn=yes
set scrolloff=8
set sidescrolloff=8
set termguicolors
set wrap
set breakindent

" 들여쓰기
set expandtab
set tabstop=4
set shiftwidth=4
set softtabstop=4
set autoindent
set smartindent

" 검색
set ignorecase
set smartcase
set incsearch
set hlsearch

" 편집 삶의 질
set hidden
set mouse=a
set clipboard=unnamedplus
set splitright
set splitbelow
set undofile
set updatetime=250
set timeoutlen=300
set backspace=indent,eol,start
같은 설정 — Lua (~/.config/nvim/init.lua)·lua
-- 디스플레이
vim.opt.number = true
vim.opt.relativenumber = true
vim.opt.cursorline = true
vim.opt.signcolumn = "yes"
vim.opt.scrolloff = 8
vim.opt.sidescrolloff = 8
vim.opt.termguicolors = true
vim.opt.wrap = true
vim.opt.breakindent = true

-- 들여쓰기
vim.opt.expandtab = true
vim.opt.tabstop = 4
vim.opt.shiftwidth = 4
vim.opt.softtabstop = 4
vim.opt.autoindent = true
vim.opt.smartindent = true

-- 검색
vim.opt.ignorecase = true
vim.opt.smartcase = true
vim.opt.incsearch = true
vim.opt.hlsearch = true

-- 편집 삶의 질
vim.opt.hidden = true   -- Neovim 기본, 명시 위해 넣음
vim.opt.mouse = "a"
vim.opt.clipboard = "unnamedplus"
vim.opt.splitright = true
vim.opt.splitbelow = true
vim.opt.undofile = true
vim.opt.updatetime = 250
vim.opt.timeoutlen = 300

External links

Exercise

~/.config/nvim/init.lua 생성 또는 열기. 위 Lua 필수 설정 블록 붙여넣기. Neovim 재시작하고 각 설정 작동 검증: gutter 의 relative 라인 번호, / 후 hlsearch 하이라이팅, /foo vs /Foo 에 smartcase 가 옳은 일, quit-and-reopen 후 살아남은 undo 히스토리. 아직 다른 거 추가하지 마 — baseline 을 느껴.

Progress

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

댓글 0

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

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