Download presentation
Presentation is loading. Please wait.
1
vi editor 2 번째주 Dept. of Computer Science & Engineering
Knowledge & Data Engineering Lab
2
vi 시작하기 vi를 시작하려면, vi 명령어 입력 file은 사용자가 편집하고자 하는 파일의 이름
3
명령모드와 입력모드 vi로 작업을 하면 모든 데이터는 편집버퍼(Editing Buffer)에 유지됨
입력모드(Input mode) 입력하는 모든 것이 편집버퍼에 입력됨 명령모드(Command mode) 입력하는 모든 것이 명령어로 해석됨 입력모드에서 명령모드로 전환하는 방법 : ESC키
4
읽기 전용으로 vi사용하기: -R 옵션, view
중요한 파일을 수정하지는 않으면서 내용만을 보고 싶을 때 사용하는 두 가지 방법 -R(Read-only, 읽기전용) 옵션 view 명령어
5
vi 마치기 종료 명령을 입력할 수 있는 명령모드에 있어야 함 ZZ : 작업 내용을 저장하고 종료
:q! : 작업 내용을 저장하지 않고 종료 종료시 데이터를 저장했는지 점검
6
vi 명령어를 배우는 전략 편집버퍼에 데이터를 넣을 때 반드시 다음 단계를 따라야 함
데이터를 쓰고 싶은 곳으로 커서를 옮겨야 한다 입력모드로 바꾸기 위한 명령을 사용한다 데이터를 입력한다 명령모드로 바꾸기 위해 ESC를 누른다 편집버퍼에 데이터가 있으면 어떤 일을 하기 위하여 준비되어야 할 다양한 명령들 커서를 움직이는 명령 입력모드로 전환하는 명령 변화를 주기 위한 명령
7
커서 이동하기 h 커서를 한 칸 왼쪽으로 이동 j 커서를 한 칸 아래쪽으로 이동 k 커서를 한 칸 위쪽으로 이동
l 커서를 한 칸 오른쪽으로 이동 LEFT 커서를 왼쪽으로 한 칸 이동 DOWN 커서를 아래쪽으로 한 칸 이동 UP 커서를 위쪽으로 한 칸 이동 RIGHT 커서를 오른쪽으로 한 칸 이동 BACKSPACE 커서를 왼쪽으로 한 칸 이동 SPACE 커서를 오른쪽으로 한 칸 이동
8
커서 이동하기 (cont’d) - 커서를 이전 줄의 처음으로 이동 + 커서를 다음 줄의 처음으로 이동
- 커서를 이전 줄의 처음으로 이동 + 커서를 다음 줄의 처음으로 이동 RETURN 커서를 다음 줄의 처음으로 이동 0 커서를 현재 줄의 맨 앞으로 이동 $ 커서를 현재 줄의 끝으로 이동 ^ 커서를 현재 줄의 첫 글자로 이동(탭이나 공백이 아닌) w 커서를 다음단어의 첫 글자로 이동 e 커서를 다음단어의 첫 글자로 이동 b 커서를 이전단어의 첫 글자로 이동
9
커서 이동하기 (cont’d) W w와 동일, 문장 부호 무시 E e와 동일, 문장 부호 무시 B b와 동일, 문장 부호 무시
) 다음문장의 처음으로 이동 ( 이전문장의 처음으로 이동 } 다음문단의 처음으로 이동 { 이전문단의 처음으로 이동 H 커서를 화면 맨 위로 이동 M 커서를 중간으로 이동 L 커서를 화면 맨 아래로 이동
10
편집버퍼에서 이동하기 vi는 화면에 알맞을 만큼만 편집버퍼의 내용을 보여줌
화면에 나타나지 않은 편집버퍼의 다른 부분을 보기 위해서 사용할 수 있는 명령 : ^F 한 화면 아래로 이동 ^B 한 화면 위로 이동 ^D 반 화면 아래로 이동 ^U 반 화면 위로 이동
11
각행에 번호 부여 vi는 편집 버퍼에 있는 각 줄에 번호를 부여하여 관리함 :set number 명령 사용
nG 줄 번호 n으로 이동하기 1G 편집버퍼의 첫 줄로 이동하기 G 편집버퍼의 마지막 줄로 이동하기
12
데이터를 편접 버퍼에 입력 새로운 데이터 입력에 사용되는 명령 : I 입력모드로 전환, 커서 위치 앞에서 삽입
a 입력모드로 전환, 커서 위치 뒤에서 삽입 I 입력모드로 전환, 현재 줄의 앞에서 삽입 A 입력모드로 전환, 현재 줄의 뒤에서 삽입 o 입력모드로 전환, 현재 줄의 아래에 전개 O 입력모드로 전환, 현재 줄의 위에 전개
13
편집버퍼에서 내용 수정하기 vi의 고치기 명령 : r 단지 한 글자만 변경(입력모드로 바뀌지 않음)
s 삽입에 의한 한 단어의 변경 C 커서의 위치로부터 줄 끝까지 삽입에 의한 변경 cc 전체 줄을 삽입에 의해 변경 S 전체 줄을 삽입에 의해 변경 cmove 커서부터 move까지 삽입에 의해 변경
14
삭제 및 복사 x 커서위치의 1문자 삭제 X 커서위치의 왼쪽 1문자 삭제 dd 커서가 있는 행을 삭제
ndd 커서가 있는 곳부터 n 행 삭제 d$ 커서의 위치에서 행 끝까지 삭제 d^ 맨 앞에서 커서위치의 왼쪽까지 삭제 yy 커서가 있는 행을 복사 nyy 커서가 있는 행부터 n 행을 복사 p 명령어로 삭제/복사된 텍스트를 현재 문자(행)의 뒤에 붙여넣는다 Y 현재 문자(행)의 앞에 붙여 넣는다
15
vi 환경설정 :set number 행 번호 보이게 :set nonumber 행 번호 안보이게
:set autoindent 들여쓰기 설정 :set noautoindent 들여쓰기 제거 :set list 문단,조판부호 보기 :set nolist 문단,조판부호 안보이게 :set window=30 한 화면당 행의 갯 수 30개로 지정 :set ignorecase 검색 시 대소문자 구별 제거 :set noignorecase 검색 시 대소문자 구별 :set all 현재 설정된 vi 모든 설정 값 보기
16
C 예제프로그램 작성 및 실행 $vi test.c #include <stdio.h>
int main(int argc, char *argv[]) { if(argc != 2) printf("error\n"); exit(1); } printf("%s\n", argv[1]); return 0; $ gcc –o test test.c $ ./test
17
여러 파일 컴파일 하기 $ gcc –c foo.c $ gcc –c bar.c $ gcc –o baz foo.o bar.o
위의 세명령을 하나로 합치면 : $ gcc –o baz foo.c bar.c
18
Makefile 만들기 Makefile을 만들면 적은 단계를 거쳐 파일을 생성가능하게 한다
$ vi Makefile run : foo.o bar.o gcc –o run foo.o bar.o foo.o : foo.c gcc –o foo.c bar.o : bar.c gcc –o bar.c
19
Makefile 만들기 : 확장된 Makefile
$ vi Makefile install : all mv edimh /usr/local mv readimh /usr/local all : edimh readmh readimh : read. o edit.o gcc –o readimh main.o read.o edimh : main.o edit.o gcc –o edimh main.o edit.o main.o : main.c gcc –c main.c edit.o : edit.c gcc –c edit.c read.o : read.c gcc –c read.c
20
Makefile 만들기 : 매크로 사용 OBJECTS = main.o read.o write.o
test : $(OBJECTS) gcc-o test main.oread.owrite.o main.o: io.h main.c gcc-c main.c read.o: io.h read.c gcc-c read.c write.o: io.h write.c gcc-c write.c
21
Makefile 만들기 : 레이블 사용 OBJECTS = main.o read.o write.o
test : $(OBJECTS) gcc -o test main.o read.o write.o main.o: io.h main.c gcc -c main.c read.o: io.hread.c gcc-c read.c write.o: io.h write.c gcc -c write.c clean: rm –f $(OBJECTS) % make clean rm –f main.o read.o write.o
22
실습 Makefile을 작성하여 컴파일 하시요 write.c를 갱신한 후 컴파일 하시요 io.h를 갱신한후 컴파일 하시오
#define a “io.h” main.c #include <stdio.h> #include "io.h" int main(void) { printf("---main.c+%s---₩n", a); readfile(); writefile(); return 0; }
23
read.c #include <stdio.h> #include "io.h“ void readfile(void) { printf("---read.c+%s---₩n", a); } write.c #include <stdio.h> #include "io.h“ void writefile(void) { printf("---write.c+%s---₩n", a); }
Similar presentations