<colbgcolor=#629D3D><colcolor=#fff> Neovim | |
유형 | 모달 텍스트 에디터 |
버전 | 0.10.2 |
개발 언어 | VimL, C, Lua |
라이선스 | 아파치 라이선스 2.0 |
링크 |
[clearfix]
1. 개요
hyperextensible Vim-based text editor
확장성을 고려한 vim의 포크 중 하나.
2. 특징
vim의 고질적인 문제인 답답한 확장 개발 문제를 해결하기 위해 만들어진 프로젝트이니만큼, 겉으로는 차이가 눈에 띄지 않을 지 몰라도 내부적으로는 완전히 싹 다 갈아엎은 수준의 정교한 API를 제공하는데, 이 API가 대부분 Lua API이다. 확장성 떨어지는 ex기반 VimL을 쓰느니 LuaJIT 인터프리터 자체를 내장해 버려 훨씬 편리한 언어를 쓸 수 있게 만들겠다는 것.
이외에도 TreeSitter, LSP 등 현대적인 프로토콜과 API를 적극적으로 지원하여 확장만 사용하면 vscode급의 우수한 개발환경을 누릴 수 있다.
단, lua가 원체 개발자의 편의성을 고려한 언어는 아니고 라이브러리가 부족하다 보니 이로 인한 단점도 많은 편.
3. 생태계
3.1. 유명 플러그인
lua API를 도입함에 따라 순수 lua로 작성된 Neovim 전용 플러그인 생태계가 독자적으로 만들어져 있으나, VimL과의 호환 레이어 덕분에 vim에서 사용하던 전통적인 확장들도 동시에 사용이 가능하다.- 플러그인 매니저
-
packer- 2023년 8월부터 지원이 중단되었다. - lazy - LazyVim 배포판의 기반이 되는 패키지 매니저
- pckr - packer의 정신적 후속작. 단, 포크는 아니다.
- lspconfig
- telescope - fuzzy finder UI 프레임워크
- nvim-dap
- UI
3.2. 배포판
리눅스의 배포판처럼, Neovim을 처음 접하는 초심자들을 위해 꾸준히 관리(maintain)되는 유명 플러그인 목록, 나아가 사실상 설치 후 바로 사용할 수 있는 IDE 수준으로 튜닝해 배포되는 배포판들이 존재한다.3.3. 클라이언트
vim을 리팩토링하며 서버-클라이언트 구조로 재설계했기에, RPC 통신을 통해 외부의 프로세스에서 Neovim 서버에 접속하거나 명령을 실행할 수 있다. # 이를 통해 작업 버퍼와 별도의 GUI Neovim 클라이언트 등을 구현할 수 있으며 터미널에서 불가능한 다양한 그래픽적 상호작용을 넣을 수 있다. 서드파티 GUI 클라이언트 목록- neovide - Rust/OpenGL 구현체로, 서드파티 독립 실행 GUI 클라이언트 중 가장 널리 사용되는 프로젝트.
-
firenvim - 브라우저 확장으로, Neovim을 브라우저
<textarea>
에서 돌린다(!). - vscode-neovim - vscode 확장 구현체. Vim을 에뮬레이팅 할 뿐인 타 확장과 다르게 실제 neovim 클라이언트로써 작동하기 때문에 대부분의 기능을 사용 가능하다.
- VimR - OSX 스위프트 네이티브 GUI 구현체
- goneovim - Go/QT 구현체