์ฝ 0.5๋ ๊ฐ์ ๊ฐ๋ฐ ๋์ ํ์ฅ์ฑ๊ณผ ์ ์ฐ์ฑ ํฅ์์ ์ด์ ์ ๋ง์ถ Vim ํธ์ง๊ธฐ์ ํฌํฌ์ธ Neovim 2.0๊ฐ ์ถ์๋์์ต๋๋ค. ์ด ํ๋ก์ ํธ๋ XNUMX๋ ๋๊ฒ Vim ์ฝ๋ ๊ธฐ๋ฐ์ ์ฌ์์ ํด ์์ผ๋ฉฐ ๊ทธ ๊ฒฐ๊ณผ ์ฝ๋ ์ ์ง ๊ด๋ฆฌ๋ฅผ ๋จ์ํํ๊ณ , ์ฌ๋ฌ ์ ์ง ๊ด๋ฆฌ์ ๊ฐ์ ์์ ์ ๋ถ๋ฐฐํ๋ ์๋จ์ ์ ๊ณตํ๊ณ , ๊ธฐ๋ณธ ๋ถ๋ถ์์ ์ธํฐํ์ด์ค๋ฅผ ๋ถ๋ฆฌํ๋ ๋ณ๊ฒฝ์ด ์ด๋ฃจ์ด์ก์ต๋๋ค(์ธํฐํ์ด์ค๋ ๋ด๋ถ๋ฅผ ๊ฑด๋๋ฆฌ์ง ์๊ณ ๋ณ๊ฒฝ) ํ๋ฌ๊ทธ์ธ์ ๊ธฐ๋ฐ์ผ๋ก ์๋ก์ด ํ์ฅ ๊ฐ๋ฅํ ์ํคํ ์ฒ๋ฅผ ๊ตฌํํฉ๋๋ค. ํ๋ก์ ํธ์ ์๋ ๊ฐ๋ฐ์ Apache XNUMX ๋ผ์ด์ผ์ค์ ๋ฐ๋ผ ๋ฐฐํฌ๋๋ฉฐ ๊ธฐ๋ณธ ๋ถ๋ถ์ Vim ๋ผ์ด์ผ์ค์ ๋ฐ๋ผ ๋ฐฐํฌ๋ฉ๋๋ค.
Neovim์ ๋ง๋ค๊ฒ ๋ Vim์ ๋ฌธ์ ์ ์ค ํ๋๋ 300๋ง ์ค์ด ๋๋ C(C89) ์ฝ๋๋ก ๊ตฌ์ฑ๋ ๋น๋ํ๊ณ ๋ชจ๋๋ฆฌ์ ์ฝ๋ ๊ธฐ๋ฐ์ด์์ต๋๋ค. ์์์ ์ฌ๋๋ค๋ง์ด Vim ์ฝ๋๋ฒ ์ด์ค์ ๋ชจ๋ ๋์์ค๋ฅผ ์ดํดํ๊ณ ์์ผ๋ฉฐ ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ ํ ๋ช ์ ๊ด๋ฆฌ์์ ์ํด ์ ์ด๋๋ฏ๋ก ํธ์ง๊ธฐ๋ฅผ ์ ์ง ๊ด๋ฆฌํ๊ณ ๊ฐ์ ํ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค. GUI๋ฅผ ์ง์ํ๊ธฐ ์ํด Vim ์ฝ์ด์ ๋ด์ฅ๋ ์ฝ๋ ๋์ Neovim์ ๋ค์ํ ํดํท์ ์ฌ์ฉํ์ฌ ์ธํฐํ์ด์ค๋ฅผ ์์ฑํ ์ ์๋ ๋ฒ์ฉ ๋ ์ด์ด ์ฌ์ฉ์ ์ ์ํฉ๋๋ค.
Neovim์ฉ ํ๋ฌ๊ทธ์ธ์ MessagePack ํ์์ด ์ฌ์ฉ๋๋ ์ํธ ์์ฉ์ ์ํด ๋ณ๋์ ํ๋ก์ธ์ค๋ก ์คํ๋ฉ๋๋ค. ํ๋ฌ๊ทธ์ธ๊ณผ์ ์ํธ ์์ฉ์ ํธ์ง๊ธฐ์ ๊ธฐ๋ณธ ๊ตฌ์ฑ ์์๋ฅผ ์ฐจ๋จํ์ง ์๊ณ ๋น๋๊ธฐ์์ผ๋ก ์ํ๋ฉ๋๋ค. ํ๋ฌ๊ทธ์ธ์ ์ก์ธ์คํ๋ ค๋ฉด TCP ์์ผ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํ๋ฌ๊ทธ์ธ์ ์ธ๋ถ ์์คํ ์์ ์คํ๋ ์ ์์ต๋๋ค. ๋์์ Neovim์ Vim๊ณผ์ ํ์ ํธํ์ฑ์ ์ ์งํ๊ณ Vimscript(Lua๊ฐ ๋์์ผ๋ก ์ ๊ณต๋จ)๋ฅผ ๊ณ์ ์ง์ํ๋ฉฐ ๋๋ถ๋ถ์ ํ์ค Vim ํ๋ฌ๊ทธ์ธ์ ๋ํ ์ฐ๊ฒฐ์ ์ง์ํฉ๋๋ค. Neovim์ ๊ณ ๊ธ ๊ธฐ๋ฅ์ Neovim ์ ์ฉ API๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์ถ๋ ํ๋ฌ๊ทธ์ธ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํ์ฌ ์ฝ 130์ฌ๊ฐ์ ํน์ ํ๋ฌ๊ทธ์ธ์ด ์ด๋ฏธ ์ค๋น๋์ด ์์ผ๋ฉฐ, ๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด(C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby)์ ํ๋ ์์ํฌ(Qt, ncurses, Node .js, Electron, GTK). ์ฌ๋ฌ ์ฌ์ฉ์ ์ธํฐํ์ด์ค ์ต์ ์ด ๊ฐ๋ฐ ์ค์ ๋๋ค. GUI ์ถ๊ฐ ๊ธฐ๋ฅ์ ํ๋ฌ๊ทธ์ธ๊ณผ ๋งค์ฐ ์ ์ฌํ์ง๋ง ํ๋ฌ๊ทธ์ธ๊ณผ ๋ฌ๋ฆฌ Neovim ๊ธฐ๋ฅ์ ๋ํ ํธ์ถ์ ์์ํ๋ ๋ฐ๋ฉด ํ๋ฌ๊ทธ์ธ์ Neovim ๋ด์์ ํธ์ถ๋ฉ๋๋ค.
์ ๋ฒ์ ์ ์ผ๋ถ ๋ณ๊ฒฝ ์ฌํญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋ถ์ ๋ฐ ์ฝ๋ ์์ฑ์ ์ํด ์ธ๋ถ ์๋น์ค์ ์ฐ๊ฒฐํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๋ด์ฅ LSP ํด๋ผ์ด์ธํธ(์ธ์ด ์๋ฒ ํ๋กํ ์ฝ)๊ฐ Lua์ ์ถ๊ฐ๋์์ต๋๋ค.
- ํ ๋น ๋ฒํผ์ ๋์์ธ์ ์ ์ดํ๋ โโAPI๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
- ํ์ฅ ํ๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํธ ์์ค์์ ๋ณ๊ฒฝ ์ฌํญ์ ์ถ์ ํ๋ API๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
- ํ๋ฌ๊ทธ์ธ ๊ฐ๋ฐ ๋ฐ ๊ตฌ์ฑ ๊ด๋ฆฌ๋ฅผ ์ํ ์ธ์ด๋ก Lua์ ๋ํ ์ง์์ด ํ์ฅ๋์์ต๋๋ค.
- tree-sitter ๊ตฌ๋ฌธ ๋ถ์ ์์ง์ ๋ํ ์คํ์ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
์ถ์ฒ : opennet.ru