vi 편집기 시작하기 (1) 사용법 vi [option] [filename] (2) option -c : -c옵션은 시작하면서 어떠한 명령을 실행한다. -r : 손상된 파일을 복구할 때 쓴다. 파일을 편집하던 중 갑작스런 사고 등으로 인해 시스템이 다운되었을 경우 대개 이 명령으로 복구 할 수 있다. +n : 파일을 열면서 n번째 줄로 커서를 이동시킨다. + : 파일을 열면서 마지막 줄에 커서를 이동시킨다. -wn : 기본적인 윈도우 크기를 n라인으로 한다.(기본값은 20라인) (3) 사용예 1) vi => 빈문서로 시작한다. 2) vi index.html => 주어진 파일(index.html) 이름으로 편집을 시작한다. 만약 파일이 존재하지 않으면 새로 만들게 된다. 3) vi +15 index.html => index.html 파일을 열면서 커서를 15번째 줄로 보낸다. 4) vi -c 15 index.html => -c옵션은 시작하면서 어떠한 명령을 실행하라는 뜻이다. 따라서, -c 15 라고 쓰면 +15 옵션과 동일한 결과를 얻는다. 5) view index.html => index.html파일을 읽기 전용으로 파일을 연다. 참고로 저장할 때 ':wq!'형식으로 ! 표를 붙이면 읽기전용이라도 저장된다 6) vi + index.html => index.html파일을 열면서 커서의 위치를 마지막라인에 둔다. 7) vi +/posein /etc/passwd => /etc/passwd 라는 파일을 열면서 posein이라는 문자열이 있는 위치에 커서를 둔다.
3. vi 종료하기 (1) 설명: 모드에 대한 설명이 아래에 나오지만 미리 종료에 대해 설명하면 일단 [ESC]키를 눌러 명령모드로 전환한 후, 필요에 맞게 다음 중 하나의 키워드를 사용하면 된다. (2) 명령 :wq => 파일을 저장한 후 종료한다. 같은 명령으로는 ZZ 또는 :x 가 있다. :q! => 편집하여 변경된 내용을 저장하지 않고 강제 종료한다. :q => 편집중인 내용이 없는 경우, vi를 종료한다. :w => 편집중인 파일 내용을 저장한다. vi는 종료하지 않는다. 4. vi편집기의 모드 (1) 설명: vi편집기에는 크게 2가지모드로 구분된다. 첫번째는 명령모드(command mode)이고, 두번째는 입력모드(input mode)또는 편집모드라고 한다. 또 명령모드는 다시 일반명령모드와 ex명령모드로 구분된다. 명령모드상태에서 입력명령(i,I,a,A,o,O)을 실행하면 입력모드로 전환된다. 입력모드에서 타이핑한 문자들이 문서에 삽입된다. 여기에서 다시 [ESC]키를 누르면 명령모드로 돌아온다. 명령 모드에서 ':'를 입력하면 화면 아래쪽에 ':'라는 프롬프트가 나타나게 되는 데 이것이 ex명령모드이다. 참고)입력모드 키워드가 위 나열한 것외에 (c,C,s,S,R)등이 있다. (2) 모드 1) 명령모드 : vi라고 입력한뒤 처음 접하는 모드 ㄱ. 커서 이동 명령 h : 왼쪽으로 이동 j : 아래로 이동 k : 위로 이동 l : 오른쪽으로 이동 w : 다음 단어의 처음으로 이동 - : 앞 라인의 첫문자로 이동 ^ : 라인의 첫 문자로 이동 $ : 라인의 맨 끝으로 이동 + : 다음 라인의 첫문자로 이동 0(zero) : 첫번째 열로 이동 G : 제일 끝줄로 이동 nG : n번째 행으로 이동 gg : 파일의 처음으로 이동 ( : 문장의 처음으로 이동 ) : 다음 문장의 처음으로 이동 { : 문단(paragraph)의 처음으로 이동 } : 다음 문단의 처음으로 이동 H : 화면의 첫 라인으로 이동 M : 화면의 중간으로 이동 L : 화면의 끝라인으로 이동 ctrl+b(back) : 한 화면 위로 이동 ctrl+f(forward) : 한 화면 아래로 이동 ctrl+u(up) : 반 화면 위로 이동 ctrl+d(down) : 반 화면 아래로 이동 e : 한 단어 뒤로 이동 b : 한 단어 앞으로 이동 :0(zero) : 줄의 제일 처음으로 이동 :$ : 줄의 제일 끝으로 이동 ㄴ. 편집상태로 진입 : 입력모드로 전환하는 키워드이고 하단에 'INSERT' 등과 같은 문자열이 표시된다. i : 현재 커서 위치에 삽입 a : 현재 커서 위치 다음에 삽입 o : 현재 커서가 위치한 줄의 아랫줄에 삽입 I : 현재 커서가 위치한 줄의 제일 앞에 삽입 A : 현재 커서가 위치한 줄의 제일 뒤에 삽입 O : 현재 커서가 위치한 줄 위에 삽입 ESC : 명령모드로 재전환 ㄷ. 복사하기와 붙이기 Y : 현재 커서가 위치한 줄을 버퍼에 복사한다. yy : Y와 같다. yw : 현재 커서가 위치한 단어를 버퍼에 복사한다. 'n'Y : 현재 커서가 위치한 줄에서 아래로 n개 만큼의 줄을 버퍼에 복사한다. 'n'yy : nY와 같다. 'n'yw : 현재 커서가 위치한 단어로 부터 뒤로 n개의 단어를 버퍼에 복사한다. yh : 커서의 왼쪽 문자를 복사한다. yl : 커서가 위치한 문자를 복사한다. yB : 커서의 왼쪽 비공백 단어를 복사한다. yW : 커서의 오른쪽 비공백 단어를 복사한다. y0 : 커서 왼쪽부터 라인의 처음까지 복사한다. p : 버퍼에 들어 있는 내용을 현재 커서가 위치한 줄의 아래에 붙인다. P : 버퍼에 들어 있는 내용을 현재 커서가 위치한 줄의 위에 붙인다. ㄹ. 지우기 x : 현재 커서 위치의 문자를 지운다.(dh와 동일) X : 커서 왼쪽의 문자를 지운다.(dl과 동일) dd : 현재 커서가 위치한 줄을 지운다. (단어 뒤의 스페이스 포함) 'n'dd : 현재 커서가 위치한 줄에서 아래로 n개 만큼의 줄을 지운다. dw : 현재 커서가 위치한 단어를 지운다. db : 현재 커서의 왼쪽 단어를 지운다. 'n'dw : 현재 커서가 위치한 단어로 부터 뒤로 n개 만큼의 단어를 지운다. dB : 현재 커서 왼쪽 비공백 단어를 지운다. dW : 현재 커서 오른쪽 비공백 단어를 지운다. d$ : 현재 커서가 있는 라인부터 끝까지 지운다.(D와 동일) - d0 : 커서 왼쪽부터 라인의 처음까지 지운다. ㅁ. 바꾸기 r : 현재 위치의 문자를 바꾼다. R : 현재 커서 위치부터 원하는 만큼 다른 문자로 바꾼다. cb : 현재 커서 왼쪽 단어를 바꾼다. cw : 현재 위치의 단어를 바꾼다. cc : 현재 커서가 위치한 줄을 바꾼다. c$ : 커서부터 라인의 끝까지 바꾼다.(C와 동일) c0 : 커서 왼쪽부터 라인의 처음까지 바꾼다. C : 현재 커서가 위치한 곳으로부터 줄의 끝까지 바꾼다. 'n'cw : 현재 위치로부터 'n'개의 단어를 바꾼다. 'n'cc : 현재 위치로부터 'n'개의 줄을 바꾼다. ㅂ. 기타 ctrl+g : 현재 편집하고 있는 파일의 정보를 보여준다. shift+v : 블록을 지정한다. u : 방금 한 명령을 취소한다. U : 현재 커서가 위치한 줄에 대한 편집 명령을 취소한다. . : 방금한 명령을 되풀이 한다. 'n'. : 방금한 명령을 n번만큼 되풀이 한다. J : 현재 줄과 다음 줄을 합한다. ZZ :현재 내용을 저장하고 끝낸다. /exp : 'exp'와 같은 내용을 현재 위치 다음부터 찾는다. ?exp : 'exp'와 같은 내용을 현재 위치부터 위쪽으로 찾는다. n : 앞에서 찾은 내용을 현재 위치 다음부터 찾는다. N : 앞에서 찾은 내용을 반대 방향으로 계속 찾는다. >> : 현재 커서 위치 줄을 오른쪽으로 한 열씩 이동한다. << : 현재 커서 위치 줄을 왼쪽으로 한 열씩 이동한다. ~ : 현재 커서가 위치한 문자의 대소문자를 서로 변환한다. ctrl+l : 화면 다시 그린다. ! : vi편집중에 shell명령을 내린다. 3) ex명령모드 : ex란 초기 유닉스에서부터 쓰이던 line editor이다. vi는 자체 명령어외에 ex편집기 명령어를 지원한다. 명령모드에서 ':'누르면 화면 아래쪽에 ':'라는 프롬프트가 나타나면서 ex명령모드로 들어간다. ㄱ. 명령 :w => 현재 내용을 저장한다. :w filename => 현재 내용을 지정된 파일 이름으로 저장한다. :w! => 강제로 덮어쓰기를 한다. :q => 그냥 종료한다. 약간이라도 변경사항이 있으면 종료안된다. :wq => 현재 내용을 저장하고 종료한다. :wq filename => filename 으로 저장하고 종료한다. 새이름으로 저장할 때 쓴다. :q! => 현재 내용을 저장하지 않고 종료한다. :e filename => 새로운 파일을 편집한다. :r filename => 현재 커서 위치 다음에 파일을 읽어 삽입한다. :14 r filename => 14행 이후에 파일을 읽어 삽입한다. :10 => 10번째 줄로 커서를 이동시킨다. :10, 20d => 10번째 행에서 20번째 행까지지운다. (참고) 줄 번호를 쓸 때 '.'는 현재 줄을, '$'는 끝줄을 의미하므로 ':3,$d'는 3번째행에서 끝행까지 지운다는 의미가 된다. 또 첫줄부터 현재 커서가 위치한 줄까지를 지우려면 ':1,.d'라고 쓰면 된다. ㄴ. 문자열의 치환 :s/문자열/새문자열 => 커서가 위치하고 있는 줄의 첫번째 해당문자열을 새문자열로 치환한다. :s/문자열/새문자열/g => 커서가 위치하고 있는 줄의 모든 해당문자열을 새 문자열로 치 환한다. :1,$ s/문자열/새문자열/g => 파일 전체에 대해 해당문자열을 새문자열로 치환한다. :%s/문자열/새문자열/g 와 같다. 5. vi편집기의 환경설정 (1) 설명 : vi환경설정을 위해서는 명령모드에서 :set을 사용한다. (2) 사용법 1)설정 set [환경변수][=값] 2) 해제 set no환경변수 (3) 환경변수 1) ignorecase : 문자열을 검색할 때 대소문자에 관계없이 검색한다. 2) number : 행의 앞에 행번호를 붙여준다. 약자로 'nu'라고 해도 된다. 3) autoindent : 라인변경시 커서의 위치를 바로 위라인의 수준과 같이 해준다. 프로그램작성시에 용이하다. 약자로 'ai'라고 해도 된다. 4) showmatch : '}'또는 ')'를 입력하였을 경우 짝이되는 '{','('를 찾아 커서가 1초동안 머무르다 돌아온다. 이 기능은 C등의 프로그램을 작성할 때 편리하다. 약자로 'sm'이라고 해도 된다. 5) showmode : 화면 아래쪽에 현재 모드를 표시한다. 즉 편집모드인 경우에 'INSERT'등의 값으로 표시해준다. 기본값으로 설정되어 있다. 6) tabstop : 탭의크기를 표시한다. '=n'를 붙이면 탭의크기를 n값에 따라 부여할 수 있다. (4) 사용예 1) :set => 여러가지 환경 변수를 설정한다. set all하면 현재 설정되어 있는 환경변수를 보여준다. 2) :set nu => 행의 앞에 행번호를 표시한다. ':set number'와 같다. 3) :set nonu => 행의 앞에 붙은 행번호 표시를 없앤다. 4) :set ai => [Enter]키를 입력하면 행을 바꾸었을 경우 위 줄과 같은 열에 커서를 위치시킨다. 5) :set noai => 'ai'설정을 해제한다. ':set noautoindent'와 같다. 6) :set ignorecase => 명령모드에서 문자열을 검색시에 대소문자를 구분하지 않는다. 즉 '/linux'라고 입력하면 linux, Linux, LINUX 등의 모든 문자열을 찾아준다. 7) :set noignorecase => 검색시에 대소문자를 구분하도록 한다. 8) :set tabstop => 현재 설정된 탭의 크기(기본값은 4)를 보여준다. 9) :set tabstop=8 =>탭의 크기를 10으로 바꾼다. 10) :set noshowmode => 리눅스에서는 기본적으로 모드를 표시해준다. 즉 입력모드인 경우에는 화면하단에INSERT 등을 표시해준다. 위와 같이 명령을 내리면 모드전환을 해도 표시해주지 않는다. (5) 관련파일 : .exrc 1) 설명: set명령을 사용자의 홈 디렉토리의 .exrc(또는 .vimrc)안에 써 놓으면 vi가 시작될 때 디폴트로 설정되어 시작하게 된다. 2) 사용법 set [환경변수] [값] 3) 사용예 [posein@www posein]$ cat .exrc set nu set ai => vi편집기 실행할 때마다 각 행 앞에 행번호를 붙여주고 autoindent를 적용한다. ':'는 적지 않는다.
|