linux

vi 단축키

bogus919 2013. 8. 13. 13:51

Disclaimer : This document is not valid and is not maintained anymore.

vi 배우기 -- "컨닝 페이퍼" 기법

Daniel Robbins  저자
Eric Stockbridge  저자
Benny Chuang  편집자
Hwang Joonhyung  번역자

업데이트 2003년 12월 30일
This translation is not maintained anymore

1.  시작하기

소개

이 지침서는 여러분에게 강력하며 시각적인 편집기인 vi를 어떻게 사용하는지 보여줄 것이다. 이 지침서는 특별한 "컨닝 페이퍼" 방법을 이용해서, 여러분이 많은 시간을 들이지 않고 능숙한 vi 사용자가 되도록 쓰여졌다. 이 vi 지침서에서 여러분은 어떻게 이동하고, 글을 고치고, 입력 모드에 들어가고, 글을 복사하고 붙여넣고, 비주얼 모드나 멀티 윈도우 편집과 같은 vim 확장들을 사용하는지 배우게 될 것이다.

만약 여러분이 vi에 대해서 모르거나 잘 사용하지 못한다면, 이 지침서를 사용해서 Linux/UNIX를 위한 시각적 편집 프로그램들 중에서 가장 널리 쓰이고 가장 강력한 프로그램들 중의 하나인 vi를 재빠르게 길들여야 한다.

이 지침서에 대해

vi를 배우는 것을 특히 어렵게 만드는 것은 vi에 많은 명령이 있다는 것이다. 여러분은 vi를 효과적으로 사용하기 위해서 꽤 많은 것들을 기억해야 한다. 그러는 데에는 긴 시간이 걸릴 수 있지만, 이 지침서의 목표 중의 하나는 시간이 많이 걸리지 않는 것이다. 그래서 우리는 먼저 다음과 같은 도전을 받게 된다. 여러분이 짧은 시간에 많은 명령어를 기억하는 것을 내가 어떻게 도울 수 있을까?

이 도전에 응전하기 위해, 우리는 이 지침서를 따라가면서 vi "컨닝 페이퍼"를 써 나갈 것이다. 이 컨닝 페이퍼는 모든 중요한 vi 명령을 포함하게 될 것이다. 이 지침서를 끝내게 되면, 여러분이 특정한 명령을 잊어버렸다면 이 컨닝 페이퍼를 참고할 수 있게 될 것이다. 시간이 흐르면서 여러분은 명령어를 기억하게 되고, 컨닝 페이퍼를 참고할 필요가 점점 없어질 것이다. 이 컨닝 페이퍼 기법을 통해서 여러분은 이전의 어떤 방법 보다 빠르게 vi를 어떻게 쓰는지 배울 수 있을 것이다!

학습 과정

이 지침서에서 나는 여러분이 배우는 것을 돕는 여러 기법들을 사용하려고 한다. 여러분도 예상하겠지만, 먼저 나는 특별한 명령이 어떻게 동작하는지 설명할 것이다. 그 다음에 나는 여러분이 그 명령을 vi에서 (연습삼아) 해 보도록 하고, 컨닝 페이퍼에 (나중에 참고할 수 있도록) 적게 할 것이다. 여러분이 vi를 빨리 배우고 싶다면 이 모든 단계를 모두 하는 것은 중요하다. 명령을 vi에서 해 보는 것과 컨닝 페이퍼에 적는 것은 여러분이 명령을 기억하는 것을 도울 것이다.

vim 소개

vi에는 여러 판이 있으며, 나는 여러분에게 "vim"이라고 불리는 vi의 판을 어떻게 사용하는지 보여주려고 한다. vim은 매우 널리 쓰이며, vim에는 vi를 더욱 멋지게 만드는 많은 확장들이 있다. (내가 vim에만 해당되는 명령을 설명할 때에는 그것을 언급할 것이다.) 여러분이 vim을 설치해야 한다면, www.vim.org 에서 구할 수 있다. (역주: emerge vim으로 설치하는 것이 더 좋다.) vim에는 명령줄에서 쓸 수 있는 향상된 vi에 덧붙여서, 훌륭한 GTK+ GUI 라이브러리를 사용하도록 설정될 수 있는 좋은 그래픽 편집기인 gvim이 포함되어 있다. (역주: gvim은 vim에서 분리되었다. emerge gvim으로 설치할 수 있다.) 아래는 내 시스템에서 찍은 gvim의 스크린샷이다.


