생존을 위한 vim

Roeniss Moon·2022년 7월 2일
1

발표자료

목록 보기
1/1

주니어를 위한 프레젠테이션을 위한 초고

vim 이 무엇인가

"텍스트 에디터. 그런데 끊임없이 깊이 들어갈 수 있는"

이 슬라이드를 보라. 이 분은 지금 다른 에디터들이 당신(개발자)의 잠재력을 깎아먹는다고 하고 있다.

"A text editor which is highly customizable, proper for extremely lazy men, and has great potential"

극도로 적은 움직임으로 극도로 높은 퍼포먼스를 뽑아낼 수 있는, 그러나 그게 한순간에 되지는 않는 에디터.

뭐가 다른가

멀리 볼 것도 없다. vscode, intellij, sublime 은 적어도 프로그램을 키고 끄는게 낯설지는 않다. 반면:

모두 vim 을 종료하는 방법들이다.

:q
:q!
:wq
:x + Enter
:qa + Enter
ZZ
ZQ

무엇보다 조심해야 하는 부분

주화입마에 빠지지 마세요.

more generally,

vim 을 일부러 (코딩 시작할 때부터) 배워야 할 필요는 없다. 생산성을 100퍼센트 높였는데 기본값(코딩 능력)이 0.001 pt 이라면, 기껏해야 0.1pt 아닌가. 처음엔 코딩 능력을 올리는 데 포커스하는게 맞다고 본다.

같은 맥락에서 vim 을 메인 에디터 (혹은 IDE) 로 삼을 필요는 없다. 당신은 이미 좋은, 꽤나 준수한 도구들을 무료로 사용할 수 있고, 그 안에서 커스터마이징 할 수 있는 경우는 오만가지 방법이 있다. 이에 대한 자세한 얘기는 다른 발표에서 다루겠다.

그런데 그럼 대체 이 발표는 왜 들어야 하는가?

어쩔 수 없이 vim 을 사용해야 하는 순간이 온다. 거의 반드시 온다... 아니, 무조건 한 번은 만날 것이다.

뭐랄까, 느낌상으로는 이렇다: 비행기를 타고 미국에 가야되는데, 중간에 홍콩에서 잠깐 4시간 정도 체류해야 할 일이 생겼다고 해보자 (보통 한 번에 안가더라). 그런데 깜빡하고 졸다가 두 번쨰 비행기를 놓쳤다. 휴대폰도 로밍이 잘 안되는 것 같다. 이 상황에서 어떻게 하겠는가? (진짜 질문해본다) 그렇지. 당신이 비행기 탄 항공사 데스크를 찾아가야된다. 말이 안통하면 적어도 (당신이 예약한 비행기가 아니어도) 대한민국 항공사를 찾아가서 도움을 요청해볼 수도 있다. 아니면 지나가는 사람을 붙잡고 같은 한국인 좀 도와달라고 할 수도 있을 것이다. 제 경험상.... 딱봐도 한국인인데 옆나라 사람들인 경우가 꽤 있더라. 그걸 내가 왜 아는지는 아주 슬픈 썰이므로 다음에 얘기하도록 하자.

잡소리가 길었는데, 어떤 상황에서는 당신이 vim 을 쓰게 되는 순간이 온다. 그날을 위한 최소한의 상식을 갖춘다고 생각해보자. 구체적으로는:

  • 당신은 vscode remote 을 감히 설치할 수 없는 IDC 물리장비에 직접 접속해서 스크립트를 돌려야 하는 날을 만날 것이다.
  • 당신은 터미널의 명령어 입력창에 vim 이 장착되어 있는 아주 오래된 터미널에 접속하는 날을 만날 것이다.
  • 당신은 vim이 유일한 에디터인 환경을 만날 것이다.

이 발표는 두 부로 나뉘어져 있다. 1부에서는 정말정말 최소한의 빔을 가르치고, 2부에서는 아주 조금의 욕심을 내어 셋업과 명령어를 더 배워본다.

1부 - 긴급탈출 프로토콜

(항상 keyCastr 를 켜둘 것)

Vim is modal editor -- how to exit vim

