1. 기존에 사용하던 순정 에디터에서 바로 넘어가려 하지 마셈
우선 vim 모션은 다 익히고 가는게 좋음
vscode, intellij, visual studio, eclipse, 심지어 xcode조차 vim 모션을 플러그인 혹은 옵션으로 제공하고 있으니까 그거 깔아서 우선 모션부터 익혀야함
대부분의 neovim 자료가 기본적인 vim 모션은 알고 있다는 전제 하에 설명하는 경우가 태반이기 때문
커서 이동조차 힘들어하는데 lua가 어쩌구 lsp가 어쩌구 하면 머리 터진다
“나 자신을 몰아넣어서 제대로 익혀볼려고” - 지랄하지 말고 vim모션 정도는 원래 쓰던 에디터에서 익히셈. 많이 힘들다
2. 이걸 vscode로 만들려고 하지 마라
입문 전의 나에게 가장 해주고 싶은 말 1위
많은 사람들이 vim/neovim 입문하면서 가장 많이 시간을 버리는게 바로 여기임
나도 이짓거리에 1,2년은 쓴듯
- 아이콘에 너무 집착하지 말고 (아이콘이 필요하단건 알겠는데 정렬이나 크기, 간격 같은거 너무 신경쓰지 마라. 이건 TUI 어플리케이션임)
- 기존 윈도우->탭 패러다임을 버리고 (vim은 탭->윈도우->버퍼)
- 사이드/하단 고정 윈도우는 포기하셈 (vim에 존재하지 않는 개념. neo-tree나 toggleterm 등 비슷하게 구현하려는 것들은 있는데 완벽하지 않음)
아니 ㅅㅂ 그럼 파일 뷰는 어떻게 함? -> 토글을 원한다면 floating window
작업중에 계속 띄워놓고 싶은데? -> 개인적 의견일 수 있는데, 한쪽에 치워놓고 레이아웃/버퍼 다 깨지는거보단 모달 에디터에서 단축키 한번 누르는게 낫다
파일 이동은 어떻게 하는데? -> 이건 vscode에서도 ctrl+p로 빠르게 이동 자주 쓰잖아, telescope나 fzf 같은거 쓰면 됨
파일 브라우징은? -> oil.nvim / mini.files 같은 애들이 vim 패러다임에 더 잘 맞는듯. 내장 기능인 :Netrw도 의외로 쓸만함. neo-tree도 이렇게 버퍼로 여는 방식이 가능은 할텐데 해본적은 없음
하단 터미널은? -> tmux + 윈도우 이동. 모종의 이유로 neovim이 아니라 vim을 쓰고 있다면 :terminal (neovim의 :terminal은 동작방식이 다름)
진짜 tmux까진 쓰기 싫어서 (neovide 같은 gui 클라이언트에선 못쓰니까) neovim 내에서 터미널 띄우고 관리하는 개발환경 구성하려고 온갖 지랄을 다해봤는데 나도 결국 tmux로 정착함
옛날엔 왜그렇게 gui 클라이언트에 집착했던건지 모르겠다. gui가 주는 장점보다 tmux의 장점이 압살하는 것 같은데
2.1) 멀티커서
ㄴ
3. config distro/템플릿은 가급적 kickstart.nvim
LazyVim, AstroNvim, NvChad, NormalNvim 등등 많이 있지만
우선적으론 kickstart.nvim을 추천함.
r/neovim에서도 LazyVim 이상으로 많이들 추천하는게 kickstart.nvim
LazyVim 같은 것들이 reactjs라면 kickstart.nvim은 js cheatsheet에 해당함
neovim lua api나 플러그인 관리를 대충이라도 이해하고 넘어가는게 더 낫다고 생각
다 필요없고 그냥 당장 동작하는 쓸만한 에디터를 원한다면 LazyVim 같은게 맞긴 함
4. java/kotlin 개발자면 쓰지 마셈
jetbrains 똥꼬나 빨아라
나도 어떻게 해보고는 싶은데 정신건강을 위해 그게 나음
C#은 안쓴지 좀 오래돼서 몰?루
- dc official App
파일 브라우저를 쓰고싶으면 :Sex 를 입력해라
멀티커서 ㄹㅇ 어케함? 이거진짜 매번 골때리는데
하지 마셈. neovim 0.4부터 milestone에 있었는데 아무도 작업하기 싫어해서 지금 0.11까지 밀렸음 multicursor.nvim, vim-cursor-multi인가 여러가지 있는걸로 아는데, 전부 완벽하지 않음 애초에 vim 코어부터 커서가 여러개인 상황을 상정하지 않고 만들어져서… `nvim_win_get_cursor` 같은 api들 다 뜯어고쳐야하고, 그러면 기존 플러그인들 다 씹창나는거 확정이니 아무도 안하는듯 - dc App
난 vscode 멀티커서에 익숙해지기 전에 vim에 먼저 익숙해져서 `:s/`, `:g/` 같은 명령어를 쓰고는 있는데 정 포기 못하겠으면 언급한 플러그인들 써서 좀 버그가 있더라도 해당 기능을 쓰거나, 아예 helix로 넘어가는 수밖에 (플러그인 시스템은 아직 없는데 steel 쓰는걸로 누가 포크따서 작업중임) `:s/`, `:g/` 같은것도 의외로 쓸만함 cmdmode 단축키와 레지스터 개념을 알면 알수록 더 편해짐 (ctrl-r + ctrl-w 로 현재 커서 위치의 단어를 붙여넣기 한다던가) 긴 명령 편집하는게 어려우면 cmdline 말고 cmdwindow도 있고 - dc App
:s/<c-r><c-w>/ 하면 멀티커서랑 비슷한 동작이 되긴 함 여기에 incccommand 옵션까지 켜면 똑같이 느껴질껄 - dc App
멀티커서가 Ctrl+v, I, A랑 다른 기능임?
보통 멀티커서라 하면 특정 키워드 위치에 커서 하나씩 띄워서 동시에 수정하는걸 얘기하지 ctrl+v, I/A는 그냥 visual-block으로 선택한 다음 여러줄에 같은 입력을 하는것 뿐이잖아 “foo| bar foo” -> “foo| bar foo|” -> “fooabc| bar fooabc|” 이렇게 입력되는 기능임 - dc App
이맥스를 쓰면 해결된다
멀티커서 안되면 정규식이라도 됨? - dc App
된다면 한번에 전부 적용, 하나씩 적용, 몇몇 매치에 대해서는 생략 가능 다 지원 되나 - dc App
다 되지 애초에 기원이 거기서 시작된 에디터인데 그것보다 더 한것도 됨 - dc App
더한거라 하면?? - dc App
:help :s :help :g - dc App
:g는 정규식 매칭된 라인에 대해서만 특정 커맨드를 실행할 수 있음 :grep은 전체 파일 내에서 정규식 선택된 라인을 quickfix 리스트로 옮겨주고 :cdo 로 quickfix 리스트 내에 있는 라인들에 대해 특정 커맨드를 실행하거나, :cnext/:cprev로 리스트된 매칭 라인들을 탐색하거나 - dc App
멀티커서? helix.... 써야겠지...?
플러그인 시스템 생기기 전까진 그냥 범부임 - dc App
C-v 하고 j나 k로 줄 여러개 선택한 다음에 쉬프트 i 누르고 입력하는 거도 멀티커서임?
그건 그냥 visual-block 모드 block 현태로 선택이 될 뿐이지, 멀티커서랑은 좀 다르지 - dc App
한글 쓰기 너무 불편해서 결국 안 쓰게 되더라
콘솔에서 깔짝깔짝 머 수정하는 용도로나 가끔 쓰지 메인 에디터로는 좀 그래
한글을 쓰는 사용자 문제라 생각하곤 있는데, 한글 입출력이 잘 안되는건 보통 터미널 에뮬레이터의 문제지, vim 문제는 아님 한영 전환의 경우엔 esc키 입력시 자동으로 영어자판으로 돌아가게 하면되고 - dc App
그거 esc 누르면 자동전환하는 설정 당연히 해놨는데 그래도 미친듯기 불편해서
당연히 한글입력이 잘 안되고 버그덩어리에요ㅠㅠ 같은 소릴 하는건 아닒
뭐 이건 취향 문제긴 함. 나도 한글 입력은 좀 불편하긴 한데 어차피 한글로 써놓으면 꼭 vim 아니어도 fuzzy search 같은게 어려워지니까 애초에 한글 쓰는걸 피하게 되는듯 진짜 한글 써야하는 블로그 같은건 gui 앱에서 쓰고, 영어로 적는게 편한 개발 로그 끄적여놓는건 vim에서 하고 있음 - dc App