ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Neovim
    Study/개발 2023. 12. 28. 21:44

    Neovim distro인 lazyvim 예시 (출처: https://github.com/LazyVim/LazyVim)

     

     

    Intro

    요새 코드에디터로 Neovim을 사용하려는 시도를 하고있다.
    Vim 자체가 익숙치 않아서 초기에 좀 어려움을 겪었다.
    Vim motion부터 좀 익숙해지고, 개인 프로젝트 개발할 때는 급하지 않으니 최대한 Neovim을 사용했다.
    이제 나름 일할 때도 쓸 수 있을만큼 적응하여 사용하고 있다.
    그래서 한번 Neovim에 대해 소개를 해보려고한다.

    Neovim

    Neovim 이란?

    Fireship 소개 영상 https://youtu.be/c4OyfL5o7DU

    Vim을 개선하여 현대의 IDE 처럼 다양한 기능을 제공할 수 있게함.
    - lua를 통한 설정
    - Built-in LSP
    - 파일 트리, 자동완성 코드 하이라이팅 등 다양한 플러그인

    사용 계기

    1. 개발을 하다가 마우스에 계속 손이 가야하는데에 불편함을 느낌
    2. 최대한 단축키를 많이 쓰고 싶어서 기존에 쓰던 vscode에 단축키를 최대한 커스텀하여 사용
    3. 코드 에디팅적인 부분에선 충분했지만, 깃이나 파일 네비게이션같은 부분에서 점점 단축키가 많아지고 헷갈리기 시작
    4. 평소 보던 유튜버 ThePrimeTime의 여러 영상에서 Neovim을 알게됨
    5. 우선 Vscode의 Neovim 익스텐션을 시도
      1. vim의 단축키들은 operator와 motion을 조합하여 사용한다는 개념이 맘에 듦.
        1. ex) ciw - change inner word
      2. 하지만 vscode 내에서 사용하기에 버벅임이 있고 vscode 기능과 호환오류가 있음.
    6. "Vscode 위에 Neovim을 얹지 말고 Neovim 위에 vscode의 다양한 기능을 지원할 수 있는 플러그인을 얹어보자."라는 생각으로 시작

     

    사용 후 느낀 점

    Neovim 장점

    1. Vim motion으로 인해 키보드 사용이 편하다.
    2. 설치 및 실행이 가볍다.
    3. 키매핑이 쉽고, 깃UI나 파일트리 등도 단축키로 쉽게 동작이 가능하다.

    Neovim 단점

    1. 러닝커브가 비교적 높다. (기존 vim 유저 제외)
      • 기존에 vim을 사용하지 않았다면 적응하는데에 시간이 꽤 걸린다.
      • vim motion부터 적응 후 차근차근 각종 다른 기능 및 플러그인의 단축키에 적응하는 게 필요하다.
    2. 타 에디터에 비해 설정이 어렵다.
      • Vscode를 기준으로 하면 일단 클릭 몇번으로 수정 가능한 UI를 제공하고 json으로도 쉽게 설정을 바꿀 수 있다.
      • Neovim은 lua 설정 파일을 통해서 설정을 해야하는데, lua 자체가 낯설기 때문에 적응에 시간이 필요했다.
    3. 대규모 프로젝트에서 tsserver의 LSP 관련 기능들이 느리게 동작한다.
      • vscode는 tsserver를 내장하고 있어서 굉장히 빠른 코드 자동완성을 제공한다.
      • 같은 규모의 프로젝트이지만 neovim에서는 입력 후 자동완성이 뜨기까지 tsserver를 거쳐야 하는 경우오래걸리는 것을 경험했다.

    추천하는 방법

    1. Neovim distro

    Neovim 설정 및 여러가지 필수에 가까운 플러그인들이 구성 되어있는 Pre-configured 방식의 Neovim들이 있다.

    • NvChad, LazyVim, LunarVim, AstroVim 등

    cf) Distro 비교글

    아래와 같은 경우에 추천한다.

    • Neovim이 어떤 것인지 한번 가볍게 사용을 해보고 싶은 경우
    • 하나씩 설정하는 것보단 미리 세팅된 Neovim을 이용하고 싶은 경우

    2. 순정 Neovim

    위의 Distro를 사용하는 방식이 top-down이라면, Bottom-up으로 시작할 수도 있다.
    순정 Neovim부터 시작해서 설정을 하나씩 바꿔보고, 플러그인을 붙여보며 나만의 Neovim을 만드는 방식이다.
    시간은 조금 더 걸리겠지만, neovim에 대해 더 이해할 수 있고 차근차근 하나씩 익힐 수 있는 정석에 가까운 방식이다.

    아래와 같은 경우에 추천한다.

    • 정석적으로 하나씩 알아가는 방식을 선호하는 경우
    • 다양한 플러그인을 내 입맛에 맞게 커스텀하고싶은 경우

    사소한 팁

    • 플러그인들은 해당 플러그인의 github 내에 설정에 관한 설명들이 가장 잘 되어있으니 github을 잘 찾아보는 것이 좋다.
    • 구글에 다양한 Neovim config 관련 글이 있다. 특히 Reddit에 사용자가 많아서 많은 도움을 받았다.
    • lua 설정이 헷갈린다면 chat GPT를 통해서도 도움을 받을 수 있다. 나온지 꽤 되었기 때문에 잘 알려준다.
    • 따라해보면 좋은 Neovim 설정 영상 0 to LSP: Neovim RC From Scratch

    나는 distro인 LunarVim으로 시작하여 LazyVim을 사용 중이다.
    아직은 뉴비라서 그런지 순정 설정으로 사용해야겠다는 필요성은 못느껴 잘 사용하고있다.
    파일 트리, 깃, LSP 모두 만족스러운 경험이다.
    이 글을 읽은 분들도 호기심이 생긴다면 가볍게 한번 도전해보면 좋겠다.

    728x90

    'Study > 개발' 카테고리의 다른 글

    Regular Expression 종류, 동작 방식, 성능  (2) 2024.03.23
    React 18 - Suspense 분석하기  (0) 2024.02.21
    React 18 - Transition과 외부 상태 관리 도구  (2) 2023.12.10
    React 18 - Transition  (0) 2023.12.09
    Wasm Book 튜토리얼  (0) 2023.11.12
Designed by Tistory.