Vi 세미나
Contents 시작, 종료, 저장 – 시작 – 저장, 종료 – 환경설정 이동, 검색 –, 검색, 치환, 커서이동 – 편집버퍼를 통한 이동 – 쉘명령 실행 편집 – 삽입, 치환, 삭제, 복사와 이동 기타
시작, 저장 & 종료 vi file vi 를 시작하여 지정한 파일 편집 vi -R file 읽기 전용 (read-only) 모드로 지정한 파일 편집 view file 읽기 전용 (read-only) 모드로 지정한 파일 편집 vi -r 되살릴 수 있는 모든 파일 이름 보여 주기 vi -r file vi 를 시작하여 지정한 파일 되살리기 :f 현재 편집하는 화일정보 (& ^G) :w 원래의 파일로 데이터를 저장 :w filefile 지정한 파일로 데이터를 저장 :w >>file 지정한 파일에 데이터를 추가 :wq 데이터를 저장하고 종료 :x 저장 & 종료 (& ZZ) :q! 데이터를 저장하지 않고 종료
환경설정 :set nu(mber) 줄 번호 디스플레이 ( :set nonu(mber)) :set ai autoindent ( :set noai) :set ts=8 tapstop - tab 칸수를 8 로 설정 :set all 모든 환경변수를 출력 :cc 현재 c 화일을 컴파일 - 저장후에 사용할 것 nG 줄번호 n 으로 건너뛰기 1G 편집 버퍼의 첫 줄로 건너뛰기 G 편집 버퍼의 마지막 줄로 건너뛰기 ma 현재 커서위치를 mark a 로 설정 (a-z)
이동 & 치환 I - 이동 & 치환 I - > 'amark a $ 현재 문서의 끝 줄. 현재 커서가 위치하는 줄 1, 번 줄 % 문서 전체. 뉴라인을 제외한 모든 단일 문자와 대응 * 영 또는 그 이상의 선행 문자와 대응 ^ 줄의 시작과 대응 ( $) \ \<) [ ] 묶여진 문자중의 하나와 대응 ( [^]) \ 이어지는 기호를 문자 그대로 해석
이동 & 치환 II - 패턴치환 & 검색 /rexp 지정된 정규 표현식 (rexp) 에 대해 앞으로 이동 / 이전의 패턴에 대해 앞으로 검색을 반복 ?rexp 지정된 정규 표현식에 대해 뒤로 이동 ? 이전의 패턴에 대해 뒤로 검색을 반복 n / 나 ? 명령에 대해 같은 방향으로 반복 ( N) :s/rexp/to/ 현재 줄의 첫째 정규표현식을 찾아 to 로 치환 :10s/rexp/to/ 10 번째 줄의 치환 :1,2s/rexp/to/ 1-2 줄의 치환 :.,5 s/rexp/to/ 현재줄에서 5 번째줄까지 치환 :% s/rexp/to/g 모든 줄의 모든 'rexp' 을 치환 : s/rexp/to/g 범위에서 'rexp' 를 모두 치환
이동 & 치환 III - 커서이동 h, j, k, l - 커서를 이전 줄의 처음으로 이동 ( + 다음줄 ) 0 커서를 현재 줄의 맨 앞으로 이동 ( $ 맨끝으로 ) w 커서를 다음 단어의 첫 글자로 이동 (=W 문장부호무시 ) e 커서를 다음 단어의 끝 글자로 이동 (=E 문장부호무시 ) b 커서를 이전 단어의 첫 글자로 이동 (=B 문장부호무시 ) ( 다음 문장의 처음으로 이동 ( ) ) { 다음 문단의 처음으로 이동 ( } ) H 커서를 화면 맨 위로 이동, M 커서를 중간으로 이동 L 커서를 맨 아래로 이동
이동 & 치환 IV - 편집버퍼이용 ^F 한 화면 아래로 이동 ^B 한 화면 위로 이동 n^F n 화면 아래로 이동 ^D 반 화면 아래로 이동 ^U 반 화면 위로 이동 ^Y 한줄 위로 스크롤 ^E 한줄 아래로 스크롤 :!command vi 를 중단하고 지정한 셸 명령을 실행 :!! vi 를 중단하고 이전의 셸 명령을 실행 :sh vi 를 중단하고 셸을 실행 :!csh vi 를 중단하고 새로운 C- 셸을 실행
편집 - 삽입 :10r file file 의 내용을 10 번째 줄 다음 에 삽입 :r file file 의 내용을 현재의 줄 다음 에 삽입 :10r !command command 의 결과를 10 번째 줄 다음에 삽입 :r !command command 의 결과를 현재의 줄 다음에 삽입 :r !look pattern 지정한 pattern 으로 시작된 단어 삽입 i 입력 모드로 전환, 커서 위치 앞에서 삽입 I 입력 모드로 전환, 현재 줄의 앞에 삽입 a 입력 모드로 전환, 커서 위치 뒤에서 삽입 A 입력 모드로 전환, 현재 줄의 끝에 삽입 o 입력 모드로 전환, 현재 줄의 아래에 전개 O 입력 모드로 전환, 현재 줄의 위에 전개
편집 - 치환 I J 줄의 결합 r 단지 한 글자만 변경 ( 입력 모드로 바뀌 지 않음 ) R 입력하는 대로 겹쳐 써서 변경 s 삽입에 의해 한 단어의 변경 C 커서의 위치로부터 줄 끝까지 삽입에 의한 변경 cw 한 단어 변경 cc 전체 줄을 삽입에 의한 변경 S 전체 줄을 삽입에 의한 변경 c'a 커서부터 mark a 까지 삽입에 의해 변경 ~ 대, 소문자 바꾸기
편집 - 치환 II u 편집 버퍼를 수정했던 마지막 명령을 취소 U 현재 줄을 저장. 편집 버퍼를 수정했던 마지막 명령 반복 >> 현재 줄을 오른쪽으로 밀어냄 << 현재 줄을 왼쪽으로 밀어냄 10>> 현재줄부터 10 줄을 오른쪽으로 밀어냄 >'a 현재줄부터 mark a 까지를 오른쪽으로 밀어냄 : > 를 오른쪽으로 밀어냄 : 를 오른쪽으로 밀어냄 :set sw=8shiftwidth - 밀어내기 칸수를 8 로 설정
편집 - 삭제 x 커서가 있는 문자 삭제 X 커서의 왼쪽 문자 삭제 D 커서부터 줄의 끝까지 삭제 dw 한 단어 삭제 dd 현재 줄의 전체 삭제 d'a 커서부터 mark a 까지 삭제 dG 커서부터 편집 버퍼의 끝까지 삭제 d1G 커서부터 편집 버퍼의 맨 앞까지 삭제 :10d 10 번째줄의 삭제 :10, 20d 10~20 까지 줄을 삭제 : d 의 범위를 삭제
편집 - 복사 I yy 한줄을 cut buffer 로 복사 nyy n 줄을 cut buffer 로 복사 y'a 현재위치에서 mark a 줄까지 복사 "aCut buffer 를 "named buffer" a 로 지정 (a-z) "ayybuffer a 에 한줄 복사 10"ayybuffer a 에 한줄 복사 "ay'bbuffer a 에 현재위치부터 mark b 까지 저장 : y 범위를 cut buffer 에 복사 : y"a 범위를 buffer a 에 복사 v 블럭을 화면상에서 반전상태로 지정 (elvis) p cut buffer 로 내용을 커서의 뒤 / 아래에 삽입 "apbuffer a 의 내용을 커서의 뒤 / 아래에 삽입 P 커서의 앞 / 위에 삽입
편집 - 복사 II :10co20 10 번째 줄을 복사하여 20 번째 줄 밑에 삽입 :10,20co 줄 범위를 복사하여 30 번째 줄 밑에 삽입 : co'c 를 복사하여 mark c 밑에 삽입 : t20co 와 동일 :10m20 10 번째 줄을 이동하여 20 번째 줄 밑에 삽입 :10,20m 줄 범위를 이동하여 30 번째 줄 밑에 삽입 : m'c 를 mark c 밑으로 이동
기타 n!!command n 번 줄에서 command 의 실행 !'a command 커서부터 mark a 까지 command 실 행 !'a fmt 커서부터 move 까지 줄들을 형식 맞추기