450 likes | 683 Views
Linux/UNIX Programming VI 편집기 (VI Editor) 최미정 mjchoi@kangwon.ac.kr 강원대학교 IT 대학 컴퓨터과학전공. UNIX 편집기 종류. VI 편집기. vi 모든 유닉스 시스템에서 사용할 수 있으며 , 기능도 매우 강력함 기능을 배우는데 상당한 시간을 투자해야 함 ( 숙련자가 되는데 많은 노력이 필요함 ) emacs 기능은 막강하나 기능 숙달에 많은 시간을 투자해야 함 모든 유닉스 시스템에서 유용한 것은 아님. vi 시작하기. VI 편집기.
E N D
Linux/UNIX Programming VI 편집기 (VI Editor) 최미정 mjchoi@kangwon.ac.kr 강원대학교 IT대학 컴퓨터과학전공
UNIX 편집기 종류 VI 편집기 • vi • 모든 유닉스 시스템에서 사용할 수 있으며, 기능도 매우 강력함 • 기능을 배우는데 상당한 시간을 투자해야 함(숙련자가 되는데 많은 노력이 필요함) • emacs • 기능은 막강하나 기능 숙달에 많은 시간을 투자해야 함 • 모든 유닉스 시스템에서 유용한 것은 아님
vi 시작하기 VI 편집기 vi를 시작하려면, Shell Prompt 상에서 “vi” 명령어 입력$ vi [file [file …]] file은 사용자가 편집하고자 하는 파일의 이름
명령 모드와 입력 모드 VI 편집기 • vi로 작업하면 모든 데이타는 편집 버퍼(editing buffer)에 유지됨(자신이 작업하는 내용은 메모리에 있음에 유의) • 입력 모드 (input mode) • 입력하는 모든 것이 편집 버퍼에 입력됨 • 즉, 자신이 입력하는 내용이 화면에 보이고, 그 입력 내용은 메모리 반영됨(디스크에 직접 반영되는 것이 아니라 편집 버퍼인 메모리에 반영됨) • 명령 모드 (command mode) • 입력하는 모든 것이 명령어로 해석됨 • 일반 편집기에서 화살표 키와 같은 역할을 수행한다고 이해할 수 있음 명령 모드 입력 모드 i, I, o, O, s 키 등 ESC 키
디스크(파일)와 편집 버퍼 VI 편집기 Disks (Files) 버퍼 내의 파일내용 저장 후 편집기에서 빠져 나옴 (Editing) Buffer 파일 편집을 위해서 편집기를 부름 Disk(file)와 편집 버퍼와의 관계
vi 종료하기 (1/2) VI 편집기 종료하기 위해서는 명령을 입력할 수 있는 명령모드에 있어야 함 ZZ작업 내용을 저장하고 종료(Shell Prompt로 복귀) :q아무런 작업을 하지 않은 경우의 종료 :q!작업 내용을 저장하지 않고 종료 :wq작업 내용을 저장하고 종료 (ZZ와 동일한 기능) “:q!”를 사용할 경우, 작업 내용을 저장했는지 꼭 확인할 것
vi 종료하기 (2/2) VI 편집기
vi 명령어 사용 전략 VI 편집기 • 편집 버퍼(화면)에 데이타를 넣을 때 다음 단계를 따른다. • 데이타를 쓰고 싶은 곳으로 커서를 옮긴다. • 입력 모드로 바꾸기 위한 명령을 사용한다. • 데이타를 입력한다. • 명령 모드로 바꾸기 위해 ESC를 누른다.(내용을 입력한 후에는 버릇처럼 ESC를 누른다.) • 편집 버퍼(화면)에 데이타가 있으면 어떤 일을 수행하기 위한 다양한 명령들을 읽힌다. • 커서를 움직이는 명령 • 입력 모드로 전환하는 명령 • 변화를 주기 위한 명령
커서 이동하기 (1/4) VI 편집기 명령 모드에서 자판의 키를 활용하여 커서를 이동시킨다. h커서를 한 칸 왼쪽으로 이동 j커서를 한 칸 아래쪽으로 이동 k커서를 한 칸 위쪽으로 이동 l커서를 한 칸 오른쪽으로 이동 LEFT커서를 왼쪽으로 한 칸 이동 DOWN커서를 아래쪽으로 한 칸 이동 UP커서를 위쪽으로 한 칸 이동 RIGHT커서를 오른쪽으로 한 칸 이동 BACKSPACE커서를 왼쪽으로 한 칸 이동 SPACE커서를 오른쪽으로 한 칸 이동
커서 이동하기 (2/4) VI 편집기 h l k j
커서 이동하기 (3/4) VI 편집기 -커서를 이전 줄의 처음으로 이동 +커서를 다음 줄의 처음으로 이동 RETURN커서를 다음 줄의 처음으로 이동 0커서를 현재 줄의 맨 앞으로 이동 $커서를 현재 줄의 끝으로 이동 ^커서를 현재 줄의 첫 글자로 이동(탭이나 공백이 아닌) w커서를 다음단어의 첫 글자로 이동 b커서를 이전단어의 첫 글자로 이동
커서 이동하기 (4/4) VI 편집기 W w와 동일, 문장 부호 무시 B b와 동일, 문장 부호 무시 )다음문장의 처음으로 이동 (이전문장의 처음으로 이동 }다음문단의 처음으로 이동 {이전문단의 처음으로 이동 H커서를 화면 맨 위로 이동 L커서를 화면 맨 아래로 이동 M커서를 중간으로 이동
화면 이동하기 VI 편집기 vi는 화면에 알맞을 만큼만 편집 버퍼의 내용을 보여줌 화면에 나타나지 않은 편집 버퍼의 다른 부분을 보기 위해서 화면을 이동하는 명령을 사용함 ^F한 화면 아래로 이동 ^B한 화면 위로 이동 ^D반 화면 아래로 이동 ^U반 화면 위로 이동
패턴 검색 (1/3) VI 편집기 사용법: 명령 모드에서 “/” 혹은 “?”을 사용 /search_pattern 커서 이후에 대해 검색을 수행함 ?serach_pattern 커서 이전에 대해 검색을 수행함 상기 사용법에서 search_pattern에는 찾고자 하는 단어나 문장을 입력함
패턴 검색 (2/3) VI 편집기
패턴 검색 (3/3) VI 편집기
줄 번호 붙이기 (1/2) VI 편집기 • 편집 버퍼에 있는 각 줄에 번호를 부여하고 관리함 • 줄 번호 붙이기 :set number :se nu • 줄 번호 없애기 :set nonumber :se nonu • 줄 번호를 알 경우, 다음 명령을 사용하여 원하는 줄로 이동할 수 있음 nG줄 번호 n으로 이동하기 (:n) 1G편집 버퍼의 첫 줄로 이동하기 (:1) G편집 버퍼의 마지막 줄로 이동하기 (:$)
줄 번호 붙이기 (2/2) VI 편집기
입력 모드로 변환 (1/5) VI 편집기 새로운 데이타 입력에 사용되는 명령(명령 모드에서 다음 키를 입력하면 입력 모드로 변환됨) i입력모드로 전환, 커서 위치 앞에서 삽입 a입력모드로 전환, 커서 위치 뒤에서 삽입 I입력모드로 전환, 현재 줄의 앞에서 삽입 A입력모드로 전환, 현재 줄의 뒤에서 삽입 o입력모드로 전환, 현재 줄의 아래에 전개 O입력모드로 전환, 현재 줄의 위에 전개
입력 모드로 변환 (2/5) VI 편집기 a1234
입력 모드로 변환 (3/5) VI 편집기 i1234
입력 모드로 변환 (4/5) VI 편집기 o1234
입력 모드로 변환 (5/5) VI 편집기 O1234
내용 수정하기 (1/4) VI 편집기 현재 커서를 중심으로 파일의 내용을 수정하는 명령어들(“r”을 제외하고는 명령 수행 후 입력 모드로 변경됨) r단지 한 글자만 변경(입력 모드로 바뀌지 않음) R입력하는 대로 겹쳐 써서 변경 s현재 글자를 삭제하고 삽입 상태로 변경 C커서의 위치로부터 줄 끝까지 삽입에 의한 변경 cc전체 줄을 삽입에 의해 변경 cw현재 단어를 삭제하고 삽입 상태로 변경
내용 수정하기 (2/4) VI 편집기 rx
내용 수정하기 (3/4) VI 편집기 R1234
내용 수정하기 (4/4) VI 편집기 s1234
UNDO & REDO (1/3) VI 편집기 UNDO: 방금 전에 수행했던 내용을 취소 REDO: 방금 전에 수행했던 내용을 반복 수행 u방금 전에 수행했던 내용을 취소(Undo) U현재 줄에서 수행했던 모든 내용을 취소 .방금 전에 수행했던 내용을 반복하여 수행(Redo)
UNDO & REDO (2/3) VI 편집기 cw123456[ESC] u
UNDO & REDO (3/3) VI 편집기 o123456[ESC] ..
줄 결합 VI 편집기 현재 줄과 다음 줄을 하나의 줄로 결합시킴 J두 줄을 하나의 줄로 결합시킴 (j와의 차이에 유의) J
데이타 삭제하기 (1/4) VI 편집기 편집 버퍼에 있는 데이타를 삭제하는 명령 (명령 모드에서 동작) x커서가 있는 문자 지우기 X커서의 왼쪽 문자 지우기 D커서부터 줄의 끝까지 지우기 dd현재 줄의 전체를 지우기 :from,to d주어진 범위(from~to)의 줄을 모두 지우기 삭제한 내용은 편집기의 버퍼에 저장되며, 추후 Undo, Redo, Copy를 위하여 사용될 수 있음 (다음에 설명)
데이타 삭제하기 (2/4) VI 편집기 x
데이타 삭제하기 (3/4) VI 편집기 D
데이타 삭제하기 (4/4) VI 편집기 dd
버퍼 내용 집어 넣기 (1/3) VI 편집기 마지막으로 삭제한 내용(버퍼 내용)을 집어 넣는다(Put 한다). Windows에서 Cut & Paste와 개념이 유사함 명령 모드에서 수행되며, 명령어 수행 후에도 명령 모드로 남는다. p (소문자) 버퍼 내용을 커서의 뒤(혹은 아래)에 삽입 P (대문자) 버퍼 내용을 커서의 앞(혹은 위)에 삽입
버퍼 내용 집어 넣기 (2/3) VI 편집기 p D
버퍼 내용 집어 넣기 (3/3) VI 편집기 P dd
줄 복사 및 이동 (1/3) VI 편집기 줄 이동 :n (n번째 줄로 이동) 줄 내용 복사 :from,to y (from줄에서 to줄까지를 버퍼에 복사함) nY: 현재 위치에서 n줄을 버퍼에 복사함
줄 복사 및 이동 (2/3) VI 편집기 :10
:5,8 y P 줄 복사 및 이동 (3/3) VI 편집기
파일 저장하기 (1/2) VI 편집기 현재까지 편집(editing)한 내용(편집 버퍼에 들어있는 내용)을 파일에 저장(write)한다. :w (현재 파일에 저장한다.):w file_name (주어진 파일(file_name)에 저장한다.):wq (저장하고 종료한다.)
파일 저장하기 (2/2) VI 편집기 :w
VI 명령어 요약 VI 편집기 홈페이지에 아래아한글 파일이 있으니 다운로드 받으세요.
Homework#2 VI 편집기