2017년 11월 19일 일요일

Vim의 기본; 편집 및 종료



시작하며....


MS Word나 한글 같은 프로그램을 이용하여 글을 쓸 때 입력 이외에 가장 많이 하는 것 무엇일까요?

개인차가 있기는 하겠지만 저 같은 경우는 수정을 위해 이동, 삭제, 복사, 붙여넣기, 저장이 될거 같습니다.

아마 이 정도만 알아도 편집기로서의 능력은 충분할거라 생각을 해요.

그러다가 Vim에 대한 관심이 생긴다면 그 후에 더 많은 것을 해도 되겠지요.


0. 준비


배울 때는 단순하게 외운다고 해서 되는건 아니라고 봐요.

실제로 해 보는 것이 가장 좋겠지요.

그래서 저도 해보자고 하고 싶습니다.

시간이 괜찮으신 분들은 아래의 내용을 미리 vim_basic.c로 만들어 주세요.
(아래에는 오류가 있으니 일단 만들어만 두세요~)

#include <stdio.hh>

int main()
{
    printf("Hello World");
   
    int i;
    int sum;

    for ( i = 0; i < 10; i++ ) {
        sum = sum + i;
    }
   
    printf("sum = %d", sum);

    return 0;
}

그리고 Vim으로 열어서 진행 하도록 하겠습니다.

여는 방법은 해당 파일 위에 마우스 커서를 두고 우 클릭을 하면 "Edit With Vim"이 보일거예요.

그걸 클릭하시면 아래와 같은 창을 보실 수 있을거예요.




1. 이동


키보드에 손을 올려 보세요.

그럼 왼손의 집게손가락이 키보드 F에 올려지고 오른손의 집게손가락은 J에 올려지게 되죠.

이 상태에서 사람이 가장 편하게 누를 수 있는 키보드가 무엇일까요??

움직이지 않는 상태니까.

아마 asdf jkl; 중에 하나의 키보드가 될거예요.

그래서일까요? Vim은 가장 편한 키보드 중 j를 아래로 이동하라는 명령어로 설정해 두었어요.

그리고 왼쪽 옆에 있는 키인 h를 왼쪽 이동, k는 위로 이동, l은 오른쪽 이동으로 설정 되어 있어요.



그럼 이동을 하셔서 아래 그림의 h까지 커서를 이동해 보세요.
(이동은 Normal Mode에서만 가능해서 혹시 글자가 입력 되신다면 Esc키를 누르시고 이동하시면 됩니다. 대신... 절대 화살표는 사용하지 마세요. 연습 중이잖아요~)



조금더 편하게 이동하는 방법이 있는데 그건 다른 편에 또 이야기 하겠습니다.


2. 삭제


글자를 삭제 하는 방법은 여러가지가 있어요.

그 중에서 제가 자주 사용하는 것만 알려 드릴게요.
(그 외의 명령은 필요하시면 찾으시면 나올 것이고 없다면 직접 만드셔도 되요.^^)


  • x : 커서 위의 글자 하나를 삭제
  • dd : 한 줄 삭제
  • diw : 한 단어 삭제
  • v[영역선택]d : 영역을 선택하여 삭제
  • V[영역선택]d : 줄 단위를 선택하여 삭제

  • u : 수정 취소
  • Ctrl+r : 수정된거 재복구


위의 명령어는 모두 Noraml Mode에서 사용되어 집니다.

지금은 h를 하나 삭제하려고 하는 것이니 x만 눌러서 삭제를 하도록 하겠습니다.

그럼 아래 처럼 되겠지요.



아래 보니 "printf("Hello World");" 부분이 있는데 이건 삭제를 하죠.

해당 줄에 커서를 두고 dd를 눌러 보세요.

그럼 삭제가 될거예요.



diw는 아무 곳에 가서 한번 테스트를 해 보세요.

만약에 잘못 삭제를 하였다면 u를 누르시면 복원이 되고요.
(윈도우의 Ctrl+z와 같은 효과입니다.)

그리고 u를 너무 많이 눌렀거나 실수로 눌렀다면 Ctrl+r을 누르세요.

복구 버튼 입니다.

다음은 v와 V인데요.

모드 중에 v와 V에 대해 이야기 한 적 있죠.

v나 V를 누르게 되면 Visual Mode가 되는데...

한번 눌러 보세요.

그리고 hjkl(이동키)로 이곳 저곳으로 이동을 해 보세요.

그럼 선택 영역을 지정 할 수 있지요.