그림 1.1: VIM 스크린샷

Fig. 1: screenshot


여러분이 vi 초보자라면, 여러분의 시스템에서 돌아가는 gvim을 구해 보라. 초보자는 GUI를 통해 vi를 사용해서 일을 쉽게 할 수 있다.

2.  첫걸음

파일 고르기

vi로 파일을 고치기 전에, 여러분은 vi에서 파일 안을 어떻게 돌아다는지 알아야 한다. vi에는 많은 이동 명령이 있고, 우리는 그 중에서 많은 것을 둘러볼 것이다. 지침서의 이 부분을 위해서, 중요하지 않은 텍스트 파일을 찾아서 다음과 같은 방법으로 읽어들인다.

코드 내용 2.1: vi로 파일 읽기

$ vi myfile.txt

여러분의 시스템에 vim이 설치되어 있다면 "vim myfile.txt"라고 치라. gvim을 쓰고 싶다면 "gvim myfile.txt"라고 치라. 실제로는 myfile.txt 대신 여러분의 시스템에 있는 텍스트 파일의 이름을 입력해야 한다.

vi 안에서

vi가 불려지면, 여러분이 고른 텍스트 파일의 일부가 화면에 나타날 것이다. 축하한다 -- 여러분은 vi 안에 들어왔다! 많은 편집기들과는 달리, vi는 시작할 때 "명령 모드"라는 특별한 모드 안에 있다. 이는 여러분이 키보드의 "l"을 누른다면, 현재 커서의 위치에 "l"을 삽입하는 대신 커서가 한 칸 오른쪽으로 이동하게 될 것이라는 뜻이다. 명령 모드에서 키보드의 글자들은 글 안에 문자들을 집어넣기보다는 오히려 vi에 명령을 내리는 데 쓰인다. 이동 명령은 가장 필수적인 명령 중의 하나이다. 몇몇 명령들을 살펴 보자.

3.  돌아다니기

vi에서의 이동, 1부

명령 모드에서 여러분은 hjkl 키로 각각 왼쪽, 아래, 위, 오른쪽으로 각각 움직일 수 있다. 여러분이 vi의 현대적인 판을 쓰고 있다면, 이 목적으로 화살표 키를 쓸 수도 있을 것이다. 일단 익숙해지면 여러분은 손가락을 키보드 가운데 줄에서 떼지 않고 파일 안을 돌아다닐 수 있기 때문에 hjkl 키는 편리하다. hjkl 키(와 화살표 키)를 파일 안을 돌아다니기 위해 사용해 보라. 줄의 맨 앞까지 갈 때까지 h를 써 보라. vi는 여러분이 줄의 첫 문자에 있을 때 h를 눌러도 이전 줄로 "줄 바꿈"을 해주지 않는다는 것을 주의하라. 마찬가지로, 여러분이 줄 끝에서 l을 쳐도 다음줄로 "줄 바꿈" 되지는 않을 것이다.

vi 에서의 이동, 2부

vi는 현재 줄의 맨 앞과 뒤로 건너뛰는 특별한 단축키를 제공한다. 여러분은 0(영)을 눌러서 줄의 첫 문자로 건너뛸 수 있고, $로 줄의 마지막 문자로 건너뛸 수 있다. 해보라. vi에는 많은 편리한 이동 명령들이 있어서 (more나 less 명령과 같은) 훌륭한 "보는 프로그램(pager)"도 될 수 있다. vi를 보는 프로그램으로 사용하는 것은 여러분이 모든 이동 명령을 매우 빠르게 배우는 것도 도울 것이다.

