@@ -7,34 +7,58 @@ tags: vim developer-experience
77
88์ฃผ๋ณ์์ ํ๋ ๊ณ์ ๋ฌผ์ด๋ด์ Vim๊ณผ Neovim์ ๊ฒฐ์ ์ ์ธ ์ฐจ์ด์ ์ ๋ฌธ์๋ก ๋จ๊ธด๋ค. ๋น์ฅ์ ์๊ฐ๋๋๋๋ก ๋์ดํ๊ธฐ ๋๋ฌธ์, ์ถํ์ ๋ด์ฉ์ด ๋ ์ถ๊ฐ๋ ์ ์๋ค.
99
10- * Vim์ ์ปค์คํฐ๋ง์ด์งํ ๋๋ ** VimScript** ๋ฅผ ์ฐ์ง๋ง, Neovim์ ์ปค์คํฐ๋ง์ด์งํ ๋๋ ** lua** ๋ฅผ ์ฌ์ฉํ๋ค.
11- * ๊ฐ์ธ์ ์ผ๋ก VimScript๋ฅผ ์ ํธํ์ง ์๋๋ฐ, vimscript ๊ธฐ๋ฐ์ผ๋ก ์ง์ฌ์ ธ ์๋ ํ๋ฌ๊ทธ์ธ์ ์์ค์ฝ๋๋ฅผ ์ฝ๋ ๊ฒ ์์ฒด๊ฐ ๊ณ ํต์ค๋ฌ์ ๋ ๊ฒฝํ์ด๊ธฐ๋ ํ๊ณ , vimscript๋ผ๋ ์ธ์ด ์์ฒด๊ฐ ๊ทธ๋ฅ ๊ฐ๋
์ฑ์ด ์ข์ ํธ์ ์๋๋ผ๊ณ ์๊ฐํ๋ค. ๊ธฐ๋ฅ์ ์ผ๋ก๋ ๋ชจ์๋์ด ์์ ์ ์์ผ๋, ์ฝ์๋๋ ๊ณ ํต์ค๋ฌ์ด๋ฐ ์ด๊ฑธ๋ก ์คํฌ๋ฆฝํธ๋ฅผ ์ง๋ผ๋ฉด ์ด์ง๊ฐํ๋ฉด ํผํ ๊ฒ ๊ฐ๋ค.
12- * ๋ฐ๋ฉด. lua๋ vimscript์ ๋นํ๋ฉด ๊ฐ๋
์ฑ์ด ์ ๋นํ ๋์ ํธ์ ์๋๋ค. ์ธ์ด ์์ฒด์ ๊ธฐ๋ฅ์ผ๋ก ๋ณด์๋ฉด Python/Ruby/Javascript ๋ฑ์ ์ธ์ด์ ๋น๊ตํ์๋ ๊ต์ฅํ ์ข ๋ํดํ๊ฒ ๋๊ปด์ง ์๋ ์๋ค.[ ^ 1 ] ๋ค๋ง, lua๋ macOS์์ ์ฌ์ฉํ๋ ์๋ํ ํด์ธ [ hammerspoon] ( https://www.hammerspoon.org/ ) ์ด๋ผ๋๊ฐ, ํฐ๋ฏธ๋ ์๋ฎฌ๋ ์ดํฐ์ธ [ wezterm] ( https://wezfurlong.org/wezterm/index.html ) ์ด๋ผ๋๊ฐ ** Unix ๊ณ์ด์ CLI ํ๋ก๊ทธ๋จ์ configuration์ ์์ฑํ๋๋ฐ ์์ด์ ์ฌ์ค์ De facto์ ์ญํ ** ์ ํ๊ณ ์๋ค. ์ธ์ด ์์ฒด๊ฐ ๋ง์์ ๋ค์ง ์๋ ๋ถ๋ถ์ ์ด๋ ์ ๋ ์๊ธด ํ์ง๋ง, ๊ฐ๋
์ฑ์ด๋ ๊ฐ๋ฐํธ์์ฑ์ด ์์ฒญ ๋์ ๊ฒ์ ์๋๊ธฐ ๋๋ฌธ์ ๊ฑฐ๋ถํ ์ด์ ๋ ๋ฑํ ์๋ค๊ณ ์๊ฐํ๊ณ ์ฐ๊ณ ์๋ค.
13- * Neovim์ ์ปค์คํฐ๋ง์ด์งํ ๋ ํ์ฉํ๋ lua๋ luarocks๋ผ๋ ํจํค์ง๋งค๋์ ๊ฐ ์๊ธฐ ๋๋ฌธ์, ํ์ํ๋ค๋ฉด ์ผ๋ง๋ ์ง ๊ฐ์ ธ๋ค ์ธ ์ ์๋ค.
14- * luarocks๋ฅผ ์ด์ฉํ๋ Neovim ํ๋ฌ๊ทธ์ธ์ ๊ทธ๋ ๊ฒ ๋ง์ง๋ ์์ง๋ง, (์ค์ง์ ์ธ ์ธ๋ชจ์ ์ ๋ฌด๋ฅผ ๋ ๋์) luarocks๋ฅผ ํ์ฉํ ํ๋ฌ๊ทธ์ธ๋ ์ข
์ข
๋ณด์ด๊ธด ํ๋ค. ํ์คํ๊ฑด, lua ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋ฐ๋์ด ์จ ecosystem์ ๋ฑ์ ์
๊ณ ์ธ์ ๋ ์ง ํ์ฉํ ์ ์๋ค.
15- * ํ๋ฌ๊ทธ์ธ ์ํ๊ณ๋ ์ ๋ฒ ๊ด์ฐฎ์ ํธ์ด๋ค.
16- * telescope / nvim-cmp / treesitter ๊ฐ์ ํค์๋ ์์ฃผ๋ก๋ง ์ฐพ์๋ด๋ ์ด๊ฑธ ์์ฉํ ๊ด์ฐฎ์ ๊ธฐ๋ฅ์ ํ๋ฌ๊ทธ์ธ๋ค์ ๋ง์ด ์ดํด๋ณผ ์ ์๋ค.
17- * ** telescope** - Neovim์์ ์ฌ์ฉํ ์ ์๋ ๊ฒ์์์ง์ด๋ผ๊ณ ์๊ฐํด๋ด๋ ๋ ๊ฒ ๊ฐ๋ค. ์์ธํ ๋ด์ฉ์ ` :help telescope ` ๋ง ๋ด๋ ์ ์ ์๊ฒ ์ง๋ง, ํ์ผ ๊ฒ์/ํจํด ๊ฒ์ ๋ฟ๋ง์ด ์๋๋ผ ** query๋ฅผ ๋ฃ์ ์ ์๋ ๊ฒ์ด๋ผ๋ฉด ๋ชจ๋ ๊ฒ์ด๋ ๋ค ํด๋ผ ์ ์๋ ์์ ๋ด** ์ด๋ผ ์๊ฐํ๋ค.
18- * ์๋ฅผ ๋ค๋ฉด, **git log**๋ฅผ ๊ฒ์ํ๋ค๋๊ฐ, ํ์ฌ ์ด์ด๋์ ํ์ผ์ **git history๋ฅผ ์ด๋**ํ๋ค๋๊ฐ, **๊ฐ๊ฐ์ ๋ธ๋์น**์ ๋ํ git history๋ฅผ ํ์ํ๋ ๋ฑ์ git๊ณผ ๊ด๋ จ๋ ์ ์ฉํ ๊ธฐ๋ฅ์ ์ด๋ฏธ ๋ค์ดํฐ๋ธ๋ก ๋ค์ด๊ฐ ์๋ค.
19- * ์ฌ๊ธฐ์ ์ข ๋ ์์ฉํ๋ค๋ฉด, ์๋์ ์์์ ๊ฐ์ด ์ด์ฉํ ์ ์๋ค.
20- * ํ๋ก์ ํธ๋ฅผ ๊ตฌ์ฑํ๋ ์์ค์ฝ๋์ **ํด๋์ค/๋ชจ๋/ํจ์/์์ ๊ฒ์**
21- * formatter/linter ์ค๋ฅ ๊ฒ์ **(diagnostics)**
22- * GitHub ๋ฆฌํฌ์งํ ๋ฆฌ์ **issue/PR ๊ฒ์** -- [pwntester/octo.nvim](https://github.com/pwntester/octo.nvim) ์ฐธ๊ณ
23- * throttling๋ง ์ํ๋ค๋ฉด **์น ์์ฒญ**์ด๋๋ ์ฐ๊ฒฐํ ์ ์๋ค. ๊ฐ์ธ์ ์ผ๋ก [์๋ผ๋ ๊ฒ์ API์ ์ฐ๋ํ๋ ์คํ](https://github.com/malkoG/aladin.nvim)์ ํ๊ณ ์๋ค.
24- * **nvim-cmp** - ์ด๋ฆ์์ ์ ์ ์๋ฏ์ด, ๋ง ๊ทธ๋๋ก **์๋์์ฑ ๊ธฐ๋ฅ**์ ์ํด ๋ง๋ค์ด์ง ํ๋ฌ๊ทธ์ธ ecosystem์ด๋ค.
25- * Neovim์์ ์๋์์ฑ ๊ธฐ๋ฅ์ ์ปค์คํฐ๋ง์ด์ง ํด์ผ ํ๋ค๋ฉด, ๋ฐ๋ก ์ด ์น๊ตฌ๋ฅผ ์ด์ฉํ๋ค๋ฉด ์์ฃผ ๊ฐ๋จํ ๋ฌธ์ ๊ฐ ๋๋ค.
26- * pwd ๊ธฐ์ค์ ๊ฒฝ๋ก ์๋ ์์ฑ / emoji / ๋ฒํผ ๋ด์์ ๋ฐ๋ณต์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋จ์ด ์์ฃผ์ ์๋์์ฑ ๊ฐ์ ์ฌ์ํ ๊ฒ๋ถํฐ **Code Snippet** / **git commit sha1 ํด์ฌ** / **GitHub author ์๋ ์์ฑ** / **Language Server์ ์ฐ๋๋ auto import** ๊น์ง ์
๋ง๋๋ก ์๋์์ฑ ๊ธฐ๋ฅ์ ์ปค์คํฐ๋ง์ด์งํ ์ ์๋ค. ์์์ ์ค๋ช
ํ๋ telescope์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฟผ๋ฆฌํ ์ ์๋ ๊ฒ์ด๋ผ๋ฉด ์ด๋ป๊ฒ๋ ํ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฅ์ฑ์ ๋ฌด๊ถ๋ฌด์งํ๋ค.
27- * **treesitter** - ์ฌ์ค ์ด๊ฒ ์ ์ข๋๊ณ ํ๋๋ฉด ๋ง์ ์ฌ๋๋ค์๊ฒ ์ค๋ํ๋๊ฒ ์ฝ๊ฐ ์ด๋ ค์ด ๋์ ์ด๊ธฐ๋ ํ๋ค. "๊ตณ์ด?" ๋ผ๋ ์๊ฐ์ด ๋ค ์๋ ์๊ธฐ ๋๋ฌธ์ด๋ค.
28- * [treesitter](https://tree-sitter.github.io/tree-sitter/) ์์ฒด๋ ํ์๋ฅผ ๋ง๋ค์ด์ฃผ๋ ์ ๋ค๋ ์ดํฐ์ผ ๋ฟ์ด์ง๋ง, ํธ๋ฆฌ์ํฐ ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ง ํ์๊ฐ ํ์ฉ๋๊ฐ ๋๊ธฐ ๋๋ฌธ์ ์ ์ฉํจ์ ์๊ณ ์๋ ์ฌ๋๋ค์ ์ ์ฐ๊ณ ์๋ ๊ฒ ๊ฐ๋ค.
29- * ์๋ฅผ ๋ค๋ฉด, ์ปค์คํ
๋ฃฐ์ ์ง์ ํด์ฃผ๋ฉด ๋ด๊ฐ ํํํ๊ณ ์ ํ๋ ์์ค์ฝ๋์ ๋ฒ์๋ฅผ ํ์ํ๋ ๊ฒ์ด ๊ฐ๋จํด์ง๋ค. ์๋๋ฉด, scheme์ผ๋ก ์ปค์คํ
๋ฃฐ์ ์ถ๊ฐํ๋ ๊ฒ ์์ฒด๊ฐ ์ผ์ข
์ ํธ๋ฆฌ ์๋ฃ๊ตฌ์กฐ๋ฅผ ํ์ํ๋ ์ฟผ๋ฆฌ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
30- * ์๊ณ ๋ฆฌ์ฆ์ ๋ํ ๋ฐฐ๊ฒฝ์ง์์ด ์๋ ์ฌ๋๋คํํ
๋ ์ข ๋ ๋จ์ํ๊ฒ ์ค๋ช
ํ๊ธฐ๋ ํ๋๋ฐ, **"treesitter๋ 2์ฐจ์ ๋ฐฐ์ด๋ก ๋ฐ๋ผ๋ด์ผ ํ๋ ์์ค์ฝ๋๋ฅผ ํธ๋ฆฌ๋ก ๋ฐ๊ฟ์ ์๊ฐํ ์ ์๊ฒ ํด์ค๋ค."** ์ด๋ฐ ํํ์ ์ฆ๊ฒจ์ฐ๋ ํธ์ด๋ค.
31- * ์ด์ ๋ํด ์ข ๋ ์ง๊ด์ ์ผ๋ก ์๋ฟ์ ์ ์๋ ์์๋ [ziontee113/syntax-tree-surfer](https://github.com/ziontee113/syntax-tree-surfer)์ธ๋ฐ, ํจ์๊ฐ ์ ์๋์ด ์๋ ์์น๋ฅผ ๋ฐ๊พธ๋ demo ์์์ ์ดํด๋ณด์. Syntax tree๋ก ๋ํ๋ด๋ฉด ๋ ํจ์์ ์์น๋ Tree์ ๊ด์ ์์ ๋ณด๋ฉด sibling์ผ๋ก ๋ณผ ์ ์๋ค. **๋ ํจ์๊ฐ ์ ์๋์ด ์๋ ์์น๋ฅผ ๋ฐ๊พธ๋๊ฒ์ ์ฌ์ค์ ํธ๋ฆฌ ๋
ธ๋์ ์์น๋ฅผ ๋ฐ๊พธ๋ ์์ฃผ ๊ฐ๋จํ ๋ฌธ์ **๋ก ํ์์ด ๋๋ค.
32-
33- * ๊ทธ ์ธ์๋ language server ์ง์๋ ๋๋ฆ ๋์์ง๋ ์์ ํธ์ธ๋ฐ, ์ ๋๋ก ์ธํ
ํ๋ ค๋ฉด ๊ฐ๊ฐ language server๋ง๋ค ๊ฑธ๋ง๋ configuration์ ํด์ค์ผ ํ๋ ์๊ณ ๋ก์์ด ์๊ธธ ์ ์์ง๋ง, [ coc-nvim] ( https://github.com/neoclide/coc.nvim ) ์ธํ
ํด๋๋ ๊ฐ์ธ์ ์ผ๋ก ํฌ๊ฒ ๋ฌธ์ ๊ฐ ์์๋ค.
10+ ## ์ฌ์ฉํ๋ ์ธ์ด๋ถํฐ ๋ค๋ฅด๋ค (VimScript / Lua)
3411
12+ Vim์ ์ปค์คํฐ๋ง์ด์งํ ๋๋ ** VimScript** ๋ฅผ ์ฐ์ง๋ง, Neovim์ ์ปค์คํฐ๋ง์ด์งํ ๋๋ ** lua** ๋ฅผ ์ฌ์ฉํ๋ค.
3513
14+ ๊ฐ์ธ์ ์ผ๋ก VimScript๋ฅผ ์ ํธํ์ง ์๋๋ฐ, vimscript ๊ธฐ๋ฐ์ผ๋ก ์ง์ฌ์ ธ ์๋ ํ๋ฌ๊ทธ์ธ์ ์์ค์ฝ๋๋ฅผ ์ฝ๋ ๊ฒ ์์ฒด๊ฐ ๊ณ ํต์ค๋ฌ์ ๋ ๊ฒฝํ์ด๊ธฐ๋ ํ๊ณ , vimscript๋ผ๋ ์ธ์ด ์์ฒด๊ฐ ๊ทธ๋ฅ ๊ฐ๋
์ฑ์ด ์ข์ ํธ์ ์๋๋ผ๊ณ ์๊ฐํ๋ค. ๊ธฐ๋ฅ์ ์ผ๋ก๋ ๋ชจ์๋์ด ์์ ์ ์์ผ๋, ์ฝ์๋๋ ๊ณ ํต์ค๋ฌ์ด๋ฐ ์ด๊ฑธ๋ก ์คํฌ๋ฆฝํธ๋ฅผ ์ง๋ผ๋ฉด ์ด์ง๊ฐํ๋ฉด ํผํ ๊ฒ ๊ฐ๋ค.
15+
16+ ๋ฐ๋ฉด. lua๋ vimscript์ ๋นํ๋ฉด ๊ฐ๋
์ฑ์ด ์ ๋นํ ๋์ ํธ์ ์๋๋ค. ์ธ์ด ์์ฒด์ ๊ธฐ๋ฅ์ผ๋ก ๋ณด์๋ฉด Python/Ruby/Javascript ๋ฑ์ ์ธ์ด์ ๋น๊ตํ์๋ ๊ต์ฅํ ์ข ๋ํดํ๊ฒ ๋๊ปด์ง ์๋ ์๋ค.[ ^ 1 ] ๋ค๋ง, lua๋ macOS์์ ์ฌ์ฉํ๋ ์๋ํ ํด์ธ [ hammerspoon] ( https://www.hammerspoon.org/ ) ์ด๋ผ๋๊ฐ, ํฐ๋ฏธ๋ ์๋ฎฌ๋ ์ดํฐ์ธ [ wezterm] ( https://wezfurlong.org/wezterm/index.html ) ์ด๋ผ๋๊ฐ ** Unix ๊ณ์ด์ CLI ํ๋ก๊ทธ๋จ์ configuration์ ์์ฑํ๋๋ฐ ์์ด์ ์ฌ์ค์ De facto์ ์ญํ ** ์ ํ๊ณ ์๋ค. ์ธ์ด ์์ฒด๊ฐ ๋ง์์ ๋ค์ง ์๋ ๋ถ๋ถ์ ์ด๋ ์ ๋ ์๊ธด ํ์ง๋ง, ๊ฐ๋
์ฑ์ด๋ ๊ฐ๋ฐํธ์์ฑ์ด ์์ฒญ ๋์ ๊ฒ์ ์๋๊ธฐ ๋๋ฌธ์ ๊ฑฐ๋ถํ ์ด์ ๋ ๋ฑํ ์๋ค๊ณ ์๊ฐํ๊ณ ์ฐ๊ณ ์๋ค.
17+
18+ ## luarocks ํจํค์ง์ ํธํ์ด ๋๋ค
19+ Neovim์ ์ปค์คํฐ๋ง์ด์งํ ๋ ํ์ฉํ๋ lua๋ luarocks๋ผ๋ ํจํค์ง๋งค๋์ ๊ฐ ์๊ธฐ ๋๋ฌธ์, ํ์ํ๋ค๋ฉด ์ผ๋ง๋ ์ง ๊ฐ์ ธ๋ค ์ธ ์ ์๋ค.
20+
21+ luarocks๋ฅผ ์ด์ฉํ๋ Neovim ํ๋ฌ๊ทธ์ธ์ ๊ทธ๋ ๊ฒ ๋ง์ง๋ ์์ง๋ง, (์ค์ง์ ์ธ ์ธ๋ชจ์ ์ ๋ฌด๋ฅผ ๋ ๋์) luarocks๋ฅผ ํ์ฉํ ํ๋ฌ๊ทธ์ธ๋ ์ข
์ข
๋ณด์ด๊ธด ํ๋ค. ํ์คํ๊ฑด, lua ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋ฐ๋์ด ์จ ecosystem์ ๋ฑ์ ์
๊ณ ์ธ์ ๋ ์ง ํ์ฉํ ์ ์๋ค.
22+
23+
24+ ## ํ๋ฌ๊ทธ์ธ ์ํ๊ณ๋ ์ ๋ฒ ๊ด์ฐฎ์ ํธ์ด๋ค.
25+ ** telescope** / ** nvim-cmp** / ** treesitter** ๊ฐ์ ํค์๋ ์์ฃผ๋ก๋ง ์ฐพ์๋ด๋ ์ด๊ฑธ ์์ฉํ ๊ด์ฐฎ์ ๊ธฐ๋ฅ์ ํ๋ฌ๊ทธ์ธ๋ค์ ๋ง์ด ์ดํด๋ณผ ์ ์๋ค.
26+
27+ ### telescope
28+
29+ Neovim์์ ์ฌ์ฉํ ์ ์๋ ๊ฒ์์์ง์ด๋ผ๊ณ ์๊ฐํด๋ด๋ ๋ ๊ฒ ๊ฐ๋ค. ์์ธํ ๋ด์ฉ์ ` :help telescope ` ๋ง ๋ด๋ ์ ์ ์๊ฒ ์ง๋ง, ํ์ผ ๊ฒ์/ํจํด ๊ฒ์ ๋ฟ๋ง์ด ์๋๋ผ ** query๋ฅผ ๋ฃ์ ์ ์๋ ๊ฒ์ด๋ผ๋ฉด ์ด๋ค ๊ฒ์ด๋ ๋ค ํด๋ผ ์ ์๋ ์์ ๋ด** ์ด๋ผ ์๊ฐํ๋ค.
30+
31+ ์๋ฅผ ๋ค๋ฉด, ** git log** ๋ฅผ ๊ฒ์ํ๋ค๋๊ฐ, ํ์ฌ ์ด์ด๋์ ํ์ผ์ ** git history๋ฅผ ์ด๋** ํ๋ค๋๊ฐ, ** ๊ฐ๊ฐ์ ๋ธ๋์น** ์ ๋ํ git history๋ฅผ ํ์ํ๋ ๋ฑ์ git๊ณผ ๊ด๋ จ๋ ์ ์ฉํ ๊ธฐ๋ฅ์ ์ด๋ฏธ ๋ค์ดํฐ๋ธ๋ก ๋ค์ด๊ฐ ์๋ค.
32+
33+ ์ฌ๊ธฐ์ ์ข ๋ ์์ฉํ๋ค๋ฉด, ์๋์ ์์์ ๊ฐ์ด ์ด์ฉํ ์ ์๋ค.
34+ * ํ๋ก์ ํธ๋ฅผ ๊ตฌ์ฑํ๋ ์์ค์ฝ๋์ ** ํด๋์ค/๋ชจ๋/ํจ์/์์ ๊ฒ์**
35+ * formatter/linter ์ค๋ฅ ๊ฒ์ ** (diagnostics)**
36+ * GitHub ๋ฆฌํฌ์งํ ๋ฆฌ์ ** issue/PR ๊ฒ์** -- [ pwntester/octo.nvim] ( https://github.com/pwntester/octo.nvim ) ์ฐธ๊ณ
37+ * throttling๋ง ์ํ๋ค๋ฉด ** ์น ์์ฒญ** ์ด๋๋ ์ฐ๊ฒฐํ ์ ์๋ค. ๊ฐ์ธ์ ์ผ๋ก [ ์๋ผ๋ ๊ฒ์ API์ ์ฐ๋ํ๋ ์คํ] ( https://github.com/malkoG/aladin.nvim ) ์ ํ๊ณ ์๋ค.
38+
39+ ### nvim-cmp
40+
41+ ์ด๋ฆ์์ ์ ์ ์๋ฏ์ด, ๋ง ๊ทธ๋๋ก ** ์๋์์ฑ ๊ธฐ๋ฅ** ์ ์ํด ๋ง๋ค์ด์ง ํ๋ฌ๊ทธ์ธ ecosystem์ด๋ค. Neovim์์ ์๋์์ฑ ๊ธฐ๋ฅ์ ์ปค์คํฐ๋ง์ด์ง ํด์ผ ํ๋ค๋ฉด, ๋ฐ๋ก ์ด ์น๊ตฌ๋ฅผ ์ด์ฉํ๋ค๋ฉด ์์ฃผ ๊ฐ๋จํ ๋ฌธ์ ๊ฐ ๋๋ค.
42+
43+ pwd ๊ธฐ์ค์ ๊ฒฝ๋ก ์๋ ์์ฑ / emoji / ๋ฒํผ ๋ด์์ ๋ฐ๋ณต์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋จ์ด ์์ฃผ์ ์๋์์ฑ ๊ฐ์ ์ฌ์ํ ๊ฒ๋ถํฐ ** Code Snippet** / ** git commit sha1 ํด์ฌ** / ** GitHub author ์๋ ์์ฑ** / ** Language Server์ ์ฐ๋๋ auto import** ๊น์ง ์
๋ง๋๋ก ์๋์์ฑ ๊ธฐ๋ฅ์ ์ปค์คํฐ๋ง์ด์งํ ์ ์๋ค. ์์์ ์ค๋ช
ํ๋ telescope์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฟผ๋ฆฌํ ์ ์๋ ๊ฒ์ด๋ผ๋ฉด ์ด๋ป๊ฒ๋ ํ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฅ์ฑ์ ๋ฌด๊ถ๋ฌด์งํ๋ค.
44+
45+ ### treesitter
46+
47+ ์ฌ์ค ์ด๊ฒ ์ ์ข๋๊ณ ํ๋๋ฉด ๋ง์ ์ฌ๋๋ค์๊ฒ ์ค๋ํ๋๊ฒ ์ฝ๊ฐ ์ด๋ ค์ด ๋์ ์ด๊ธฐ๋ ํ๋ค. "๊ตณ์ด?" ๋ผ๋ ์๊ฐ์ด ๋ค ์๋ ์๊ธฐ ๋๋ฌธ์ด๋ค.
48+
49+ [ treesitter] ( https://tree-sitter.github.io/tree-sitter/ ) ์์ฒด๋ ํ์๋ฅผ ๋ง๋ค์ด์ฃผ๋ ์ ๋ค๋ ์ดํฐ์ผ ๋ฟ์ด์ง๋ง, ํธ๋ฆฌ์ํฐ ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ง ํ์๊ฐ ํ์ฉ๋๊ฐ ๋๊ธฐ ๋๋ฌธ์ ์ ์ฉํจ์ ์๊ณ ์๋ ์ฌ๋๋ค์ ์ ์ฐ๊ณ ์๋ ๊ฒ ๊ฐ๋ค.
50+
51+ ์๋ฅผ ๋ค๋ฉด, ์ปค์คํ
๋ฃฐ์ ์ง์ ํด์ฃผ๋ฉด ๋ด๊ฐ ํํํ๊ณ ์ ํ๋ ์์ค์ฝ๋์ ๋ฒ์๋ฅผ ํ์ํ๋ ๊ฒ์ด ๊ฐ๋จํด์ง๋ค. ์๋๋ฉด, scheme์ผ๋ก ์ปค์คํ
๋ฃฐ์ ์ถ๊ฐํ๋ ๊ฒ ์์ฒด๊ฐ ์ผ์ข
์ ํธ๋ฆฌ ์๋ฃ๊ตฌ์กฐ๋ฅผ ํ์ํ๋ ์ฟผ๋ฆฌ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
52+
53+ ** ์๊ณ ๋ฆฌ์ฆ** ์ ๋ํ ๋ฐฐ๊ฒฝ์ง์์ด ์๋ ์ฌ๋๋คํํ
๋ ์ข ๋ ๋จ์ํ๊ฒ ์ค๋ช
ํ๊ธฐ๋ ํ๋๋ฐ, ** "treesitter๋ 2์ฐจ์ ๋ฐฐ์ด๋ก ๋ฐ๋ผ๋ด์ผ ํ๋ ์์ค์ฝ๋๋ฅผ ํธ๋ฆฌ๋ก ๋ฐ๊ฟ์ ์๊ฐํ ์ ์๊ฒ ํด์ค๋ค."** ์ด๋ฐ ํํ์ ์ฆ๊ฒจ์ฐ๋ ํธ์ด๋ค.
54+
55+ ์ด์ ๋ํด ์ข ๋ ์ง๊ด์ ์ผ๋ก ์๋ฟ์ ์ ์๋ ์์๋ [ ziontee113/syntax-tree-surfer] ( https://github.com/ziontee113/syntax-tree-surfer ) ์ธ๋ฐ, ํจ์๊ฐ ์ ์๋์ด ์๋ ์์น๋ฅผ ๋ฐ๊พธ๋ demo ์์์ ์ดํด๋ณด์. Syntax tree๋ก ๋ํ๋ด๋ฉด ๋ ํจ์์ ์์น๋ Tree์ ๊ด์ ์์ ๋ณด๋ฉด sibling์ผ๋ก ๋ณผ ์ ์๋ค. ** ๋ ํจ์๊ฐ ์ ์๋์ด ์๋ ์์น๋ฅผ ๋ฐ๊พธ๋๊ฒ์ ์ฌ์ค์ ํธ๋ฆฌ ๋
ธ๋์ ์์น๋ฅผ ๋ฐ๊พธ๋ ์์ฃผ ๊ฐ๋จํ ๋ฌธ์ ** ๋ก ํ์์ด ๋๋ค.
56+
57+ ## ๊ทธ ์ธ์๋ ๋๋๋ฌ์ง๋ ์ ๋ค
58+
59+ language server ์ง์๋ ๋๋ฆ ๋์์ง๋ ์์ ํธ์ธ๋ฐ, ์ ๋๋ก ์ธํ
ํ๋ ค๋ฉด ๊ฐ๊ฐ language server๋ง๋ค ๊ฑธ๋ง๋ configuration์ ํด์ค์ผ ํ๋ ์๊ณ ๋ก์์ด ์๊ธธ ์ ์์ง๋ง, [ coc-nvim] ( https://github.com/neoclide/coc.nvim ) ์ธํ
ํด๋๋ ๊ฐ์ธ์ ์ผ๋ก ํฌ๊ฒ ๋ฌธ์ ๊ฐ ์์๋ค.
3660
3761Helix๋ผ๋ ์ ํฅ๊ฐ์๋ ์๊ธฐ๊ณ ์๋ ๋ชจ์์ด์ง๋ง, 2023๋
11์ ๊ธฐ์ค์ผ๋ก๋ ํฌ๊ฒ ํ ์๋ฟ์ ์ ๋๋ก ์ถ์ ํ์ ์ ๊ฐ์ ธ๋ค ์ค ๋งํ ๋ณํ๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋น๋ฌธ๊ฐ ๊ด์ฌ์ ๊ฐ์ง๋ ๊ฑด ๋ณด๋ฅ
3862
3963
40- [ ^ 1 ] : lua๋ผ๋ ์ธ์ด์ ๋ถํธํจ์ ๋ํด์๋ ๋ฐ๋ก ๊ธ๋ก ์์ฑํ๊ฒ ๋ ๊ฒ ๊ฐ๋ค. ๊ทธ๋ ๋ค๊ณ ์์ ๋ชป ์ฐ๊ฒ ๋ค๋ผ๊ณ ๋๋ ์์ค์ ์๋์ง๋ง, ์ฌ๋ฌ๊ฐ์ง ๋ฉด์์ ์ธ์ง ๋ถ์กฐํ๋ฅผ ๋๋ผ๊ฒ ํ๋ ๋ถ๋ถ์ด ์๋ค๋ ๊ฒ์ ๋ถ์ ํ ์ ์๋ค .
64+ [ ^ 1 ] : lua๋ผ๋ ์ธ์ด์ ๋ถํธํจ์ ๋ํด์๋ ๋ฐ๋ก ๊ธ๋ก ์์ฑํ๊ฒ ๋ ๊ฒ ๊ฐ๋ค. ๊ทธ๋ ๋ค๊ณ ์์ ๋ชป ์ฐ๊ฒ ๋ค๋ผ๊ณ ๋๋ ์์ค์ ์๋์ง๋ง, ์ฌ๋ฌ๊ฐ์ง ๋ฉด์์ ์ธ์ง ๋ถ์กฐํ๋ฅผ ๋๋ผ๊ฒ ํ๋ ๋ถ๋ถ์ด ์๋ค๋ ๊ฒ์ ๋ถ์ ํ ์ฌ์ง๊ฐ ์๋ค .
0 commit comments