Vim을 어느 정도 다룰 수 있게 되었다면, Neovim이라는 선택지가 눈에 들어올 거예요. Neovim은 Vim의 장점은 그대로 유지하면서 현대적인 기능을 추가한 에디터예요.
동작하는 코드
설치
# macOS
brew install neovim
# Ubuntu / Debian
sudo apt install neovim
# 설치 확인
nvim --version
실행은 터미널에서 nvim을 입력하면 돼요. Vim에서 쓰던 모든 키바인딩이 그대로 동작해요.
첫 번째 Lua 설정 파일
Neovim의 설정 파일은 ~/.config/nvim/init.lua예요. 디렉터리를 만들고 파일을 생성하세요.
mkdir -p ~/.config/nvim
nvim ~/.config/nvim/init.lua
아래 내용을 입력해 보세요.
-- 리더 키 설정 (다른 설정보다 먼저!)
vim.g.mapleader = ' '
-- 기본 옵션
vim.opt.number = true
vim.opt.relativenumber = true
vim.opt.tabstop = 2
vim.opt.shiftwidth = 2
vim.opt.expandtab = true
vim.opt.ignorecase = true
vim.opt.smartcase = true
vim.opt.termguicolors = true
-- 키맵
vim.keymap.set('n', '<leader>w', ':w<CR>', { desc = '파일 저장' })
vim.keymap.set('n', '<leader>q', ':q<CR>', { desc = '종료' })
저장하고 Neovim을 다시 열면 줄 번호와 상대 줄 번호가 표시돼요.
직접 수정하기
init.lua를 열고 옵션을 바꿔 보세요.
-- 커서 줄 강조
vim.opt.cursorline = true
-- 검색 결과 하이라이트
vim.opt.hlsearch = true
-- 클립보드 연동
vim.opt.clipboard = 'unnamedplus'
-- 스크롤 여유 줄
vim.opt.scrolloff = 8
vim.keymap.set으로 자주 쓰는 동작에 단축키를 추가해 보세요.
-- 버퍼 이동
vim.keymap.set('n', '<leader>bn', ':bnext<CR>', { desc = '다음 버퍼' })
vim.keymap.set('n', '<leader>bp', ':bprevious<CR>', { desc = '이전 버퍼' })
-- 창 이동을 Ctrl + hjkl로
vim.keymap.set('n', '<C-h>', '<C-w>h')
vim.keymap.set('n', '<C-j>', '<C-w>j')
vim.keymap.set('n', '<C-k>', '<C-w>k')
vim.keymap.set('n', '<C-l>', '<C-w>l')
"왜?"
왜 Vim 대신 Neovim을 쓸까요?
| 특징 | Vim | Neovim |
|---|---|---|
| 설정 언어 | VimScript | Lua + VimScript |
| LSP 지원 | 플러그인 필요 | 내장 |
| 비동기 처리 | 제한적 | 완전 지원 |
| 플러그인 생태계 | 성숙 | 빠르게 성장 중 |
| 기본 설정 | 최소 | 더 합리적인 기본값 |
Lua는 빠르고 배우기 쉬워요. VimScript에서 설정을 어떻게 옮기는지 비교해 볼게요.
| VimScript (vimrc) | Lua (init.lua) |
|---|---|
set number | vim.opt.number = true |
set tabstop=2 | vim.opt.tabstop = 2 |
let mapleader = " " | vim.g.mapleader = ' ' |
nnoremap <leader>w :w<CR> | vim.keymap.set('n', '<leader>w', ':w<CR>') |
colorscheme desert | vim.cmd('colorscheme desert') |
기존 .vimrc가 있다면 한꺼번에 바꿀 필요 없어요. Neovim은 VimScript도 지원하니까, 하나씩 Lua로 옮기면 돼요.
심화 학습
설정 파일 분리하기
설정이 길어지면 파일을 나눌 수 있어요. ~/.config/nvim/lua/ 디렉터리에 모듈을 만들면 돼요.
~/.config/nvim/
├── init.lua -- require('options'), require('keymaps')
└── lua/
├── options.lua -- vim.opt 설정
└── keymaps.lua -- vim.keymap.set 설정
init.lua에서 이렇게 불러와요.
require('options')
require('keymaps')
나만의 init.lua 만들기
~/.config/nvim/init.lua파일을 새로 만드세요.- 리더 키를 스페이스바로 설정하세요.
- 줄 번호, 탭 크기 2, 대소문자 무시 검색을 설정하세요.
<leader>w로 저장,<leader>q로 종료하는 키맵을 추가하세요.- 아무 파일을 열어서 설정이 적용되었는지 확인하세요.
Neovim의 설정 파일 경로는 어디인가요?