여러분은 <CTR>F와 <CTR>B를 써서 앞뒤로 페이지 단위로 이동할 수도 있다. (vim과 같은) vi의 현대적인 판은 여러분이 이 목적으로 PGUP과 PGDOWN 키를 쓰는 것도 허락할 것이다.

단어 이동, 1부

vi에서 여러분은 단어 단위로 좌우로 움직일 수 있다. 다음 단어의  문자로 이동하려면 w를 누르라. 다음 단어의 마지막 문자로 이동하려면 e를 누르라. 이전 단어의 첫 문자로 이동하려면 b를 누르라. 시험해 보라.

단어 이동, 2부

단어 이동 명령으로 놀면서, 여러분은 vi가 "foo-bar-oni"와 같은 단어를 다섯개의 분리된 단어로 다룬다는 것에 관심을 가졌을 수도 있다. 이는 기본적으로 vi가 단어를 공백이나 구두점으로 구분하기 때문이다. 그래서 foo-bar-oni는 "foo", "-", "bar", "-","oni"라는 다섯 단어로 다루어지는 것이다.

때로는 이것이 마음에 들겠지만, 그렇지 않은 때도 있다. 다행히도 vi에는 "큰 단어(bigword)"라는 개념도 있다. vi는 큰 단어를 공백이나 새 줄 만으로 구분한다. 이것은 foo-bar-oni가 vi에서 다섯 단어로 다루어지지만, 하나의 큰 단어로 다루어진다는 것이다.

단어 이동, 3부

앞뒤의 큰 단어로 뛰려면 대문자 단어 이동 명령을 쓰면 된다. 다음 큰 단어의 첫 문자로 이동하려면 W를, 다음 큰 단어의 마지막 문자로 이동하려면 E를, 이전 큰 단어의 첫 문자로 이동하려면 B를 쓰라. 시험해 보고, 대응하는 단어 이동과 큰 단어 이동을 그들의 차이를 이해할 때까지 비교하라.

더 큰 이동

컨닝 페이퍼를 채우기 전에 명령 몇개만 더 다루자. 여러분은 이전 문장과 다음 문장의 처음으로 이동하기 위해 각각 (와 )를 쓸 수 있다. 덧붙여서, 현재 문단의 처음과 다음 문단의 처음으로 건너뛰기 위해 각각 {와 }를 칠 수 있다. 시험해 보라.

4.  종료

종료

우리는 기본적인 이동 명령들을 다루었지만, 여러분이 알아야 하는 명령어들이 몇개 더 있다. :q라고 치면 vi가 종료될 것이다. 이것이 동작하지 않는다면, 아마도 여러분은 어떻게든 실수로 파일을 수정했을 것이다. vi에게 모든 변경 사항을 버리고 종료하라고 하려면, :q!라고 치라. 여러분은 이제 명령 프롬프트에 있어야 한다.

vi에서 ":"로 시작하는 모든 명령은 ex 모드(ex-mode) 명령이라고 불린다. 이는 vi에 ex라는 시각적이지 않은(non-visual) 편집기가 내장되어 있기 때문이다. ex는 sed와 비슷하게 줄 단위의 편집 작업을 하기 위해 쓰인다. 덧붙여서, 우리가 보았듯이 종료하기 위해서도 쓰인다. 만약 여러분이 명령 모드에서 Q를 쳤다면, ex 모드로 옮겨질 것이다. 만약 이것이 일어났다면 여러분은 : 프롬프트와 마주치게 될 것이고, 엔터를 치면 전체 스크린을 위쪽으로 스크롤할 것이다. vi 모드로 돌아오려면 vi라고 입력하고 엔터를 치라.

5.  컨닝 페이퍼

컨닝 페이퍼의 시작

우리는 많은 명령을 다뤘고, 이제 이들을 컨닝 페이퍼에 쓸 시간이다. 컨닝 페이퍼를 쓰려면 여러분은 US 레터지나 A4 크기의 종이가 필요할 것이다. (우리는 이 종이에 많은 정보를 집어넣을 것이다!) 여기에 우리가 지금까지 다루었던 모든 명령을 적은 내 컨닝 페이퍼의 사진이 있다. 모든 것을 한 장에 넣기 위해 가능하다면 내 레이아웃을 따라하라.


