elsa in mac

noevim(nvim) 을 배우고 싶다구요 ? cheat sheet 참고 하세요.. ^^ 본문

Terminal

noevim(nvim) 을 배우고 싶다구요 ? cheat sheet 참고 하세요.. ^^

elsa in mac 2024. 10. 25. 21:11

Noevim은 Terminal 기반에서 사용할 수 있는 매우 강력한 Editor 이자, Coding 도구 입니다. 

Terminal 기반이기 때문에 반응이 매우 빠르며 키보드 만으로 모든 것을 할 수 있기 때문에, 익숙해지면 그 어떤 Editor보다 생산성 측면에서 우수하지만, 문제는 모든 기능을 익히기에 꽤나 복잡하다는 단점이 있습니다. 

Windows나 macOS의 GUI Editor나 GUI IDE에서 마우스를 혼용한 편집에 익숙해진 개발자나 사용자라면, 초기 진입 장벽이 좀 높은 것이 사실이지요.  하지만, 기필코 난 Neovim을 사용하고 싶다면, Vim CheatSheeet를 참고 하시기 바랍니다. 

VSCode and Vim cheetsheet 홈페이지

영어가 어려운 분들이라면, 웹 브라우저의 한글 번역 기능을 이용해서 보시면 될 것 같습니다. 

요기도 괜찮은 자료가 있고..  동영상 자료를 원한다면.. 이 영상이 기초적인 것들을 잘 정리한 것 같습니다.  이 외에도 youtube에서 nvim basic이라고 검색하면 굉장히 많은 좋은 영상들이 많습니다. 물론 chat-GPT의 도움을 받아도 됩니다.  nvim에서 제공하는 한글판 공식 tutor.txt 파일을 참고 하는 것도 연습에 도움이 됩니다.  한글판 vi 나 nvim을 설치했다면, command 모드에서 Tutor를 치면 연습에 도움이 됩니다. (Command 모드는 항상 첫글자가 대문자 여야 함)

Vim Mode에 따른 기능키들이 굉장히 많기는 하지만, 실제로 저것들을 전부다 사용하는 사람은 그리 많지 않을 것 입니다. 효과적으로 익히는 방법은 가장 필요한 기능을 우선 익히고, nvim을 사용하다가 아쉽거나 필요하다고 생각되는 기능이 궁금할 때마다 한번씩 참고하면서 익혀 가는 것 입니다. 

어차피 모두 다 외워도 실전에서 사용하지 않으면 기억할 수 없기 때문에, 그때 그때 필요할 때마다 하나씩 확장해 나간다는 기분으로 익히는 것이 더 효과가 좋습니다. 

예를 들자면...
Normal 모드에서 Insert 모드로 진입하는 것은 i키 이고, 다시 Normal 모드로 빠져나가는 것은 ESC 입니다. 처음에는 이 두 가지만 알고 사용하지만, 충분히 익숙해 졌다면, a 키도 Normal 모드에서 Insert 모드로 진입하는 키라는 것을 배우게 되고, 왜 i만 있으면 되지 a가 필요한가를 생각해 본다면, I(대문자 i)키를 누르면 Insert 모드로 진입을 할 때 현재 커서 라인의 맨 처음으로 커서가 이동한 후, Insert 모드로 변경된다는 것을 배우게 됩니다. 그럼 반대로 현재 라인의 맨 끝에서 Insert 모드로 변환하는 것은 없을까? 내 바로 A(대문자 a)가 그것 입니다. Append(추가)의 의미가 있는 것이죠. 

