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