그림 5.1: 컨닝 페이퍼

Fig. 1: 컨닝 페이퍼의 첫번째 부분


잡다한 vi

계속 빠르게 명령을 다루자. 명령 모드에서 여러분은 G를 쳐서 특정한 줄로 건너뛸 수 있다. 파일의 첫번째 줄로 건너뛰려면, 1G라고 치라. G가 대문자라는 것에 주의하라.

만약 여러분이 다음으로 나타나는 특정한 텍스트 패턴으로 건너 뛰고 싶다면, /<regexp>라고 입력하고 enter를 치라. <regexp>를 여러분이 찾는 정규 표현식으로 교체하라. 만약 여러분이 어떻게 정규 표현식을 써야 하는지 모른다고 해도 고민하지 마라. /foo라고 치면 다음으로 나타나는 foo로 이동할 것이다. 여러분이 문자^.$\를 쓰고 싶을 때만 조심하면 된다. 이 문자들의 앞에 백슬래시(\)를 두면 된다. 예를 들어 /foo\.gif는 다음으로 나타나는 "foo.gif"를 찾을 것이다.

앞 쪽으로 검색을 반복하려면 n을 치라. 뒤 쪽으로 검색을 반복하려면 N을 치라. 언제나처럼 여러분의 vi 편집에서 이 명령들을 시험하라. 여러분은 마지막 검색을 반복하기 위해 //를 입력할 수도 있다.

6.  저장과 편집

저장과 다른 이름으로 저장

우리는 어떻게 여러분이 ex 명 :q령를 써서 vi를 종료할 수 있는지 다루었다. 만약 여려분이 변경 사항을 저장하고 싶다면, :w를 입력하라. 여러분이 여러분의 변경 사항을 다른 파일에 저장하고 싶을 때, :w filename.txt라고 입력하면 filename.txt로 저장된다. 만약 여러분이 저장하면서 종료하고 싶다면 :x나 :wq라고 입력하라.

vim에서 여러분은 동시에 여러 버퍼를 열어 둘 수 있다. (elvis와 같은 다른 고급 vi 편집기들에서도 마찬가지이다.) 파일을 새 창으로 열려면 :sp filename.txt라고 입력한다. filename.txt가 새로 나누어진 창에 편집하도록 나타날 것이다. 창 사이를 전환하려면 <CTR>w<CTR>w(control-w 두 번)을 입력하라. 모든 :q:q!:w,:x는 현재 활성화된 창에만 적용될 것이다.

간단한 편집

이제 간단한 편집 명령을 몇 개 배울 시간이다. 여기에서 우리가 다룰 명령이 "간단"한 이유는 명령을 사용해도 명령 모드 안에 있기 때문이다. 더 복잡한 편집 명령은 자동으로 여러분을 키보드로부터 문자 데이터를 입력할 수 있는 모드인 삽입 모드 안으로 보낸다. 우리는 그것도 조금 다룰 것이다.

지금부터 몇몇 문자 사이를 움직이면서 x를 반복적으로 쳐 보라. 여러분은 x가 커서 위치에 있는 현재 글자를 삭제한다는 것을 이해할 것이다. 이제, 여러분의 텍스트 파일 안에 있는 어느 문단의 가운데로 움직인 뒤 J를 쳐 보라. (대문자이다.) 여러분은 J 명령이 vi에게 다음 줄을 현재 줄의 끝에 붙이도록 지시한다는 것을 이해할 것이다. 이제 글자 위로 움직인 뒤 r을 친 다음, 새 글자를 치면 원래 있던 글자가 교체되는 것을 이해할 것이다. 끝으로 파일의 어느 문장으로든 움직인 뒤 dd라고 치라. 여러분은 dd가 텍스트의 현재 줄을 지운다는 것을 이해할 것이다.

반복과 삭제

여러분은 . 키를 쳐서 어떠한 편집 명령이라도 반복할 수 있다. 여러분이 실험할 때 dd...는 4 줄을 지우고, J......는 네 줄을 잇는 것을 볼 수 있을 것이다. vi는 평소와 같이 편리한 단축 키를 제공한다.