그럼, 이제, i/a 혹은 I/A를 사용하게 됩니다. ESC 키는 좌측 상단 끝에 있기 때문에 Insert 모드에서 Normal 모드로 빠져 나갈때 왼손이 크게 움직여야 합니다. 이것이 싫다면, Ctrl+c 혹은 Ctrl+[ 키를 누르면 Insert 모드에서 Normal 모드로 전환된다는 것을 나중에 배우면 됩니다. 왼손만으로 Ctrl+C를 눌러 Normal 모드로 나갈 수도 있고, 양손을 이용하여 Ctrl+[ 키로 Normal 모드로 나갈 수도 있습니다. 어떤 경우던, ESC키를 누르기 위해 왼손을 크게 이동해야 하는 것 보다는 낫습니다. 이건 개인적인 취향인 것이죠.  저의 경우에는 caps lock 키를 ESC키로 맵핑해서 사용합니다만... 쿨럭....

작성한 문서를 저장하고나, 저장하지 않고 종료하거나 하는 것들을 하기 위해서 command 모드라는 것이 있다는 알게 되고, 처음에는 w(write:save), q(quit), qa(quit all), q!(저장하지 않고 종료) 정도만 알고 사용하게 되지만, 곧 command 모드에서 할 수 있는 것들이 굉장히 많다는 것을 배우게 될 것입니다. 

처음엔, 방향키로만 커서를 이동하지만, 이것이 불편할 때쯤 Normal 모드에서 h(왼쪽),j(아래),k(위),l(오른쪽) 키들이 방향키라는 것을 알게 되고, w(다음 단어의 첫글자 위치로 이동), b(이전 단어의 첫 글자 위치로 이동),  e(다음 단어의 마지막 글자 위치), ge(이전 단어의 마지막 글자 위치) 를 이용할 수 있게 될 것입니다. 그게 좀 더 빠른 이동을 할 수 있게 하기 때문이죠.. 그럼, 현재 라인의 처음과 끝으로 한번에 이동하는 것도 궁금해 질 것인데, 보통은 home키나 end키를 이용하여 라인의 처음과 끝으로 한방에 이동할 수 있다는 것을 알지만, 오른손을 옮겨야 하기에, 옯기지 않고 이동하는 방법이 없을까? 생각하게 되고, 곧 0(숫자 0)이 라인의 처음으로 이동하는 것이라는 것과 $가 라인의 맨 마지막으로 이동하는 것이라는 것을 배우게 됩니다.  ( $가 라인의 맨 마지막으로 이동하는데 사용되는 키인 이유는 오랜관습 때문입니다. unix 계열의 shell과 정규 표현식에서 $는 문자열의 끝을 나타내는 기호로 사용되어 왔습니다. 예를 들어, abc$ 의 의미는 abc로 끝나는 문자열을 찾는 패턴의 의미 이지요..)

작성 중인 문서(buffer)의 처음으로 이동하기 위해서는 gg키를 누르면 되고, 문서의 끝 줄로 가려면 G키를 누르면 된다는 것도 알게 될 것입니다.  영단어의 첫글자 혹은 선택영역 내의 영단어를  모두 대문자로 바꾸거나 혹은 그 반대로 소문자로 바꾸는 방법도 알게 될 것입니다.   

다음으로 복사와 붙여넣기 그리고 삭제와 되돌리기와 같은 편집기능이 당장 궁금해 질 것입니다. 

d(delete), c(change), y(yank:copy), p(paste) 라는 것을 알게 되죠.  해당 키는 선두키로서, 뒤에 어떤 키를 연속적으로 눌러주냐 에 따라 다양한 확장성을 갖게 된다는 것을 알게 됩니다.  왜 copy를 yank라고 할까? 라고 궁금증이 생기게 되고, 과거 컴퓨터 초창기에 문자열을 메모리에 저장하는 동작을 yank라고 표현했다는 것을 알게 됩니다. 이미 그만큼 오래 전부터 vi가 사용되어 왔다는 반증인 셈입니다. 

dd는 현재 라인을 지우는 것이고,  cc는 현재라인을 변경하는 것(현재 라인을 삭 지우면서, 입력모드로 변경됨), yy는 현재 라인을 복사하는 것이고, p를 누르면, 복사했던 라인을 붙여 넣는 다는 것을 알게 됩니다. 되돌리려면 역시 u키를 누르면 되죠. 

Shift+V를 하면, 헌재의 라인 전체를 선택하고. 이 상태에서 방향키를 움직이면 선택이 계속 추가된다는 것을 배우게 됩니다.  헌재 커서 위치 부터 필요한 부분까지만 선택하는 방법은 없을까? 궁금해 지고, 곧 Ctrl+V가 그걸 가능케 하는 기능키라는 것을 배우게 됩니다. 그리곤, 방향키 혹은 h,j,k,l 키는 물론 w,b,e 혹은 0,$ 등 키를 조합하여, 특정 단어 혹은 단어들 혹은 현재 커서 위치부터 라인의 끝까지 혹은 반대로 라인의 처음까지 "만" 선택할 수 있는 기능 조합을 깨닭게 됩니다.  그리고 y나 p를 이용하여 복사하고 붙여넣기를 할 수 있게 되죠..   블록을 선택하고 >> 혹은 << 를 키인 하면, 해당 블럭이 Tab 처리 된다는 것을 알게 될 것입니다. 

Ctrl+v 키로 블럭을 잡고난 후, Shift+i 를 누르고 나서 입력을 하고 난 후에 ESC키로 Visual 모드를 빠져 나가면 입력한 글이 모든 라인에 동시에 반영된다는 것도 알게 될 것입니다. 

사용자 정의 기능키를 만들고 사용하기 위해 leader키라는 개념이 있다는 것을 알게 되고, 기능키를 만들고 쓸 수 있게 될 것입니다. 

다음으로, 검색과 변경, 일괄변경, Window와 Buffer의 개념을 알게 되고.. 
이렇게 하나하나 배워가면서..  키보드만으로 모든 택스트 편집 및 코딩을 할 수 있다는 것을 깨닭게 되면서 광장한 희열감을 맛보게 될 것 입니다. 

편집에 큰 불편함이 없어질 때쯤, nvim의 plugin들이 있다는 것을 알게 되고, 각종 plugin들을 설치하고 사용하게 될 것입니다. 내가 불편하다고 생각하거나 "이런 기능이 있으면 참 좋을텐데....?" 하는 것들은 거의 대부분 다 plugin들이 존재한다는 것을 알게 될 것이며... 하나하나 설치하고 비교해 가면서 나날이 강력해져가는 도구를 갖게 될 것 입 니 다 . 

공유하기 링크
Comments