
13,000개 넘는 스타를 받은 플러그인이 갑자기 아카이브?
Neovim 사용자라면 거의 필수로 설치하는 플러그인이 하나 있었어요. 바로 nvim-treesitter인데요, 이 플러그인이 공식적으로 아카이브(archive) 상태가 되었어요. GitHub 저장소에 더 이상 새로운 코드가 올라오지 않고, 사실상 개발이 종료된 거예요.
이 소식만 듣면 "Neovim의 구문 강조가 망가지는 거 아냐?" 하고 걱정될 수 있는데요, 결론부터 말하면 오히려 좋은 소식이에요. nvim-treesitter가 하던 역할을 Neovim 코어(본체)가 직접 흡수했기 때문이에요. 플러그인이 필요 없어진 게 아니라, 플러그인이 하던 일이 기본 기능이 된 거죠.
Tree-sitter가 뭔데 이렇게 중요한 건가요
먼저 Tree-sitter 자체를 좀 설명할게요. Tree-sitter는 증분 파싱 라이브러리(incremental parsing library)예요. 이게 뭐냐면, 소스 코드를 읽어서 문법 구조를 나무(tree) 형태로 분석해주는 도구인데, "증분"이라는 게 핵심이에요. 파일 전체를 처음부터 다시 분석하는 게 아니라, 여러분이 코드를 한 글자 고칠 때마다 바뀐 부분만 빠르게 다시 파싱해요.
전통적인 에디터의 구문 강조는 정규표현식(regex) 기반이었어요. TextMate 문법이라고 부르는 방식인데, 이건 패턴 매칭으로 "이 부분은 문자열이겠지", "이 부분은 키워드겠지" 하고 추측하는 거예요. 대부분은 잘 동작하지만, 복잡한 코드에서는 종종 색칠이 깨지곤 했거든요. 예를 들어 여러 줄에 걸친 문자열이나, 중첩된 제네릭 같은 데서요.
Tree-sitter는 정규표현식으로 추측하는 게 아니라, 실제 문법 규칙에 따라 코드를 파싱해서 정확한 구문 트리(syntax tree)를 만들어요. 그래서 "이 for는 키워드고, 이 for는 변수명이야"를 확실하게 구분할 수 있어요. 구문 강조뿐 아니라 코드 접기(folding), 들여쓰기 자동 조정, 텍스트 오브젝트(함수 단위 선택 같은 것) 등에도 활용되고요.
nvim-treesitter는 왜 필요했고, 왜 이제 필요 없는가
Neovim은 0.5 버전(2021년)부터 Tree-sitter를 코어에 통합하기 시작했어요. 하지만 초기에는 코어에서 제공하는 건 정말 기본적인 API뿐이었고, 실제로 구문 강조를 켜고 언어별 파서를 관리하는 건 전부 nvim-treesitter 플러그인이 담당했어요. 이 플러그인이 각 프로그래밍 언어의 파서를 다운로드하고 컴파일하고, 하이라이트 쿼리를 관리하고, Tree-sitter 기반 기능들을 쓸 수 있게 묶어주는 역할을 했던 거죠.
그런데 Neovim이 버전을 거듭하면서 이 기능들을 하나씩 코어로 가져왔어요. 특히 Neovim 0.10과 그 이후 버전에서 결정적인 변화가 있었는데요, vim.treesitter.start()라는 내장 함수로 구문 강조를 바로 켤 수 있게 되었고, 파서 설치도 :TSInstall 같은 플러그인 명령어 대신 Neovim 자체적으로 처리할 수 있는 방향으로 발전했어요.
결국 nvim-treesitter 플러그인의 핵심 기능 대부분이 Neovim 본체에 들어간 거예요. 플러그인이 자기 역할을 다 하고 은퇴한 셈이죠. 이건 오픈소스에서 가장 아름다운 시나리오 중 하나예요. 커뮤니티 플러그인이 기능을 증명하고, 그게 충분히 성숙하면 코어가 흡수하는 패턴이요.
기존 사용자는 어떻게 해야 하나
아카이브 공지에서 안내하는 마이그레이션 방향은 비교적 명확해요. 우선 Neovim을 최신 버전(0.10 이상)으로 업데이트하는 게 첫 번째예요. 그 다음, 설정 파일(init.lua 등)에서 nvim-treesitter 관련 설정을 정리하면 되는데요, 대부분의 경우 vim.treesitter.start()를 호출하는 것만으로 기본적인 구문 강조가 동작해요.
다만 주의할 점이 있어요. nvim-treesitter의 모듈(modules) 기능, 예를 들어 textobjects, incremental_selection, playground 같은 확장 기능들은 Neovim 코어에 다 들어간 게 아니에요. 이런 기능들은 별도의 플러그인으로 분리되어 유지되고 있거나, 커뮤니티에서 대체 플러그인을 제공하고 있어요. nvim-treesitter-textobjects 같은 건 독립 플러그인으로 계속 유지될 가능성이 높고요.
또 하나, 언어별 파서 설치 방식이 달라질 수 있어요. 기존에는 :TSInstall python 같은 명령어로 편하게 설치했는데, 이 부분은 패키지 매니저나 다른 도구로 대체해야 할 수도 있어요. 이 부분은 본인이 사용하는 Neovim 버전의 문서를 꼭 확인해보세요.
에디터 생태계에서 Tree-sitter의 위치
Tree-sitter는 원래 GitHub의 Atom 에디터를 위해 만들어졌어요. Atom은 2022년에 단종됐지만, Tree-sitter는 오히려 더 널리 퍼졌어요. Neovim 외에도 Zed 에디터가 Tree-sitter를 핵심 기술로 사용하고 있고, Helix 에디터도 Tree-sitter 기반이에요. VS Code도 실험적으로 Tree-sitter를 도입하는 움직임이 있고요.
이런 흐름을 보면, 정규표현식 기반 구문 분석에서 파서 기반 구문 분석으로의 전환은 이제 거의 업계 표준이 되어가고 있어요. 에디터가 코드를 더 정확하게 이해할수록, 구문 강조뿐 아니라 리팩토링, 네비게이션, 코드 분석 같은 기능도 더 정확해지거든요. LSP(Language Server Protocol)가 의미(semantic) 수준의 분석을 담당한다면, Tree-sitter는 구문(syntax) 수준의 분석을 담당하는 셈이에요. 이 둘이 합쳐져서 현대 에디터의 코드 이해 능력을 만들어내는 거죠.
한국 개발자에게 주는 시사점
Neovim을 메인 에디터로 쓰는 분들은 당장 설정 파일을 점검해볼 필요가 있어요. nvim-treesitter에 의존하는 설정이 있다면 마이그레이션 계획을 세워야 하고요. 당장 안 바꿔도 기존 설정이 갑자기 안 되는 건 아니지만(아카이브는 삭제가 아니니까요), 더 이상 업데이트가 안 되기 때문에 새로운 언어 지원이나 버그 수정은 기대할 수 없어요.
더 넓은 관점에서 보면, 이건 좋은 오픈소스 진화의 사례예요. 플러그인이 실험장 역할을 하고, 검증된 기능이 코어로 올라가는 패턴은 Neovim 생태계에서 반복적으로 나타나고 있거든요. LSP 지원도 처음에는 플러그인이었다가 코어에 들어갔고, 이제 Tree-sitter도 같은 길을 간 거예요. Neovim이 "확장성"을 단순히 플러그인을 많이 만들 수 있다는 의미가 아니라, 좋은 아이디어를 빠르게 실험하고 흡수하는 시스템으로 운영하고 있다는 걸 보여줘요.
정리하면
nvim-treesitter의 아카이브는 끝이 아니라 졸업이에요. Neovim 코어가 충분히 성숙해서 플러그인의 역할을 넘겨받은 것이고, 사용자 입장에서는 설정이 더 단순해지는 방향이에요.
혹시 Neovim 사용자분들, 마이그레이션 해보셨나요? 아니면 아직 nvim-treesitter를 그대로 쓰고 계신가요? 전환 과정에서 겪은 이슈가 있다면 공유해주세요.
🔗 출처: Hacker News
"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"
실제 수강생 후기- 비전공자도 6개월이면 첫 수익
- 20년 경력 개발자 직강
- 자동화 프로그램 + 소스코드 제공