텍스트를 지울 때 여러분은 d를 이동 명령과 조합해서 쓸 수도 있다. 예를 들어, dw는 현재 위치부터 다음 단어의 처음까지 지우고, d)는 다음 문장의 끝까지 지우며, d}는 문단의 나머지 부분을 지운다. 익숙해질 때까지 d 명령과 다른 편집 명령들로 실험하라.

실행 취소!

우리가 삭제하는 것을 실험하고 있는 지금이 어덯게 변경한 것을 취소하는지 배우기에 좋은 시간이다. vi의 원래 판은 u를 눌러서 마지막으로 편집한 것을 취소하는 것만을 허용했다. 하지만, vim과 같은 vi의 현대적인 판들은 여러분이 u를 여러 번 반복해 눌러서 계속 변경 사항을 취소하는 것을 허용한다. d와 u 명령을 함께 섞어 써 보라.

컨닝 페이퍼에 추가하기

컨닝 페이퍼에 추가할 시간이다! 우리가 지금까지 다룬 모든 명령을 추가한 뒤, 여러분의 컨닝 페이퍼는 이것과 같을 것이다:


그림 6.1: 편집 명령이 더해진 컨닝 페이퍼

Fig. 1: 컨닝 페이퍼


7.  삽입 모드

지금까지 우리는 어떻게 vi 안에서 돌아다니고, 파일 입출력을 하며, 기본적인 편집 작업을 하는지에 대해 다루었다. 하지만, 나는 아직도 여러분에게 어떻게 실제로 텍스트를 자유롭게 입력하는지 설명하지 않았다! 이것은 vi의 삽입 모드는 처음에는 약간 복잡하기 때문에 의도된 것이었다. 하지만 여러분이 삽입 모드에 익숙해지면 삽입 모드의 복잡성(과 유연성)은 자산이 될 것이다.

vi의 삽입 모드에서 여러분은 다른 여러 시각적인 편집기들과 마찬가지로 스크린에 직접 텍트트를 입력할 수 있게 된다. 변경 사항을 입력한 뒤, ESC를 눌러서 명령 모드로 돌아올 수 있다. 여러분은 i나 a를 눌러서 명령 모드에 들어올 수 있다. 여러분이 i를 눌렀다면, 여러분의 텍스트는 현재 문자 바로 앞에 삽입(insert)될 것이고, 여러분이 a를 쳤다면 여러분의 텍스트는 현재 문자 뒤에 추가(append)될 것이다. 여러분이 텍스트를 입력한 뒤 명령 모드로 돌아오려면 <ESC>를 눌러야 한다는 것을 기억하라.

삽입 모드의 장점

게속해서 a와 i 명령을 써 보라. a나 i를 친 다음, 텍스트를 약간 입력하고, ESC를 쳐서 명령 모드로 돌아오라. a나 i를 친 다음 <ENTER>를 쳐 보고 무엇이 일어나나 보라. 화살표 키와 <DEL> 키를 써 보고 어떻게 삽입 모드가 동작하는지 느낌을 받아라. 화살표 키와 <DEL> 키를 써서 여러분은 삽입 모드에 들어가고 나가는 것을 반복하지 않고도 의미있는 편집 작업을 수행할 수 있다.

삽입 옵션

삽입 모드에 들어가는 다른 편리한 방법들을 다룬다. 지금 줄에서의 위치에 관계 없이 현재 줄의 에 추가를 시작하려면 A(대문자)를 누르라. 비슷하게, 현재 줄의 처음에 삽입을 시작하려면 I(대문자)를 누르라. 현재 줄의 밑에 텍스트를 삽입할 수 있는 새 빈 줄을 만드려면 o를 누르고, 현재 줄의 위에 새 줄을 만드려면 O(대문자)를 누르라. 현재 줄의 모든 것을 새 줄로 만드려면 cc를 누르라. 현재 위치부터 줄의 끝까지 교체하려면 c$라고 입력하라. 현재 위치부터 줄의 처음까지 교체하려면 c0라고 입력하라.

