너넨 이런거 하지마라~
이 글을 보고 답글 쓰다가 날아가서 그냥 블로그에 씁니다.
먼저, 전 vim을 무조건 써야 된다고 강요하는 꼰대나 광신도는 아닙니다.
하지만 반대로 vim을 공포의 대상으로 만들고, vim을 쓰는 사람을 신격화할 필요는 없습니다.
vim 바이너리 자체를 강요하기 보다 IDE를 먼저 숙달하고 IDE + vim 키맵 → IDE + vim 플러그인 → vim 바이너리 순으로 '시도' 해보는 걸 추천합니다.
협업과 후임 OJT 등등의 현실적인 문제까지 생각하면 IDE + vim 플러그인 정도가 적절한 타협점입니다.
분명한 것은 vim의 방식을 사용하면 코드 생산성의 향상이 있습니다.
vim의 러닝커브는 아주 정직하게 투자한 시간만큼 이득을 얻는 구조입니다.
그래서 시작은 가벼운 마음으로 본인이 익숙한 IDE 환경에서 하는게 좋습니다. IDE에 있는 vim 플러그인/익스텐션을 사용하는 것도 vim을 쓰는 또 하나의 방식입니다. vim 바이너리를 쓰지 않는다고 순수 비머가 아니라고 무시하면 안되고 현실에는 그러는 사람도 없습니다. IDE를 쓰면 vimrc, vim plugin 을 몰라도 화려한 gui 환경에서 vim의 기본을 재밌게 배울 수 있습니다.
~~일 안에 vim을 마스터하겠다는 마음으로 접근하면 끝이 없습니다. 필요한 만큼 배워서 쓰고 또 필요하면 더 배우고 하면 됩니다.
vim의 키맵을 완전히 숙지하지 못해서 불필요한 스트로크를 하게 된다고 해도 크게 상관 없습니다. 어차피 배워가는 과정입니다. G 대신 :9999999 는 분명 손해가 맞지만, Ctrl+G 9999999 와 비교하면 (심지어 code에서는 마지막 라인 넘버를 딱 입력해줘야 하기에 되지도 않는다.) 사실상 차이가 없고 다른 기능을 사용할 때 충분한 이득을 얻습니다.
앞에 count를 활용하게 되고, 매크로까지만 다루게 되면 단순 반복 작업의 처리 속도는 쓰지 않은 경우와 비교할 수 없을 정도입니다.
이후 VimL까지 학습하면 됩니다.
정리하면 IDE에 있는 vi keymap/plugin/extension 을 사용해서
hjkl 키맵 → {count} 를 포함한 조합 키맵 → 매크로 → vimrc 세팅 → vim 플러그인 세팅 → VimL
순으로 단기 학습목표를 정하고 필요할 때마다 배우면 됩니다.
점진적으로 배우는 것은 좋지만 제대로 배워야 합니다.
아래 링크들을 추천합니다. 난이도 순 입니다.
https://github.com/iggredible/Learn-Vim
https://danielmiessler.com/study/vim/
https://learnvimscriptthehardway.stevelosh.com/
더 필요한 경우, github 에 있는 플러그인 코드나 다른 vimrc 등등을 분석하면 됩니다.
IDE에서 제공하는 vim 플러그인에서 키맵은 물론 매크로와 .vimrc 반영까지 할 수 있는 정도이기에 vim 바이너리를 사용하는 이점은 거의 없어보입니다.
특정한 언어와 특정한 환경에 한정된 코딩을 하는 경우에는, 그 언어에 특화된 IDE를 쓰는게 도움이 됩니다. 일반적으로 해당 환경에 특화된 IDE에 있는 기능들이 vim 플러그인을 압도하거나 비등하기 때문에, 설정에 필요한 시간 같은 것을 감안하면 IDE를 선택하는 것이 낫습니다. 이 경우에도 물론 vim 키맵이나 플러그인 등을 사용하는게 아닌 쪽 보다 빠릅니다.
한 언어나 환경에 특화된 IDE가 없는 경우, 또는 여러 언어를 오가면서 하는 상황에서는 vim이 해볼만 합니다. 그래도
현 시점 기준으로, IDE로는 vscode 가 이런 상황에 가장 알맞은 IDE라고 할 수 있습니다. (물론 code를 IDE로 봐야 하는지 대한 논란이 있습니다.) vscode는 익스텐션을 통해서 여러 언어와 환경에 대응합니다.
vscode는 이제 워드프로세서, 엑셀 급의 대중적인 프로그램이기 때문에, 어느 정도 메이저한 개발 스택이라면 vscode 익스텐션을 자체적으로 제공합니다.
웹 개발에 익숙하다면 익스텐션 개발에 쉽게 접근할 수 있습니다.
이래도 쓰겠다고...?
vscode는 훌륭한 프로그램이지만 vim 바이너리가 우월한 점 몇 가지가 있습니다.
https://bengi.kr/1349 빔 도대체 왜쓰는가
https://www.joinc.co.kr/w/man/12/neovim
https://github.com/manasthakur/learn-vim/blob/publish/modules
https://vim.fandom.com/wiki/Vim_Tips_Wiki
https://dev.to/tavanarad/vim-as-a-flutter-ide-4p16
https://github.com/iggredible/Learn-Vim
https://danielmiessler.com/study/vim/
https://learnvimscriptthehardway.stevelosh.com/
(보충학습용)
https://kangssu.com/vim-script/
https://code.visualstudio.com/api/get-started/your-first-extension