본문 바로가기
목차
utils

vim-plug 설치하기 (neovim의 init.lua로 설정)

by ds31x 2026. 1. 13.
728x90
반응형

vim-plug

전통적으로 사용되던 Vundle 에 비해 빠르고 lazy loading등의 추가 기능을 제공하면서 좀 더 많이 사용되는 플러그인 매너저임.

vim-plug는 애초에 Vim과 Neovim 둘 다 지원하도록 설계되어 있음

  • Vim 7.4 이상 지원
  • Neovim 0.x ~ 최신 버전까지 호환
  • Neovim의 비동기(job, channel) 기능을 활용 → 플러그인 설치/업데이트가 더 빠름

실제로 Neovim에서 쓰면 Vim에서보다 체감 속도가 더 빠름.

2024.01.01 - [utils] - [vim] Neovim 설치 : A Project that seeks to extend Vim.

 

[vim] Neovim 설치 : A Project that seeks to extend Vim.

neovim 은 현재 업데이트가 거의 되지 않고 있는 vim 과 호환성을 유지하면서새로운 기능을 추가하고자 하는 프로젝트의 이름이자, 해당 프로젝트의 결과물임. visualstudio code (vscode)와 쉽게 연동이

ds31x.tistory.com


설치하기

플러그인 매너저 파일 설치:

curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs \
  https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
  • 이후 사용할 플러그인들은 git을 이용하나,
  • vim-plug 자체를 설치할 때는 curl을 보통 사용함.

 

Neovim은 다음 위치에서 이 파일을 자동으로 읽어들임:

~/.local/share/nvim/site/autoload/plug.vim

 

vim-plug 가 자동설치되게 하는 init.lua 를 만들 수 있음:

-- vim-plug가 있어야 할 위치
local plug_vim = vim.fn.stdpath("data") .. "/site/autoload/plug.vim"

-- vim-plug가 없으면 자동으로 다운로드
if vim.fn.empty(vim.fn.glob(plug_vim)) > 0 then
  vim.fn.system({
    "curl", "-fLo", plug_vim, "--create-dirs",
    "https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim"
  })
end


init.lua에서 vim-plug 로딩:

Vim과 동일한 문법을 사용하려면, init.vim 을 사용하는 것이 낫지만...
최근 들어 lau의 사용이 더 증가하고 있어서 여기선 lua로 설명한다.

단 주의할 점은
vim-plugVimscript 플러그인이므로
Lua에서 “Vimscript를 호출”하는 방식으로 사용해야 함

 

테스트를 위해 junegunn/vim-plug 사용:

  • vim-plug가 실제로
  • GitHub에서 repo를 clone하고
  • runtimepath에 등록하고
  • PlugStatus에 표시되는지
  • 를 확인하기 위한 가장 순수한 플러그인 임.
-- stdpath("data")는 보통 다음의 위치를 가리킴:
--  ~/.local/share/nvim (Linux)
--  ~/AppData/Local/nvim-data (Windows)
local plugged = vim.fn.stdpath("data") .. "/plugged"

-- vim-plug 초기화: 플러그인 설치 경로 지정
vim.cmd("call plug#begin('" .. plugged .. "')")

-- 여기에 플러그인 목록이 놓임:
-- 다음은 Test 용으로 GitHub에 있는 vim-plug 저장소를 plugged/에 clone을 수행함.
vim.cmd("Plug 'junegunn/vim-plug'")

-- vim-plug 종료
vim.cmd("call plug#end()")

 

좀더 simple하게는 다음으로 작성해도 된다:

vim.cmd([[
  call plug#begin(stdpath('data') .. '/plugged')
  Plug 'junegunn/vim-plug'
  call plug#end()
]])

 

vim-plug로 플러그인을 관리할 경우,

  • 각 플러그인을 Git 저장소로 관리하며,
  • init.lua에 선언된 플러그인 목록을 기준으로
  • :PlugInstallgit clone / git pull을 수행하여
  • 플러그인들을 plugged/ 디렉토리에 내려받고
    이를 Vim/Neovim의 runtimepath에 연결

설치 실행:

Neovim 실행 후 다음을 통해 플러그인 설치:

:PlugInstalll

설치로 다음의 위치가 생김:

~/.local/share/nvim/plugged/vim-plug

 

Neovim 실행 후 다음을 수행하면 vim-plug 가 보여야 정상적으로 vim-plug가 동작하는 것임.

:PlugStatus

 


사용법

vim-plug는 Vim에 “패키지 관리 시스템”을 추가하는 스크립트임:

기능 의미
Plug 'user/repo' GitHub repo를 플러그인으로 선언
:PlugInstall git clone
:PlugUpdate git pull
:PlugClean 안 쓰는 플러그인 삭제
runtimepath 등록 Vim이 해당 디렉토리를 플러그인으로 인식하게 함

아직도 왜 vim-plug를 쓰는가?

Neovim에는 lazy.nvim, packer.nvim 같은 Lua 플러그인 매니저가 있지만
vim-plug는 여전히 다음 이유로 많이 사용됨:

  • Vim과 Neovim에서 동일하게 동작
  • 문법이 매우 단순
  • 위키, 튜토리얼, 레거시 설정과 100% 호환

특히 vimwiki, fugitive, surround, repeat 같은 고전 플러그인을 많이 쓰는 경우
vim-plug + init.lua (or init.vim) 조합이 가장 안정적임.


여러 Plug들

2026.01.14 - [utils] - vim-startify (neovim의 init.lua로 설정)

 

vim-startify (neovim의 init.lua로 설정)

1. Startify 설치 (vim-plug in init.lua)Lua 기반의 init.lua 에서 vim-plug를 호출.local plugged = vim.fn.stdpath("data") .. "/plugged"vim.cmd("call plug#begin('" .. plugged .. "')")vim.cmd("Plug 'mhinz/vim-startify'")vim.cmd("call plug#end()") 설

ds31x.tistory.com

2026.01.14 - [utils] - vimwiki/vimwiki (neovim의 init.lua로 설정)

 

vimwiki/vimwiki (neovim의 init.lua로 설정)

Neovim + vim-plug 환경을 기반으로 작성함.VimwikiVimwiki는 Vim/Neovim 안에서 동작하는 개인 위키(Wiki) 시스템 임.마크다운 파일을 링크로 연결하고, 일기·목록·태그·검색을 제공하여Obsidian + Notion + Zettel

ds31x.tistory.com


 

728x90

'utils' 카테고리의 다른 글

vimwiki/vimwiki (neovim의 init.lua로 설정)  (0) 2026.01.14
vim-startify (neovim의 init.lua로 설정)  (0) 2026.01.14
wget - Web Get  (0) 2026.01.10
ssh (Secure SHell) 사용 방법  (2) 2025.08.05
[Utils] vim (or nvim)에서의 register  (4) 2025.08.02