위의 명령들은 모두 각각에 해당되는 특별한 처리를 한 뒤, 여러분을 삽입 모드로 보낸다. 여러분의 텍스트를 입력한 뒤, <ESC>를 쳐서 명령 모드로 돌아오라.

텍스트 변환

우리는 지금까지 ccc0c$를 입력하면서 c(change) 명령을 조금 써 왔다. cc는 dd와 비슷한 변환 명령의 특별한 형식이다. c0와 c$ 명령은 변환 명령을 이동 명령과 조합해서 사용하는 예이다. 이 형식에서 c는 d와 비슷하게 동작하는데, 여러분이 지워진 영역을 대신할 텍스트를 입력할 수 있도록 삽입 모드로 옮긴다는 것이 다르다. 몇몇 이동 명령을 c와 조합해 보고 여러분의 파일에서 시험해 보라. (힌트 : cWcec(.)

8.  조합 명령

여러분이 d{와 cw 같은 조합("콤보") 명령들을 사용하기 시작하면 vi는 정말로 강력해진다. 이러한 명령에 더해서, 여러분은 어느 이동 명령에도 숫자를 조합할 수 있다. 에를 들어 3w는 vi가 오른쪽으로 세 단어 건너뛰도록 지시한다. 12b4j는 다른 이동 "콤보" 명령의 예이다.

vi는 (숫자)(이동 명령) 조합에 덧붙여서, d나 c가 숫자나 이동 명령과 조합되는 것도 허용한다. 그래서 d3w는 다음 세 단어를 지울 것이고, d2j는 현재 줄과 다음 두 줄을 지울 것이며, 다른 조합도 비슷하다. 몇몇 c와 d 조합 이동 멸열을 시험해 보고 vi 편집이 얼마나 강력하고 간결할 수 있는지 느낌을 받아라. 일단 이 명령들이 제 2의 천성이 되면, 여러분은 불타는 속도록 파일들을 편집할 수 있게 될 것이다.

컨닝 페이퍼에 추가하기

다시 컨닝 페이퍼에 추가할 시간이다. 이제 컨닝 페이퍼는 이것과 같을 것이다:


그림 8.1: 조합 명령이 더해진 컨닝 페이퍼

Fig. 1: 컨닝 페이퍼


생산성 기능

지금까지 우리는 어떻게 움직이고, 저장하고, 종료하며, 간단한 편집과 삭제를 수행하고, 삽입 모드를 사용하는지 다루었다. 지금가지 컨닝 페이퍼에 열거된 모든 것을 쓰면 여러분은 vi를 써서 거의 모든 작업을 할 수 있을 것이다.

하지만, vi에는 더욱 강력한 명령도 많이 있다. 이 절에서 여러분은 어떻게 잘라내기복사붙여넣기찾기바꾸기와 자동 들여 쓰기 기능을 사용하는지 배울 것이다. 이 명령들은 vi를 더욱 재미있고 생산적으로 만든다.

비주얼 모드

잘라내고 붙여넣는 가장 좋은 방법은 비주얼 모드를 쓰는 것이다. 비주얼 모드는 vim과 elvis와 같은 현대적 판의 vi에 추가된 특별한 모드이다. 여러분은 비주얼 모드를 "선택 텍스트(highlight text)" 모드로 생각할 수도 있다. 일단 텍스트가 선택되면, 복사되거나 삭제되거나 붙여 넣어질 수 있다. 만약 여러분이 gvim을 쓰고 있다면, 여러분은 간단히 마우스 왼쪽 버튼을 특정한 영역 위로 끌어서 선택할 수 있다:


그림 8.2: VIM에서 선택된 텍스트

Fig. 2: 선택된 텍스트


덧붙여서 여러분은 v를 쳐서 비주얼 모드로 들어갈 수 있다. (여러분이 vi를 콘솔에서 사용한다면 이 방법 밖에 없다.) 그 다음에 이동 명령으로 커서를 움직이면 텍스트의 한 영역을 선택할 수 있을 것이다. (보통 화살표 키를 사용한다.) 일단 선택되면, 우리는 텍스트를 잘라내거나 복사할 준비가 된 것이다.

만약 여러분이 텍스트를 복사하려고 한다면, y를 치라. (y는 "yank"를 뜻한다.) 만약 여려분이 텍스트를 잘라내려고 한다면, d를 치라. 여러분은 명령 모드로 돌아오게 될 것이다. 이제 여러분이 잘라내거나 복사한 텍스트를 붙여넣고 싶은 곳으로 위치를 옮긴 뒤 P를 쳐서 커서 뒤에 붙여넣거나, p를 쳐서 커서 앞에 붙여넣어라. 봐라, 복사/잘라내기와 붙여넣기가 끝났다! 다음 절로 넘어가기 전에 우리의 몇몇 복사/잘라내기와 붙여넣기 작업을 시험해 보라.

텍스트 치환

텍스트의 패턴을 치환하기 위해 우리는 ex 모드를 사용한다. 만약 여러분이 현재 줄에서 처음으로 나타나는 패턴을 치환하고 싶다면, :s/<regexp>/<replacement>/라고 입력하고 <ENTER>를 치라. 여기에서 <regexp>는 여러분이 찾고자 하는 패턴이고 <replacement>는 바꿀 문자열이다. 현재 줄에 있는 모든 패턴을 치환하고 싶다면 :s/<regexp>/<replacement>/g라고 입력하고 엔터를 치라. 파일 안에 있는 모든 패턴을 치환하고 싶다면, :%s/<regexp>/<replacement>/g라고 입력하라. (보통 여러분은 이것을 원할 것이다.) 만약 여러분이 파일 안에 있는 모든 패턴을 치환하고 싶지만, vi가 각각의 변경에 대해 여러분의 확인을 받도록 하고 싶다면:%s/<regexp>/<replacement>/gc라고 입력하고 엔터를 치라. (g는"global"을, c는 "confirm"을 의미한다.)

들여 쓰기

vi는 여러분이 소스 코드를 편집할 때 자동 들여 쓰기를 지원한다. 대부분의 (vim과 같은) vi의 현대적 판은 여러분이 소스 파일을 (예를 들어 .c 파일을) 편집할 때 자동으로 자동 들여 쓰기 모드를 활성화 할 것이다. 자동 들여 쓰기가 활성화 되면, 여러분은 <CTR>d(control-d)로 한 단계 왼쪽으로 움직일 수 있고, <CTR>t(control-t)로 한 단계 오른쪽으로 들여 쓸 수 잇다. 만약 자동 즐여 쓰기가 자동으로 활성화 되지 않았다면 여러분은 ex 명령 :set autoindent를 입력해서 수동으로 활성화 할 수 있다. 여러분은 :set tabstop 명령을 써서 vi에게 탭 크기를 여러분이 가장 좋아하는 설정으로 잡도록 할 수도 있다. :set tabstop=4가 매우 인기있다.

우리의 최종 컨닝 페이퍼

자, 여러분은 vi 지침서의 끝에 도달했다! 모든 고급 편집 명령어들을 컨닝 페이퍼에 추가하면 다음과 같아질 것이다.


그림 8.3: 최종 컨닝 페이퍼

Fig. 3: 컨닝 페이퍼


컨닝 페이퍼를 접근하기 쉬운 곳에 두고, vi로 파일을 편집하고 메일을 쓰기 시작하라. 필요할 때 컨닝 페이퍼를 참고하라. 일주일 안에 거의 모든 명령어를 암기하고 vi 생산성이 하늘을 찌를듯해진 자신을 발견하게 될 것이다!

자료

vi에 대해 더 많이 배우는 것을 계속해 나가는데 도움이 될 만한 자료들이 있다.

이 문서에 대해

이 글의 원판은 IBM developerWorks에 처음으로 발표되었으며, Westtech Information Services의 자산이다. 이 문서는 원래 글의 개정판이며, 젠투 리눅스 문서화 팀의 다양한 개선 사항들을 담고 있다.