TL;DR
Neovim설정은 https://github.com/LunarVim/nvim-basic-ide 에서 시작
내가 사용하는건 (WIP)에서 확인 가능
Vim말고 Neovim 합시다
개요
- NeoVIM을 사용하다보니 오히려 작은 프로젝트에는 VIM을 사용하는 일이 많이 생김
- 다른 영상을 보면 엄청나게 잘쓰고 이리저리 가던데, 내가 사용하는 Vim은 1년동안 세팅했는데 아직도 추천기능이 없음.
- 이 기회를 노려서 여러 사람들의 세팅 방법을 보고 들으면서 (+ 써본사람의 이야기를 들으면서) 세팅을 다시해보는 것을 목적으로 함.
과정
도전
- 사실 어디서 시작해야할지 모르겠음
- 주어진 정보는 있지만, 시작점이 잘 안보이는 상태
추적
- SpaceVim이라는 것을 알게되었고, 확인해보니까 Vim Distribution이라는 이름으로 Vim세팅을 다 해주고 한번에 사용핳 수 있도록 해주는게 존재한다는 것을 확인
- lua을 사용한 더 유연하고 쉬운 설정이 가능하는 것 확인
- Vim Distrubution을 다 사용해 보면서 이 사람들이 대체적으로 어떻게 Neovim을 설정하는지에 대한 방향석 확인
- LunarVim이 조금 더 내가 설정하기에 좋았으나, 이 Distribution을 거의 스켈레톤으로 남겨준 Git Repository확인. 이것을 베이스로 시작한다면 문제가 없을것이라 판단.
- 기존에 사용하던 VimScript설정을 백업해두고 설정 시작
세팅
환경별 세팅 기반
- MacOS : fish terminal
- Linux : Arch/Debian fish terminal
- Windows:
- WSL: Same as Linux = Arch + fish
- Native: Msys2 Terminal Emulator
Pre-requisite
- Node.js 16+
- Python 3.9+
- fzf
- ripgrep
세팅 기준
- 베이스는 다음과 같은 리포지토리를 기반으로 설정 함
https://github.com/LunarVim/nvim-basic-ide
- 다음과 같은 언어를 설치
언어 설치는 동봉된 Plugin인 Mason을 이용하여 하였다. :Mason
명령어를 실행만 하면 되니 Pre-requisite만 충족한다면 그렇게 오랜 시간은 걸리지 않는다.
- Go (STRONG)
- Rust (STRONG)
- Lua (STRONG)
- Python (VERY STRONG)
- Node.js ( Javascript / Typescript ) (STRONG)
- Java (WEAK)
- Keybinding은 Neovide용과 터미널용 2가지로 구분했다.
- 이상한 실수를 범하지 않도록, 2가지의 터미널은 키조합만 다르고 최종 콤비네이션 키는 같다.
- TMUX에 사용되는 키는 절대로 중복되지 않도록 조합한다.
- Linting및 빌드 결과 확인을 코드만 수정하면 바로바로 할 수 있도록 한다.
- Vim Session이 느려지지 않도록 과도한 장난질은 하지 않는다.
세팅 소스
- https://vimawesome.com/
플러그인은 묻지도 따지지도 않고 이곳에서 가져온다.
- github에도 좋은 플러그인이 많음
- Vim에 빠진 크리에이터들은 내가 조사하던것을 풀타임으로 조사하고 있으니, 그사람들이 조사한것을 기반으로 플러그인을 설치하는것도 나쁘지 않다.
필수
- Mason LSP Server Installer
- Telescope Finder
- FZF
- Ripgrep
클라이언트 선정
- 기존에 사용하던
iTerm2
Allacritty
WezTerm
모두 뭔가 터미널로 쓰기에는 적당한에 터미널은 조오오금 더 사이즈가 큰 느낌이라 Vim만 돌릴 클라이언트가 필요하다는 것 확인
- 여러 Vim Client를 선정하고 써보게 됨
- VimR은 겉만 번지르르하고 기본적인 기능이 많이 부족한 것 확인
- NeoVide는 조금 러프하지만, 내가 필요한 모든 기능이 있는 것 확인
- Multiple Font Fallback
- Hardware Accelerated Rendering
- Fun Gimmicks
- NeoVide를 MacOS에서 어플리케이션처럼 사용할 수 있도록 조치
ln $(which neovide) /Applications/Neovide.app
- 기본적으로는 neovide는 nofork상태로 돌아가므로,
open
명령어같이 neovide .
같은 명령어를 사용해서 열 수 있다.
세팅 간 확인한 이슈
- Node.js랑 Python은 필수인 듯 하다. 안깔려있으면 깔도록 하자.
- Node.js 16+
- Python 3.9 / 3.10을 추천한다.
- Neovide는 셸 세션으로 열리는 것이 아니기 때문에, 수동으로 Environment Variable을 지정해주어야 한다.
내가 몰랐던 신기한 기능
- Neovim도 터미널 시절부터 올라왔던 (나보다 나이가 두배나많은) 고전이지만, 그만큼 많음 업데이트가 발생한 건 사실.
- 그중 0.8.x이후에 뭔가 신박한게 많이 생긴것으로 보임.
- 가장 신박한게 ssh를 사용하지 않고, RPC를 사용하여 Remote Neovim Session Attach가 가능하다는 것 확인
- 물론 보안문제로 인해서 기본적으로 켜져있지 않지만, Neovim Server Mode로 간다면 에디트가 가능하다.
- 터미널 Vim Plugin이 깔려있다면 간이
ssh
로 사용이 가능한 것으로 보임
- 일부 LSP 플러그인들이 지원이 중단된거 확인
- 약 1-2년전의 튜토리얼을 따라했다가 지금은 잘 안되는게 많음
비고
- 내가 알던게 1년이 넘으면, 레거시다.
- Vim이 할수있는건 많지만, 분석이나 고급 기능은 돈주고 사라. Jetbrain이 인기있는 이유는 다 있는 법.
- Vim으로 1시간 걸리는게 Jetbrain으로는 2분이 걸리는 것이 있다.
- Vim Evangelist가 되는 것도 좋지만, 이 자존심에 빠져서 모든 최신 기술을 거부하는 것은 바보같은 힙스터나 하는 짓.
- 하지만, Vim을 배우고 나서 2년 반이 지났지만, 작업 속도가 엄청나게 빨라진것은 사실
- 특히 모든 터미널 및 서버의 구성을 배우게 되면서 서버 관리도 엄청나게 빨라졌다.
- stdin / pipe 등을 알게 되면서 프로그램도 더 단순해진 느낌