Helix에서 Vim으로 전환에 대한 노트

4 weeks ago 12

  • Helix 에디터는 별도의 복잡한 설정 없이도 언어 서버 지원 등 주요 기능을 기본 제공함
  • Vim/Neovim 대비 검색 기능과 다중 커서 등이 개선되어 여러 파일 내에서 맥락 파악과 일괄 편집이 편리함
  • 단점으로는 Markdown 리스트 편집자동 새로고침 및 퍼시스턴트 언두 미지원 등 일부 기능의 부족이 있음
  • 기존 Vim 키바인딩과 Helix 방식의 차이가 있으나, 근육 기억 재학습이 예상보다 쉬움
  • 전체적으로 구성 파일이 매우 단순하며 빠른 적응이 가능해 전환에 대해 긍정적인 경험임

Helix 에디터 전환 배경

  • 필자는 오랜 기간 동안 Vim/Neovim 환경을 사용하면서 직접 커스텀 설정을 하거나 타인의 설정 시스템을 적용해 봤음
  • 최근에는 더 좋은 언어 서버 설정과 코드 네비게이션 기능이 필요해졌고, Vim 계열에서는 이 과정이 너무 복잡하게 느껴졌음
  • Helix는 언어 서버 지원이 내장되어 있어 "정의로 이동"과 같은 함수 호출이 별다른 추가 설정 없이 바로 동작함

Helix 사용에서 인상 깊은 점

  • Helix의 강력한 검색 기능은 리포지토리 전체 파일을 검색할 때 각 결과의 전체 맥락을 보여줌
    • Vim의 ripgrep 플러그인과 비교하면, Helix 쪽이 어느 줄의 무슨 내용인지 한눈에 파악이 가능함
  • g 키를 누르면 이동 가능한 위치의 도움말 팝업이 표시되어 드물게 사용하는 '정의로 이동' 기능도 쉽게 확인 가능함
  • 기존 Vim의 "마크" 기능(ma, 'a 등)은 없으나, Ctrl+O, Ctrl+I 단축키로 최근 커서 위치로 이동할 수 있음
  • 매크로는 있지만 다중 커서 기능이 더욱 효율적으로 동작하며, 정규식 기반 선택 및 일괄 편집 워크플로우가 유용함
  • 탭 대신 버퍼 스위처(space+b)로 원하는 버퍼 전환이 가능함

Helix에서 아쉬운 점

  • :reflow 기능이 Vim의 gq 텍스트 재정렬 기능보다 리스트 편집에서 만족스럽지 못함
    • 마크다운 리스트에서 "엔터"로 항목이 자동 이어지지 않으며, 넘버링 리스트 지원 워크어라운드도 마땅치 않음
  • 지속적 언두 기능(undofile) 을 아직 지원하지 않아, 종료 후에도 변경 사항을 되돌리는 기능이 부재함
  • 외부에서 파일이 변경돼도 자동으로 갱신되지 않고, 수동(:reload-all)으로 새로 고침이 필요함
  • 가끔(약 주 1회) 충돌이나 다운이 발생하며, 이는 마크다운 편집 빈도와 관련 있을 수도 있음

Helix로의 적응 경험

  • Vim 20년 근육기억 때문에 걱정했지만, 휴가 중 가벼운 프로젝트로 사용하며 일주일 내에 Helix 방식에 적응함
  • Vim과 Helix를 번갈아 쓰는 것은 어렵겠지만, 최근 Vim을 재사용할 필요를 느끼지 않고 있음
  • 첫 시도 때 Vim과 유사한 키바인딩으로 강제하려다 실패했고, Helix만의 워크플로우를 익히는 것이 훨씬 쉬웠음
  • 일부 단축키(w 등)는 Vim과 Helix에서 "word" 단위 인식에 차이가 있어 헷갈릴 수 있음
  • 주로 GUI Vim을 사용하다가 터미널 기반 편집기에 적응하는 과정도 있었음

개인 Helix 워크플로우 및 설정

  • 각 프로젝트마다 독립적인 터미널 창, 첫 탭에 Helix를 배치해 작업 공간을 분리함
  • 전체적으로 설정 파일이 매우 간단해서 수백 줄짜리 Neovim 설정에 비해 명확함
    • 키맵 및 테마, 클립보드 동기화, 줄 이동 등에 대한 최소한의 설정만 포함
    • 많이 쓰는 명령에 관한 키 리매핑, 마크다운 텍스트 재정렬 등도 간단히 매핑함
  • 언어별 추가 설정(languages.toml)을 통해 예를 들어 Python은 auto-format을 끄고, 포매터/언어 서버를 지정함

결론 및 전환 유지에 대한 생각

  • 아직 3개월 정도의 짧은 사용 후기이며, 장기적으로 다시 Vim으로 돌아갈 가능성도 열려 있음
  • 과거 Nix를 채택했다가 나중에 다시 Homebrew로 돌아갔던 경험도 있음
  • 만약 Helix의 장점(간단한 구성, 내장 언어 서버, 검색 및 다중 커서 편집)이 자신의 워크플로우에 맞으면, 쉽게 적응이 가능하고 생산성 향상 경험을 얻을 수 있음

Read Entire Article