2024 - 07 - 07 일에 포스팅한 자료
요즘은 저는 GUI IDE인 VSCODE 사용하여 개발을 진행하지만, 작은 프로젝트나 설정 파일을 건드려야 할 때 주로 Neovim을 사용하고는 하는데요
NEOVIM 처음 입문할 때, 폴더 구조나 플러그인을 사용할 때, 감이 안잡히는 경우가 있어 공유하고자 합니다.
1. 소개
[1.1] Neovim 이란?
Neovim
은 Vim을 새롭게 개발한 것이 아닌 Vim에 확장 형태로 개발되어 NVIM 내부에서 설정이나 플러그인을 다루는 등, vimscript
로 작성하여 사용 가능하고, 추가적으로 lua
도 사용이 가능합니다. neovim의 비전에 따르면 VIM의 좋은 부분은 그대로 가져오고 그 이상을 원하는 사용자를 위해서 만들어졌다고 합니다.
추가된 기능 중에는 하나는 기본적으로 코드 자동 완성, 정의로 이동 등을 지원하는 LSP(Language Server Protocol
를 지원하기에 nvim-lspconfig 플러그인을 통해서 쉽게 사용이 가능합니다.
NVIM에 대하여, 자세하게 알고 싶으면 많은 정보는 아래의 링크에 들어가 확인할 수 있습니다.
Roadmap - Neovim
Roadmap This roadmap gives an overview of the project direction. A detailed list of features planned or under consideration can be found in the project boards; priorities are tracked by milestones: Version numbers (0.1, 0.2, 0.2.1, …) track production re
neovim.io
2. Neovim 폴더 구조
[2.1] NVIM 설정 (ROOT 폴더)
설치를 진행할 때, 설정 파일은 직접 만들어지지 않습니다. NVIM 문서에 따르면 사용하는 플랫폼에 따라서 유닉스, 리눅스, Windows는 위의 그림에 보여진 경로를 확인하여 해당 경로에 파일을 만들어 설정하면 설정을 시작할 수 있습니다.
- 유닉스, 리눅스: ~/.config/nvim/init.vim (or init.lua)
- 윈도우: ~/AppData/Local/nvim/init.vim (or init.lua)
설정 폴더가 없는 경우 만들어서 직접 만들어서 해결하도록 설계되어 있습니다.
nvim 폴더의 경로를 지정하고 싶다면 환경변수인 XDG_CONFIG_HOME
을 지정하며 루트 폴더를 수정하면 됩니다.
[2.2] nvim 설정파일, 내부 폴더 구조
따로 명확한 설정 폴더의 아키택처 구조는 없고, nvim은 유연성을 제공하기에, 사용자가 편한 생산성있고 가독성 있는 관리하기 편한 폴더 구조를 선택하여 만들어 사용하면 됩니다.
단, 유저가 init.lua
또는 init.vim
을 지정된 경로(위의 설명 참고) 에 만들어 거기서 tree 구조로 만들어 사용해야하는 구조입니다.
따라서, 각각 플램폼에 따라 다른 위에서 설명한 경로에 설정 파일(init.lua) 을 만들면, NVIM의 실행파일이 설정 파일(init.lua)을 인식하여 설정한 내용(keymap, options) 사용할 수 있기에 만들어져 있지 않다면, 위의 설명에서 설명한 경로를 따라가 만들도록 합시다.
이제, 만들어진 설정 파일(init.lua) 에는 keymap, plugin, theme 등 다양한 설정을 넣어서 생산성을 극대화할 수 있습니다.
이제 폴더 구조를 잡아볼까요?
[2.3] 실제 적용
(1) 전체적인 구조
제가 실제로 사용하고 있는 폴더 구조로 예시를 들겠습니다.
처음부터 너무 복잡하게 사용할 필요는 없습니다. 하지만 관리를 편하게 하기 위해서, 폴더 구조를 잡고 하나하나 추가하면서 사용하는 방법을 추천하도록 하겠습니다. 필요 없고 간단하게 사용하고 싶다면 만들지 않으면 됩니다. 이를 얘기하는 이유는 시간을 많이 잡을 수 있고, 나중에 구조가 안잡혀 있다면 그 또한 리팩토링하느라 시간이 많이 잡히기에 선택을 잘할 필요는 있습니다 따라서, 대략 구조만 잡는다 생각하면 됩니다.
3. 플러그인 사용하기
플러그인을 사용할 수 있는 방법은 여러가지입니다. 저는 요즘 nvim 플러그인을 설치하는데 인기 있는 lazy.nvim을 사용하도록 하겠습니다. lazy.nvim root 폴더에 init.lua
에서 처음 시작할 때, plugin을 먼저 설치하는 방식을 택해서 사용합니다. 아래와 같이요
🛠️ Installation | lazy.nvim
There are multiple ways to install lazy.nvim.
lazy.folke.io
(1) 코드 설명
- 4 ~ 18 라인 (local ~ lazypath)
부트스트랩(4~17)
에서는 lazy.nvim인 플러그인 매니저가 존재하는지 확인하는 과정입니다. 플러그인 매니저가 존재하지 않는다면, git 명령을 이용해서 clone하여 받아오는 과정입니다. 저장되는 곳은 플랫폼에 따라 다릅니다. 아래 리스트를 참고하여 주세요 - linux : ~/.local/share/nvim/lazy/lazy.nvim
- window : % LOCALAPPDATA%\nvim-data\lazy\lazy.nvim
- 22번 라인 (require ~ plugins)
이제 플러그인 매니저가 정상적으로 사용이 가능하니, require("lazy"). setup("plugins")의 22번 라인에서 플러그인 설정을 로드하게 되는 과정입니다. 22번 라인에서 init.lua라는 문구를 호출한다 명시하지 않았습니다. 이는 Lua 표준 동작을 따라는 Neovim의 runtimepath 검색 메커니즘
에 따라서 행동하게 됩니다.
위의 그림에 nvim 문서에는 requre('mod')를 찾을 때, 먼저 mod.lua -> init.lua를 찾는 것을 확인할 수 있습니다. 파일 검색 메커니즘이 확인되었으니, 이제 plugins.lua라는 파일이 있는지 확인 후에는 plugins/init.lua를 찾게 되는 것을 확인할 수 있습니다.
- 25~26 라인 (keymap, options)
해당 라인은 플러그인과 상관(?) 없으나 의미는 위와 같습니다. lua 검색 메커니즘에 따라서 config라는 폴더를 찾고 options를 찾게 되는 겁니다. 해당 파일 안에는 단축키, 옵션이 들어가지만 해당 설명까지 하면 블로그 포스트가 길어질 것 같아, 다음 글에 작성하도록 하겠습니다.
(2) 플러그인 설치
22번 라인
으로 돌아가, 이제 pluginst/init.lua 에서 해야 할 일을 지정해 줍니다. 아래와 같이 플러그인을 설치해 주면 되는 것입니다.
왜 return
구조를 선택했냐면 아래의 링크인 lazy.nvim 문서를 참고하여 만들었기에 따로 설명을 하지는 않겠습니다.
- lazy.vim의 구조: https://lazy.folke.io/usage/structuring
📂 Structuring Your Plugins | lazy.nvim
Some users may want to split their plugin specs in multiple files.
lazy.folke.io
단순히 추천이기에 더 좋은 구조가 있다면 공유하거나 사용하면 될 것 같습니다. 하지만, 저는 문서의 추천을 따르는 편이기에 그렇게 설정하도록 하겠습니다. 이외에 각각의 플러그인 설치 방법은 각각의 보통 유명한 nvim 플러그인이라면 README에 친절하게 설명이 돼있을 것입니다. 아마 모든 플러그인이 표준을 맞추기에 위의 그림처럼 설치를 한다면 사용이 가능할 것 입니다.
- 25 라인
5 ~ 20번 라인은 이해가 갈 것 입니다. 배열 구조로 각각의 플러그인이 명시되어 설치되고 있지만, 특이한 방식으로 작성이 된 것으로 확인이 됩니다. 이는 plugins 폴더에 있는 telescope.lua 파일을 따로 만들어서 지정하여 설치하고 telescope 플러그인을 설정하려고 하는 의도입니다. 주로 이렇게 import 방식을 하는 이유는 상대적으로 다른 플러그인 보다 telescope 설정이 길어져서 따로 파일을 두어 관리를 진행하겠다는 의도입니다.
- plugins/telescope.lua
telescope.lua
파일에는 이렇게 설정이 되어 있습니다. plugins/init.lua
파일에 있는 다른 설정과 비슷한 구조를 가지고 있는 것을 확인할 수 있습니다.
4. 플러그인 소개
[4.1] 다양한 플러그인 들을 소개
[4.1] 플러그인을 조합할 시간이 없을 때
- https://github.com/AstroNvim/AstroNvim
- https://github.com/NvChad/NvChad
- https://github.com/NvChad/NvChad
5. 플러그인을 사용할 때, 주의할 점
플러그인을 사용할 때, 꼭 미리 설치해야하는 것(REQUIREMENTS 등) 들은 README에 적혀있습니다. 따라서, 플러그인이 사용이 안된다면 이러한 점들을 유의하여 살펴볼 필요가 있습니다.
위에 설명한 구조로 플러그인을 사용할 수 있으며, 위의 설명에 포함하지 않는 폴더 구조에 있는 파일에 대해서는 다음 편에 블로그에 올리도록 하겠습니다.
감사합니다.
'etc > VIM, NVIM 에디터' 카테고리의 다른 글
VIM, NVIM - 파일 생성시 자동 헤더 부분 문구 생성, BufNewFile (0) | 2021.02.06 |
---|