vim 은 기본적으로 4개의 모드가 있고, 나도 최근에 알았는데 그 외에 혹은 세부적으로 온갖 모드들이 다 있다. 그러나 지금은 기본적인 것만 하자.

  • ESC 연타하기 -> NORMAL 모드로 되돌아온다.
  • :q!<ENTER> (콜론, 소문자 큐, 느낌표, 엔터) -> 긴급탈출 성공!

1부는 이걸로 끝이다. 당신이 의도치 않게 빔으로 접속했다면 이 방법으로 "아무것도 수정하지 않고" 도망쳐 나올 수 있다. 뒤도 돌아보지 말고 달아나십시오.

Insert mode

아니 그래도 약간은 수정해봐야 되지 않을까? 그럴땐 insert mode 로 들어갔다가 나와보자

  • 파일 열기
  • ESC 연타하기
  • i (소문자 i) -> 하단에 -- INSERT -- 가 보이는지?
  • 수정: 한 줄, 여러 줄 -- 실수로 ESC 누르지 마시오.
  • ESC 연타하기
  • :wq, :q, :q! 한 번씩 해보기

1부 끝.

2부 - 어렵지는 않은, 그러나 알아두면 좋은 것들

조금 더 많은 명령어들

  • w, b: 빨리 좌우로 이동하기
  • dd: 한 줄 지우기
  • \/ (슬래쉬), n: 검색하기, 다음 검색어로 넘어가기
  • G, gg: 끝, 시작 줄로 이동

~/.vimrc

사랑받는 신입이 되어보자: 짐작컨대 많은 개발팀에게 (자기 컴퓨터가 아닌) 터미널 환경은 답답하고, 불안하고, 음험하고, 무섭고, 어둡고, 불길한 지역이다. 그렇기 때문에 최소한으로 건드리려는 속성이 있고, 이 때문에 vim 을 포함해 많은 부분이 "불필요하게" 내동댕이 쳐져있다. 여기에 약간의 소스를 첨가해서 모두의 불편함을 감소시킬 수 있다. 명심하라. vim 에 아무런 세팅이 안되어있는 것은 (1) 설치되어있는 vim 버전이 너무 낮아서 세팅이 안먹히기 때문일수도 있고 (2) 세팅을 하면 안되는 특별한 히스토리가 있기 때문일 수도 있지만 (3) 대부분은 그냥 귀찮고, 무섭고, 그런 세팅이 가능한지도 몰랐기 때문에 그냥 그 상태로 불편하게 지내는 것이다 (라는 나의 가설이 있음 ㅎㅎ).

그냥 불편하게 견디면서 살면 안되나요? -> 불편한 건 그냥 참고 감수할 문제가 아니다. 이는 생산성을 저해하는 요소이기 때문에, 조금의 노력으로 불편함을 크게 개선하는 건 꽤나 가치있는 액션이다.

주의! 이런 세팅들은 본인만 영향을 받는게 아니기 때문에 주변 동료들에게 문제가 없을지 물어보자. (위의 (2)에 해당함)

(내 vim 세팅중 적용해볼만한, 적용해도 어렵지 않은 부분들을 얘기한다. docker - bash 로 직접 차이를 보여준다)
(nginx.conf 가 좀 현실성있는 예시가 아닐까 싶다)

당장 생각나는건 버퍼 캐시 같은거임. 아니면 다음줄 넘어가게 한다던가 하는 것들

여담 - 조금 더 배워보고 싶어?

주화입마를 조심하면서, 조금 더 배워보면 여러가지로 유익한 것 같긴하다. 나도 입문자라서 명확하게 이게 좋다! 혹은 빔을 꼭 해야 된다! 이런말은 못했지만... vim-adventure 가 나에겐 큰 도움이 되었다. 한 3만원 정도 하는데, 효용에 비해서 그렇게 비싼 것 같진 않다. 에디터를 돈줘가며 배워야 되냐고 반문하면 할 말은 없다만... 돈내고 아주 쪼금 더 빠른 길 골랐다고 해두자.... 재미있어 꽤...

profile
기능이 아니라 버그예요

0개의 댓글