아래 그림 처럼 선택을 한 후에....



d를 누르시면 삭제가 되지요.

다시 u를 눌러서 원복을 해 보세요.

V(대문자)는 한 줄 단위로 선택영역을 지정하는거예요.

원하는 만큼 선택하고 d를 누르면 선택한 모든 줄이 삭제 되지요.


3. 복사와 붙여넣기


삭제를 했으니 복사를 해 볼까요??

제가 자주 사용하는 복사 명령어는 다음과 같아요.


  • yy : 한 줄 복사
  • yiw : 한 단어 복사
  • v[영역선택]y : 선택된 영역 복사
  • V[영역선택]y : 선택된 줄 복사



  • p : 복사된 부분 붙여넣기


삭제인 d 명령어 대신 y 명령어를 사용해요.

다른 편집기에서 사용하는 Ctrl+c는 copy의 약자인데... y는 yank라고 잡아 채다의 느낌이라네요.

그럼 붙여넣기는 무엇일까요.

paste인 p를 사용하면 됩니다.

그리고 하나 더 이야기 해 드리고 싶은 것이 있는데요.

d 입니다.

d는 위에서 삭제 하기로 알려 드렸지만..

단순 삭제 보다는 자르기라고 보시는게 더 좋아요.

그러니 d로 삭제 하고 p를 누르면 삭제된 내용이 붙여 넣어지는 것을 볼 수 있을거예요.

d와 p를 이용해서 테스트 해 보고 u로 원복해 보세요.


4. 입력


입력 하려면 어떻게 하면 될까요?

굉장히 단순한데...

Input Mode로 진입하면 됩니다.

Input Mode로 진입을 할 때 제가 자주 사용하는 명령어는 다음과 같아요.


  • i : 현재 커서 앞에서 입력 가능 <= 가장 사용 빈도 높음
  • a : 현재 커서 뒤에서 입력 가능
  • I : 현재 라인 맨 앞에서 입력 가능
  • A : 현재 라인 맨 뒤에서 부터 입력 가능
  • o : 다음 라인 맨 앞에서 입력 가능
  • O : 이전 라인 맨 앞에서 입력 가능


보통은 i를 가장 많이 사용하는데 조금 익숙해 지면 다른 경우로도 연습을 해 보세요.

키보드를 하나라도 적게 입력 하고 사용하는게 좋으니 익숙 해 지면 더 편하게 입력을 할 수 있게 되겠죠.^^

그리고 여기서 하나를 말씀을 드리면 Input Mode에서는 hjkl로 이동할 수가 없어요.

그러니 Input Mode 일 때는 어쩔 수 없이 화살표로 이동을 해야 하는데...

화살표 사용이 너무 싫다면 Esc 키를 눌러 Normal Mode로 빠져 나가 이동 후 다시 i를 눌러 Input Mode로 오시면 되지요.^^

그럼 마무리를 위해 입력을 하나 하죠.

함수 시작 전 첫 줄에 printf("Hello Vim\n"); 이라고 입력해 보시겠어요?

최종 결과물은 다음과 같겠네요.




5. 저장 및 종료


이렇게 수정을 한 후에 저장을 해보겠습니다.


  • :w : 저장
  • :q : 종료
  • :wq : 저장 후 종료
  • :w! : 강제 저장
  • :q! : 강제 종료



":" 글자 기억하시나요??

바로 Command-line Mode로 진입할 수 있는 명령어 입니다.

:를 누르면 아래 부분에 글을 입력 할 수 있게 커서가 나와요.

그림....

여기에 w를 입력하고 Enter를 누르면 저장이 된거예요.

그리고 w 대신에 q를 누르면 종료가 되어요.

w를 누르고 q를 입력해 보시면 Vim이 종료 되는 것을 확인 할 수 있지요.

명령어 뒤에 !를 누른다면 강제라는 의미인데....

예를 들어 저장하지 않고 종료를 하려고 할 때 :q만 입력 하면 Vim은 저장이 되어 있지 않다고 종료를 거부해요.

그럴 때 !를 뒤에 붙여주면 강제로 종료를 하게 되는거죠.


이제 Mode는 모두 배우게 되었고 가장 기본 적인 편집 능력까지 가지게 되었습니다.

남은건...

익숙해 지는거죠!!

그리고 설정을 조금씩 바꾸는 방법에 대해서 배워 볼게요.

감사합니다.^^


댓글 없음:

댓글 쓰기