vi 명령어 컨닝페이퍼 만들기!(1탄)

이 글은 IBM DEVELOPERWROKS사이트에서 가져왔음을 미리 밝힙니다.


자습서 개요

vi는 유닉스와 리눅스 플랫폼에서 사실상 업계(de facto) 표준으로 사용되는 텍스트 편집기다. 거의 모든 유닉스/리눅스시스템에 존재할 뿐 아니라 윈도우, DOS, 매킨토시, OS/2, SGI 등 다른 많은 플랫폼에서도 제공된다. vi를 잘모르거나 익숙하지 않다면 이번 기회를 통해 리눅스/유닉스 플랫폼용 시각적 편집기 프로그램 중 가장 강력하고 널리 쓰이는프로그램인 vi를 익혀보기 바란다.


목적

이튜토리얼 집필 목적은 독자들이 vi를 신속하게 익히도록 돕는 데 있다. vi를 배우기 어려운 이유 중 하나가 vi에서 사용하는명령 수가 아주 많다는 사실 때문이다. vi를 효과적으로 사용하려면 많은 명령을 암기해야 하는데, 필요한 명령을 모두 암기하려면오랜 시간이 걸린다. 그래서 이번 튜토리얼이 목적하는 바가 '단시간에 vi 익히기'다. 그렇다면 짧은 시간에 많은 명령을 어떻게기억하도록 도와줄 수 있을까?

이 문제를 해결하는 방법으로 “컨닝 페이퍼”를이용한다. 튜토리얼을 진행하면서 중요한 vi 명령을 “컨닝 페이퍼”에 하나둘씩 적어둔다는 말이다. 튜토리얼을 마친 후에는 명령을잊어버릴 때마다 컨닝 페이퍼를 참조한다. 그러다 보면 명령이 머리 속에 새겨지고, 결국은 컨닝 페이퍼 없이도 vi를 능숙하게사용하게 되리라고 믿는다.


선수 요건

이튜토리얼은 별다른 선수 요건이 없다. 대신, 독자들이 따라야 할 지침은 있다.

첫째, (당연히) 내가 명령이 동작하는 방식을여러분에게 설명한다.

둘째, (연습으로) 여러분이 vi에서 명령을 직접 실행해본다.

셋째, (나중에 참고할 목적으로) 여러분이컨닝 페이퍼에 명령을 기록한다.

vi를 빨리 배우고 싶다면 위 단계를 충실히 따르라고 권한다. 명령을 vi에서 직접 실행해보고컨닝 페이퍼에 직접 기록하면 명령을 외우기도 쉬워진다.


시스템 요구사항

vi는 여러 버전이 존재한다. 여기서는 “vim”이라는 버전으로 vi 편집기 사용법을 살펴본다. vim은 널리 쓰이는 편집기로,vi를 개선하는 확장 기능을 다수 제공한다(vim에서만 제공되는 명령을 설명할 때는 별도로 언급하겠다). vim을 설치하려면튜토리얼 마지막에 나오는 참고자료에서 vim 홈 페이지 링크를 방문한다. vim은 터미널 윈도우나 터미널 세션에서 돌아가는 텍스트 편집기로, 그림 1은 vim을 실행한 모습이다. 편집기에 열려 있는 파일은 이 튜토리얼 XML 원시 코드다.



파일 열기

vi로 파일을 편집하기 전에 먼저 파일 내에서 커서를 이동할 줄 알아야 한다. vi에는 커서 이동 명령이 아주 많으며, 여기서 많은명령을 살펴볼 예정이다. 우선은 별로 중요하지 않은 텍스트 파일을 vi에서 연다. 파일을 열려면 다음 명령을 실행한다.

$ vi myfile.txt

$ vi 열고자하는 txt파일 혹은 기타 다른 파일

vim을 설치했다면 "vim myfile.txt"를 실행한다. gvim을 사용한다면 "gvim myfile.txt"를 실행한다. 여기서 myfile.txt는 편집기에서 열려는 텍스트 파일 이름이다.

그러면 편집기가 열리면서 텍스트 파일 내용이 화면에 표시된다. 여기까지 성공했다면 축하한다. 이제 vi 안으로 들어왔다. 다른편집기와는 달리 vi는 "명령 모드"라는 특수 모드로 시작한다. 다시 말해서, vi를 시작한 직후 키보드에서 'l'을 누르면(현재 커서 위치에 'l'이 삽입되지 않고) 커서가 오른쪽으로 한 칸 이동한다. 명령 모드에서 키보드 문자는 (텍스트에 삽입하는문자가 아니라) vi 명령으로 인식된다. 이 중에서 가장 기본적인 명령이 커서 이동 명령이다. 몇 가지를 살펴보자.


