ํ์ฅ์ฑ๊ณผ ์ ์ฐ์ฑ์ ๋์ด๋ ๋ฐ ์ด์ ์ ๋ง์ถ Vim ํธ์ง๊ธฐ์ ํฌํฌ์ธ Neovim 0.7.0์ด ์ถ์๋์์ต๋๋ค. ์ด ํ๋ก์ ํธ๋ 2.0๋ ๋๊ฒ Vim ์ฝ๋ ๊ธฐ๋ฐ์ ์ฌ์์ ํด ์์ผ๋ฉฐ ๊ทธ ๊ฒฐ๊ณผ ์ฝ๋ ์ ์ง ๊ด๋ฆฌ๋ฅผ ๋จ์ํํ๊ณ , ์ฌ๋ฌ ์ ์ง ๊ด๋ฆฌ์ ๊ฐ์ ์์ ์ ๋ถ๋ฐฐํ๋ ์๋จ์ ์ ๊ณตํ๊ณ , ๊ธฐ๋ณธ ๋ถ๋ถ์์ ์ธํฐํ์ด์ค๋ฅผ ๋ถ๋ฆฌํ๋ ๋ณ๊ฒฝ์ด ์ด๋ฃจ์ด์ก์ต๋๋ค(์ธํฐํ์ด์ค๋ ๋ด๋ถ๋ฅผ ๊ฑด๋๋ฆฌ์ง ์๊ณ ๋ณ๊ฒฝ) ํ๋ฌ๊ทธ์ธ์ ๊ธฐ๋ฐ์ผ๋ก ์๋ก์ด ํ์ฅ ๊ฐ๋ฅํ ์ํคํ ์ฒ๋ฅผ ๊ตฌํํฉ๋๋ค. ํ๋ก์ ํธ์ ์๋ ๊ฐ๋ฐ์ Apache XNUMX ๋ผ์ด์ผ์ค์ ๋ฐ๋ผ ๋ฐฐํฌ๋๋ฉฐ ๊ธฐ๋ณธ ๋ถ๋ถ์ Vim ๋ผ์ด์ผ์ค์ ๋ฐ๋ผ ๋ฐฐํฌ๋ฉ๋๋ค. Linux(appimage), Windows ๋ฐ macOS์ฉ์ผ๋ก ์ค๋น๋ ์ด์ ๋ธ๋ฆฌ๊ฐ ์ค๋น๋์ด ์์ต๋๋ค.
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 ๋ด์์ ํธ์ถ๋ฉ๋๋ค.
์ ๋ฒ์ ์ ์๊ฒฉ ์์
์ ๋ํ ์ด๊ธฐ ์ง์์ ์ ๊ณตํ๋ฏ๋ก ์๋ฒ์์ Neovim์ ์คํํ๊ณ ๋ณ๋์ ui_client๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธ ์์คํ
์์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค. ๊ธฐํ ๋ณ๊ฒฝ ์ฌํญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. Python 2์ ๋ํ ์ง์ ์ค๋จ, ํค๋งต์์ Lua ํจ์ ์ฌ์ฉ ํ์ฉ, API์ ์ ๋ช
๋ น ์ถ๊ฐ, ํ๋ฌ๊ทธ์ธ ๊ฐ๋ฐ ๋ฐ ๊ตฌ์ฑ ๊ด๋ฆฌ์ Lua ์ธ์ด๋ฅผ ์ฌ์ฉํ๋ ๊ธฐ๋ฅ์ด ํฌ๊ฒ ํ์ฅ๋์์ต๋๋ค. ์ฝ๋ ๋ฌธ์ ์ง๋จ ๋๊ตฌ๊ฐ ๊ฐ์ ๋์๊ณ ์ ์ญ ์ํ ํ์์ค์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ผ๋ฉฐ ์ฑ๋ฅ ์ต์ ํ๊ฐ ์ํ๋์์ต๋๋ค. ๋ด์ฅ๋ LSP ํด๋ผ์ด์ธํธ(Language Server Protocol)์ ๊ธฐ๋ฅ์ด ํ์ฅ๋์ด ๋ถ์ ๋ก์ง ๋ฐ ์ฝ๋ ์์ฑ์ ์ธ๋ถ ์๋ฒ๋ก ์ ์กํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ถ์ฒ : opennet.ru