그동안 neovim 에서 vim-plug 으로 각 종 플러그인들을 설치해 사용하고 있었는데, Lua 언어를 neovim에서 공식적으로 지원하면서 LazyVim 같은 플러그인을 쓰는 곳이 많아졌다.
그래서, 사용법을 익히기위해 ChatGPT 의 힘을 빌려 알아보았다.
대화 기록: https://chatgpt.com/share/67e7a410-8f30-8005-9f2b-a44d900fc627
요새 neovim에서 plugin을 설치할때 vim-plug 대신 다른 걸 쓰는 것 같던대 그 방식에 대해 알려줘
맞아요. 요즘 Neovim에서는 vim-plug
대신 Lazy.nvim이나 packer.nvim, folke/lazy.nvim 같은 Lua 기반의 플러그인 매니저를 더 많이 사용해요. 특히 Neovim이 Lua를 공식적으로 지원하면서, Lua 기반 설정이 대세가 되었고, 그 중 가장 많이 쓰이는 건 Lazy.nvim이에요.
folke/lazy.nvim
: Neovim 전용의 고성능 Lua 기반 플러그인 매니저BufRead
, InsertEnter
, VeryLazy
등) 기반으로 플러그인 로딩 시점을 제어-- init.lua 또는 lua/plugins/init.lua에 삽입
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
vim.fn.system({
"git", "clone", "--filter=blob:none",
"https://github.com/folke/lazy.nvim.git", "--branch=stable", lazypath
})
end
vim.opt.rtp:prepend(lazypath)
require("lazy").setup({
-- 예시 플러그인들
{
"nvim-telescope/telescope.nvim",
dependencies = { "nvim-lua/plenary.nvim" },
cmd = "Telescope",
},
{
"nvim-treesitter/nvim-treesitter",
build = ":TSUpdate",
event = { "BufReadPost", "BufNewFile" },
},
{
"neovim/nvim-lspconfig",
event = { "BufReadPre", "BufNewFile" },
},
})
항목 | vim-plug | Lazy.nvim |
---|---|---|
언어 | Vimscript | Lua |
지연 로딩 | 일부 지원 | 매우 정교하게 지원 (이벤트 기반 등) |
디펜던시 관리 | 직접 수동 관리 | 자동 의존성 관리 |
성능 | 느릴 수 있음 | 매우 빠름 |
Neovim 친화도 | 낮음 | 매우 높음 |
:help lazy.nvim
(설치 후)원하면 LazyVim
(Lazy.nvim 기반의 pre-configured Neovim 환경) 세팅 가이드도 따로 만들어줄게.
질문 더 있어? 😄
neovim, lazyvim 설치부터 플러그인들을 어떻게 추가 설치하고 관리하는지 step-by-step으로 알려줘
좋아, 그럼 Neovim + LazyVim 설치부터 플러그인 추가 및 관리 방법까지 전체 과정을 단계별로 설명해줄게.
(기본적으로 macOS/Linux 기준이고, Windows WSL에서도 거의 동일하게 적용 가능해!)
Hack Nerd Font
) 설치 — GUI 글꼴 이슈 방지ripgrep
, fd
, node
, npm
, python3
, pip
등도 추천 설치 (일부 플러그인에 필요)git clone https://github.com/LazyVim/starter ~/.config/nvim
~/.config/nvim
디렉토리를 기존에 사용 중이었다면 백업 후 삭제하는 게 좋아.
mv ~/.config/nvim ~/.config/nvim.bak
mv ~/.local/share/nvim ~/.local/share/nvim.bak
mv ~/.local/state/nvim ~/.local/state/nvim.bak
mv ~/.cache/nvim ~/.cache/nvim.bak
nvim
lazy.nvim
, 플러그인들 자동 설치됨:checkhealth
명령어로 환경 확인LazyVim은 Lua 기반으로 구성됨.
~/.config/nvim/
├── init.lua --> LazyVim 부트스트랩
├── lua/
│ ├── config/ --> 옵션, 키맵, 자동 명령 등
│ ├── plugins/ --> 플러그인 설정들
│ └── lazyvim/ --> (외부) LazyVim core
github/copilot.vim
플러그인 추가하기~/.config/nvim/lua/plugins/copilot.lua
return {
"github/copilot.vim",
event = "InsertEnter",
}
:Lazy reload
→ 자동 설치됨예: telescope.nvim
에 설정 추가하려면
return {
"nvim-telescope/telescope.nvim",
opts = {
defaults = {
layout_strategy = "vertical",
},
},
}
또는 LazyVim에서 이미 쓰고 있는 플러그인의 설정을 오버라이드하려면:
return {
"nvim-telescope/telescope.nvim",
opts = function(_, opts)
opts.defaults.layout_strategy = "vertical"
end,
}
명령어 | 설명 |
---|---|
:Lazy |
Lazy.nvim UI (상태, 설치, 삭제 등) |
:Lazy update |
모든 플러그인 업데이트 |
:Lazy sync |
설치/삭제 적용 |
:Lazy reload |
설정 리로드 |
:Lazy clean |
사용하지 않는 플러그인 제거 |
return {
-- 파일 탐색기
{ "nvim-tree/nvim-tree.lua", config = true, cmd = "NvimTreeToggle" },
-- Git UI
{ "lewis6991/gitsigns.nvim", event = "BufReadPre", config = true },
-- LSP UI
{ "glepnir/lspsaga.nvim", event = "LspAttach", config = true },
-- 코드 포맷터
{ "stevearc/conform.nvim", config = true },
-- Auto pairs
{ "windwp/nvim-autopairs", event = "InsertEnter", config = true },
}
lua/config/options.lua
)vim.opt.relativenumber = true
vim.opt.tabstop = 4
vim.opt.shiftwidth = 4
vim.opt.expandtab = true
git clone
으로 LazyVim 템플릿 설치nvim
실행해서 자동 세팅lua/plugins/*.lua
에 플러그인 추가:Lazy
로 관리opts
, keys
, event
옵션으로 유연한 설정원하면 내가 추천하는 개발자용 LazyVim 플러그인 세트도 따로 정리해줄게.
또는 지금 사용 중인 config 파일 분석해줘도 가능!
필요한 거 있으면 말만 해 😎
추천하는 LazyVim 플러그인 세트가 뭐야? 일단 Copliot 은 설치하고싶어
좋아! 그럼 LazyVim을 쓸 때 추천하는 개발자용 플러그인 세트를 소개할게.
Copilot은 기본 세팅부터 바로 알려주고, 그 외에도 Neovim을 더 강력한 개발 도구로 만들어주는 플러그인들 위주로 정리해봤어.
~/.config/nvim/lua/plugins/copilot.lua
파일 생성하고 아래처럼 작성:
return {
"github/copilot.vim",
event = "InsertEnter",
config = function()
vim.g.copilot_no_tab_map = true
vim.g.copilot_assume_mapped = true
vim.api.nvim_set_keymap("i", "<C-l>", 'copilot#Accept("<CR>")', {
expr = true,
silent = true,
noremap = true,
})
end,
}
<C-l>
(Ctrl + L) 키로 자동완성 수락 가능InsertEnter
이벤트로 입력 모드 진입 시 로드됨:Copilot auth
로 GitHub 계정 인증 필요 (최초 1회)LSP, Git, 생산성, UI, 파일 탐색, 편집기능 중심으로 추림
Plugin | 설명 |
---|---|
neovim/nvim-lspconfig |
LSP 설정 (기본 내장됨) |
hrsh7th/nvim-cmp |
자동완성 엔진 (기본 내장) |
L3MON4D3/LuaSnip |
코드 스니펫 |
onsails/lspkind.nvim |
자동완성 아이콘 꾸미기 |
stevearc/conform.nvim |
코드 포맷터 자동 실행 |
Plugin | 설명 |
---|---|
nvim-telescope/telescope.nvim |
강력한 검색 기능 |
nvim-tree/nvim-tree.lua |
파일 트리 탐색기 |
nvim-lualine/lualine.nvim |
상태바 꾸미기 |
folke/trouble.nvim |
LSP 에러 탐색기 (Telescope 연동 가능) |
Plugin | 설명 |
---|---|
lewis6991/gitsigns.nvim |
Git diff 표시 |
tpope/vim-fugitive |
강력한 Git 명령어 연동 |
sindrets/diffview.nvim |
Git diff UI |
ruifm/gitlinker.nvim |
GitHub 링크 복사 |
Plugin | 설명 |
---|---|
windwp/nvim-autopairs |
괄호 자동 닫기 |
numToStr/Comment.nvim |
빠른 주석 토글 |
tpope/vim-surround |
괄호/따옴표 감싸기 편리 |
ggandor/leap.nvim |
빠른 커서 점프 |
folke/zen-mode.nvim |
집중 모드 |
Plugin | 설명 |
---|---|
folke/tokyonight.nvim |
고급 테마 |
catppuccin/nvim |
부드러운 테마 |
nvim-notify + rcarriga/nvim-notify |
알림 UI 개선 |
folke/noice.nvim |
UI/입출력 개선 (message, cmdline 등) |
Comment.nvim
파일: ~/.config/nvim/lua/plugins/comment.lua
return {
"numToStr/Comment.nvim",
event = "VeryLazy",
config = function()
require("Comment").setup()
end,
}
-- ~/.config/nvim/lua/plugins/dev-essentials.lua
return {
{ "numToStr/Comment.nvim", config = true, event = "VeryLazy" },
{ "windwp/nvim-autopairs", config = true, event = "InsertEnter" },
{ "tpope/vim-surround", event = "VeryLazy" },
}
필요한 플러그인 카테고리 알려줘 😄
(Copilot 인증에서 막혔다거나 설정 반영이 안 되는 것도 도와줄 수 있어)
LEAVE A COMMENT