커서 이동

 명령 모드에서(명령모드라는것은 esc를 한번 누른 상태를 말한다) h, j, k, l 키를 누르면 커서는 각각 왼쪽, 아래, 위, 오른쪽으로 한 칸 이동한다. 근래 vi 버전에서는화살표 키를 사용해도 된다. h, j, k, l 키는 꽤나 편리한데, 일단 익숙해지면 키보드 가운데 줄에서 손을 떼지 않고도커서를 움직일 수 있어서다. 현재 열어 놓은 파일에서 (화살표 키와) h, j, k, l을 사용해 커서를 이동해본다. h 키를계속 두드려 행 맨 처음까지 이동해본다. 행 맨 처음에서 h 키를 계속 두드려도 커서가 이전 행으로 올라가지 않는다는 사실에주목한다. 마찬가지로, 행 끝에서 l 키를 계속 두드려도 커서는 다음 행으로 넘어가지 않는다.

 vi는 행 처음이나 마지막으로 커서를 단번에 이동하는 단축키도 제공한다. 0을 누르면 커서는 행 첫 번째 문자로 이동하고, $을누르면 커서는 행 마지막 문자로 이동한다. 직접 실행해본다. vi에는 편리한 이동 명령이 아주 많아 (more나 less명령처럼) 파일 보기 프로그램(pager)으로도 훌륭하다. 파일 보기 프로그램으로 vi를 활용하면 이동 명령을 기억하기도쉬워진다.

이전 페이지나 다음 페이지로 이동하려면 ^F(컨트롤-F)와 ^B(컨트롤-B) 키를 사용한다. (vim과 같은) 근래 vi 버전에서는 Pg Up 키와 Pg Dn 키를 사용해도 된다.


낱말 단위로 커서 이동

vi에서는 낱말(word) 단위로도 커서를 이동할 수 있다. 다음 낱말 첫 번째 문자로 커서를 이동하려면 w 키를 누른다. 다음낱말 마지막 문자로 커서를 이동하려면 e 키를 누른다. 이전 낱말 첫 번째 문자로 커서를 이동하려면 b 키를 누른다. 직접실행해본다.

낱말 이동 명령을 연습하다 보면 vi가 "foo-bar-oni" 같은표현을 다섯 낱말로 인식한다는 사실이 드러난다. 기본적으로 vi가 공백이나 구두점으로 낱말을 구분하기 때문이다. 즉 vi는foo-bar-oni라는 표현을 "foo", "-", "bar", "-", "oni"라는 다섯 낱말로 인식한다.

그렇지만 foo-bar-oni를 한 낱말로 인식하고 싶을 때도 있다. 다행스럽게도 vi는 "큰 낱말(big word)"이라는개념도 인식한다. 즉 vi에서 foo-bar-oni는 낱말(word) 수가 다섯 개지만 큰 낱말(big word) 수는 한 개다.

다음 큰 낱말과 이전 큰 낱말로 커서를 이동하려면 낱말 이동 명령을 대문자로 바꾼 키를 사용한다. 즉 W 키는 다음 큰 낱말 첫번째 글자로 커서를 이동한다. E 키는 다음 큰 낱말 마지막 문자로 커서를 이동하고, B 키는 이전 큰 낱말 첫 번째 글자로커서를 이동한다. 연습해본다. 차이를 이해할 때까지 낱말 이동 명령과 큰 낱말 이동 명령을 실행하고 비교해본다.


더 큰 단위로 커서 이동

컨닝 페이퍼를 만들기 전에 명령 몇 개만 더 살펴보자. ( 키와 ) 키는 이전 문장과 다음 문장 처음으로 커서를 이동한다. { 키와 } 키는 현재 문단과 다음 문단 시작으로 커서를 이동한다. 연습해본다.


종료

지금까지 기본적인 커서 이동 명령을 살펴보았는데, 알아야 할 명령이 몇 개 더 있다. :q 명령은 vi를 종료한다. 이 명령이먹히지 않으면 실수로 파일을 수정했다는 뜻이다. 수정한 내용을 버리고 vi를 종료하려면 :q! 명령을 입력한다. 그러면 명령프롬프트로 돌아간다.

vi에서 콜론(:)으로 시작하는 명령은 모두 ex 모드명령이다. 이는 vi가 “ex”라는 비시각적인(non-visual) 편집기를 내장하기 때문이다. ex는 sed와 비슷하게 행단위로 텍스트를 편집하는 프로그램이다. 또한, 방금 보았듯이 vi를 종료할 때도 ex 명령을 사용한다. 명령 모드에서 Q 키를누르면 vi는 ex 모드로 전환하고 : 프롬프트가 뜬다. 이 때 엔터 키를 누르면 전체 화면이 위로 이동한다. ex 모드에서vi 모드로 돌아가려면 그냥 vi만 입력한 후 엔터 키를 누른다.


컨닝 페이퍼 만들기

지금까지 많은 명령을 살펴보았다. 이제 모두를 컨닝 페이퍼에 옮겨적을 차례다. 컨닝 페이퍼로는 편지지나 A4 용지가 적당하다(한장에 많은 정보를 구겨넣을 작정이다!). 다음은 지금까지 설명한 명령을 모두 적어넣은 컨닝 페이퍼다. 가능하면 아래 그림을따라서 컨닝 페이퍼를 만들기 바란다. 그래야 모든 정보를 한 장에 채워넣을 수 있다.




트랙백

이 글과 관련된 글 쓰기 (트랙백 보내기)
TrackbackURL : http://ChiACu.egloos.com/tb/1809537 [도움말]

덧글

  • 푸른나무 2008/06/24 10:15 # 답글

    아... 머리아파... 왜 검색 기능은 빼놓는거냐아~~~ ㅋㅋㅋ
  • 치아쿠 2008/06/24 11:27 #

    2탄에 이어집니다 ㅋㅋ
덧글 입력 영역


googld adsense

google add