vi editor
[1] 시작 vi의 실행은 한글 환경에서 vi를 입력하면 되고, 콘솔모드 에서 한글을 다루려면, han을 먼저 입력한 뒤, vi를 입력하 면 됩니다. vi를 실행시키는 방법은 간단합니다. 셸상에서 'vi'라고 입력하고 Enter 키만 누르면 된다. 그러면 새로운 문서를 편집할 수 있는 환경이 만들어 집니다. 예) >vi 기존의 문서를 편집하고자 할 때에는 파일의 이름을 구체 적으로 명시합니다. 예) >vi file1 지정한 파일의 내용을 읽기 전용으로 열어서 볼 때는 다음 과 같이 명시합니다. 예) >vi -R file >view file
[2] vi의 세가지 모드 이렇게 vi를 실행시키면, 검은색 화면 첫행에 커서만 깜 박거리고 있을 것입니다. "어? 왜 메뉴가 없지?" 처음 vi를 사용하는 분이라면 아마 이런 질문을 하게 될 것입니다. 결론부터 말하자면 vi에는 메뉴가 없다. 필요 한 명령어는 전부 외워서 적용해야 합니다. 도스나 윈도에서 사용하던 편집기에서는 일단 편집하고 자 하는 파일에 내용을 입력하다가 편집 명령을 이용할 때에는 화면의 메뉴를 클릭, Ctrl이나 Alt와 같은 특수키 를 사용했을 것입니다. 하지만 vi에서는 메뉴라는 것이 없이 상태를 전환할 수 있는 다른 방법을 제공한다는 차 이점을 가지고 있습니다. 처음에는 이러한 방법이 어렵 게 느껴질지 모르지만, 익숙해지다 보면, 오히려 이러한 방법이 더 편리하다는 것을 알게 될 것입니다.
[2] vi의 세가지 모드 #2 그렇다면 vi명령어는 어떻게 구성되어 있을까요? vi명령어는 다음과 같이 입력 모드, 명령 모드, 콜론 모드 (ex 모드) 크게 세가지로 분리됩니다. ① 입력 모드 - i, a, o, I, A, O를 누른 후 텍스트를 입력할 수 있는 상태 ② 명령 모드(Esc모드) - ESC키를 누른 상태 ③ 콜론 모드(Ex모드) - ESC키를 누르고, :(콜론)을 입력 한 상태 Esc : Enter 입력 모드 명령 모드 x,dd,dw i, a, o, O, R
[2] vi의 세가지 모드 #3 그리고, 이러한 기본적인 모드들을 다른 편집기의 활용과 비 교해보자면, 다음과 같습니다. ① 입력 모드 - 다른 편집기에서 타이핑을 하여 파일의 내용 을 입력하는 과정 ② 명령 모드 - 다른 편집기의 편집(Edit) 메뉴에서 제공하는 복사(Copy), 붙이기(Paste),삭제(Delete) 등의 편집 기능의 활용 ③ 콜론 모드(ex 모드) - 다른 편집기의 파일(File) 메뉴에서 수행하는 열기(Open), 저장 (Save), 다른 이름으로 저장 (Save as) 등의 명령 수행 vi는 실행될 때 명령 모드에서 시작하고, 실행을 종료할 때에 는 콜론 모드에서 종료 명령을 수행합니다. 또한 vi는 대문자 와 소문자 구분을 확실히 해두어야 한다는 것을 유념합시다. 자. 이제 그림을 통해 이러한 세가지 모드를 구체적으로 살펴 보도록 합시다
(1) 입력 모드 글자를 입력하기 위해서는 입력모드로 가야 하는 데, 'i'를 입력하면, 하단에 --INSERT--가 나오면 서, 글자를 입력할 수 있는 입력모드로 바뀝니다. 입력 모드로 들어가는 대표적인 방법은 i 키를 누 르는 것이지만, 이외에도 몇 가지 방법이 더 있습 니다. 이렇듯 다양한 종류의 글 삽입 방법을 만들 어놓음으로써 키보드 타이핑 횟수를 최대한 줄일 수 있는 이점을 지닙니다. 이것은 모드 방식 편집 기의 특성일 수도 있고, 유닉스 프로그래머들의 독 특한 문화일 수도 있겠지요.
(1) 입력 모드 #2 - i : Insert, 현재 커서의 위치에 글자를 삽입 - I : Insert, 커서가 있는 줄(line)의 맨 앞에 글자를 삽입 - a : Append, 현재 커서 위치의 다음 칸에 글자를 추가 - A : Append, 커서가 있는 줄(line)의 맨 뒤에 글자를 추가 - o : Open line, 현재의 줄 다음에 새로운 줄을 삽입 - O: Open line, 현재의 줄 앞에 새로운 줄을 삽입 위의 경우 중 i의 예를 들면 아래와 같습니다. vi 파일명 으로 문서작성 형식으로 들어가 i를 누른 후, 아래 쪽에 INSERT표시가 생긴 후 글을 입력시킨 형태입니다. 일단, 입력 모드로 전환되면, 커서의 현재 위치에서 입력 명령에 따라 여러 가지 내용을 입력할 수 있습니다. 영/한 변환은 Shift+Spacebar를 입력하면 됩니다. 아직까지는 단순히 글을 치고 Enter 키를 이용해 줄을 바꾸는 일밖에 할 수 없습니다. 화살표 키를 이용해 커서의 위치를 바꾸어 입력하는 것은 가능합니다. 편집은 대부분 명령모드 상태에서 이루어 집니다.
(2) 명령 모드 입력 모드에서 명령 모드로 다시 전환하려면 Esc 키를 누 르기만 하면 됩니다. ESC 키를 누르고 문자를 입력하려고 하면 비프음만 날 뿐 입력은 되지 않을 것입니다. 리눅스에서는 명령모드가 따로 있습니다. 명령모드는 편집 모드라고도 하는데, 글을 입력시키는 방법이 아닌 수정과 편집을 할 수 있는 상태임을 기억해 두어야 합니다. 즉, 명 령모드에서는 복사,삭제, 붙이기. . .등의 작업이 이루어 집 니다. 또한, 입력모드를 통해 삽입 등 잘못된 명령을 내렸 을 때 'u'라는 명령어를 통해서 Undo, 즉 복구가 가능하게 할 수 있습니다.
커서의 이동(명령모드) k h l j
데이터 삭제(명령모드) 파일 내용을 편집할 때 수정 또는 삭제할 때 사용 x : 문자 : 커서의 문자를 삭제 dw: 단어 : 커서의 단어를 삭제 dd : 줄 : 커서가 있는 줄을 삭제 u : 복귀 : 바로 전에 수행한 명령 취소
(3) 콜론 모드 명령모드에서 콜론 모드로 전환하려면 ':'명령을 실행시키면 됩니다. 콜론 모드는 vi에서 사용할 수 있는 명령어들을 이용하는 곳입니다. 윈도우 환경에서라면 메뉴 바와 같은 역할을 한다고 볼 수 있습니다. 파일을 저장하거나 vi를 종료하는 등의 일을 수행할 수 있습니다. 콜론 모드로 들어가려면 Esc를 누른 후 ":"를 누르면 됩니다. 콜론 모드에 들어가게 되면 화면 아래쪽에 ':' 표시가 나타나게 되며, 여기서 원하는 작업에 해당하는 명령을 입력하고 Enter 키를 치면 됩니다. 아래 그림에서 아래쪽에 ":wq"라는 표시가 눈에 뜨일 것입니다. ":" 이 상태가 바로 앞에서 말한 콜론모드의 형태입니다.
[3] 종료 종료 명령은 앞에서 잠깐 콜론 모드에서 이루어 집니다. 편집한 데이터를 저장하고 종료하려면, wq(Write and Quit)를 입력합니다. 예) :wq 저장하지 않고, 강제로 종료하려면, q!(Quit!)를 입력합니다. 예) :q! vi를 끝내지 않고, 현재 작업 중인 내용을 저장만 하려면, w를 입력합니다. 예) :w
예제#1 %vi test.c int a(int xx, int yy) { int zz; zz= xx* yy; return(zz); } int b(int xx, int yy) zz= xx + yy; #include<stdio.h> void main() { int x,y,a1,a2; x=18; y=9; a1=a(x,y); a2=b(x,y); printf("%d * %d = %d\n", x,y,a1); printf("%d + %d = %d\n", x,y,a2); }
컴파일 및 실행 컴파일 방법하기 %gcc test.c -o test.exe 실행하기 %./ test.exe
vi editor 응용
테스트 치환 “r” : 문자 “cw” : 단어 “cc” : 줄 단어의 첫 위치에 커서를 위치시킨 후 cw를 누루고, 치환할 단어를 누른 후 “ESC”를 누른다. “cc” : 줄 줄의 아무 위치에나 커서를 위치 시킨 후 cc를 누르고, 치환할 테스트를 입력 후 “ESC”를 누른다.
텍스트 붙이기 텍스트를 붙이고자 하는 내용을 먼저 버퍼에 복사한 다음, 버퍼에 있는 내용을 원하는 위치에 붙이면 된다. “yy” : 현재 줄을 버퍼로 복사 “p” : 현재 줄을 다음에 버퍼 내용을 삽입 “:<범위>y” : <범위>의 모든 줄을 버퍼로 복사 “:pu” :현재 줄 다음에 버퍼 내용을 삽입 “:npu”:n번째 줄 다음에 버퍼 내용을 삽입
문자열 탐색 파일 내용에서 어떤 특정한 문자열을 탐색하고자 할 때 사용 “/문자열” : 현재 위치에서 파일의 앞쪽으로 이동하면서 문자열 탐색 “?문자열” : 현재 위치에서 파일의 뒤쪽으로 이동하면서 문자열 탐색 “n” : 다음 문자열 탐색 “N” : 역방향으로 다음 문자열 탐색
패턴에 의한 치환 특정 문자열을 다른 문자열로 변경하고자 할 때 사용 “:s/문자열1/문자열2” 커서가 위치한 줄에 문자열1을 문자열2로 치환 “:<범위>s/문자열1/문자열2” <범위>안의 모든 줄에 대해서 문자열1을 찾아 각 줄의 첫 번째 문자열1만 문자열2로 치환 “:<범위>s/문자열1/문자열2/g” 각 줄에 2개 이상 있어도 모두 치환 “:<범위>s/문자열1/문자열2/c” 치환할 때 치환 할 것인지 묻는다.
파일 저장과 불러오기 작성된 또는 수정된 내용을 파일에 저장 하기 편집상태에서 다른 파일을 불러오고자 한다면 “:w” 현재의 파일명으로 파일에 저장 “:w 파일명” 파일명으로 저장 (다른 이름으로 저장) “:w!” 파일의 소유자가 나이고 읽기로 되어 있는 경우 강제로 저장한다. 편집상태에서 다른 파일을 불러오고자 한다면 “:r 파일명” 파일명을 현재위치에 삽입 “:e 파일명” 현재파일 대신에 파일명의 내용을 읽는다.
vi 끝내기 “:q” “:q!” “:wq” “wq 파일명” “zz” 저장하였다면 vi를 빠져나간다. 다른이름(파일명)으로 저장하고 빠져나간다. “zz” 작업내용을 저장 후 빠져나간다
쉘 명령 사용 Vi편집기 상에서 쉘을 수행 할 때 “:!명령” “:sh” Vi를 중단하고 지정한 명령을 수행
그 밖의 유용한 편집 명령 “:set number” : 줄 번호 삽입 “:set nonumber” : 줄 번호 제거 “J” : 현재 줄과 다음 줄을 연결 “.” : 바로전에 수행한 명령 재 수행 “~”:현재 커서의 한 문자를 소문자 혹은 대문자로 변경 “^L” : 현재의 화면을 다시 그린다.