VI Editor 부서 : 연구소 이름 : 노재용
VI Editor 개요 Visual edit 의 약자. 1976년에 BSD의 C shell을 만든 빌조이가 ed의 기능을 확장시킨 ex 편집기를 개발하고 이를 확장시켜 만듬. 최대장점 - 키보드로 모든 것이 가능. Vim ( vi improved ) - vi 클론중의 하나이다. 여러 개의 파일을 동시에 편집 syntax highlighting
.vi 모드 명령모드 입력모드 ex모드 : ex 에디터의 기능을 사용 명령모드 Esc, Enter I,a,o,s : / ?
vi 명령어 - 들어가기 vi filename 주어진 파일이름으로 편집을 시작한다. 파일이 존재하지 않으면 새로 만들게 된다. 파일을 열때 15 번째 줄로 커서를 보낸다. vi +/sample filename 'sample' 단어가 있는 라인으로 커서를 보낸다. vi -R filename view filename 파일을 읽기 전용으로 읽는다. vi -r filename 깨진 파일을 복구한다.
vi 명령어 - 들어가기 만약 hello.c 라는 기존의 파일을 편집하게 되면 vim은 .hello.c.swp 라는 파일을 생성한다. 저장명령을 내릴때 hello.c에 저장함 비정상 종료시에는 .hello.c.swp 파일이 만들어 지는데 수동으로 지워주어야 함.
vi 명령어 - 글입력 a 커서 위치의 다음 칸부터부터 끼워넣기(append) A 커서가 있는 줄의 끝에서부터 끼워넣기 i 커서 위치부터 끼워넣기(insert) I 커서가 있는 줄의 맨 앞에서부터 끼워넣기 o 커서 바로 아래에 줄을 만들고 끼워넣기(open line) s 커서 위치의 한 글자를 지우고 입력
vi 명령어 - 커서이동 h 한칸 왼쪽으로 이동 l 한칸 오른쪽으로 이동 j 한줄 아래로 이동 k 한줄 위로 이동 w 다음 단어의 첫 글자로 이동 W b 이전 단어의 첫 글자로 이동 B e 단어의 마지막 글자로 이동 E ^ 그 줄의 첫 글자로 이동 $ 그 줄의 마지막 글자로 이동 그 줄의 처음으로 이동 <CR> 다음 줄의 첫 글자로 이동 + - 윗줄의 첫 글자로 이동 ( 이전 문장의 첫 글자로 이동 ) 다음 문장의 첫 글자로 이동 { 이전 문단으로 이동 } 다음 문단으로 이동
vi 명령어 - 글수정 r 커서 위치의 한 글자 교체 R 커서 위치부터 <ESC>를 누를때까지 다른 글자로 교체 s, cl 커서 위치의 글자를 한개를 여러 글자로 교체 ch 커서 바로 앞의 글자를 한개를 여러 글자로 교체 cw 커서 위치의 한 단어를 교체 c0 커서 위치부터 줄의 처음까지 교체 C, c$ 커서 위치부터 줄의 끝까지 교체 cc 커서가 있는 줄을 교체 cj 커서가 있는 줄과 그 다음 줄을 교체 ck 커서가 있는 줄과 그 앞줄을 교체
vi 명령어 – 글 삭제 x, dl 커서 위치의 글자 삭제 예) 10x 커서부터 10글자 삭제 X, dh 커서 바로 앞의 글자 삭제 dw 한 단어를 삭제 d0 커서 위치부터 줄의 처음까지 삭제 D, d$ 커서 위치부터 줄의 끝까지 삭제 dd 커서가 있는 줄을 삭제 dj 커서가 있는 줄과 그 다음 줄을 삭제 dk 커서가 있는 줄과 그 앞줄을 삭제
vi 명령어 – 복사, 붙이기 yw 커서 위치부터 단어의 끝까지 복사 예 ) 10yw 커서부터 10단어 복사 y0 커서 위치부터 줄의 처음까지 복사 y$ 커서 위치부터 줄의 끝까지 복사 yy 커서가 있는 줄을 복사 예 ) 10yy 커서부터 10줄 복사 yj 커서가 있는 줄과 그 다음 줄을 복사 yk 커서가 있는 줄과 그 앞줄을 복사 p 커서의 다음 위치에 붙여넣기 P 커서가 있는 위치에 붙여넣기
vi 명령어 – 기타 u 작업 취소(undo) U 그 줄에 행해진 작업 모두 취소 Ctrl+r 작업 재실행(redo) . 조금 전에 했던 명령을 반복 J 현재 줄과 아래 줄을 연결 ~ 대문자를 소문자로, 소문자를 대문자로 바꿈 % 괄호의 반대쪽 짝으로 이동 Ctrl+l 현재 화면을 지우고 다시 그림 Ctrl+g 파일에 관한 정보를 표시
vi 명령어 – 화면이동 H 커서를 화면의 맨 위로 z<CR> 현재 줄을 화면의 맨 위로 M 커서를 화면의 중앙으로 현재 줄을 화면의 중앙으로 W w 다음 단어의 첫 글자 B b 이전 단어의 첫 글자 L 커서를 화면의 맨 아래로 z- 현재 줄을 화면의 맨 아래로 [n]H 커서를 위에서 [n]번째 줄로 [n]L 커서를 아래에서 [n]번째 줄로 Ctrl+u 반 화면 위로 스크롤 Ctrl+b 한 화면 위로 스크롤 Ctrl+d 반 화면 아래로 스크롤 Ctrl+f 한 화면 아래로 스크롤 gg, 1G 문서의 맨 처음 줄로 G 문서의 맨 마지막 줄로 [n]G [n]번째 줄로 이동 :[n] N행으로 이동
vi 명령어 – 마킹 ma 현재 위치를 `a'로 마크 `a 마크된 `a'로 이동 'a 마크된 `a'가 있는 줄의 처음으로 이동 `a 마크된 `a'로 이동 'a 마크된 `a'가 있는 줄의 처음으로 이동 `` 직전의 커서 위치로 이동 '' 직전에 커서가 위치하던 줄의 처음으로
vi 명령어 – 패턴 검색 /[pattern]<CR> 현재 위치에서부터 아래 방향으로 패턴 검색 현재 위치에서부터 위쪽 방향으로 패턴 검색 n 검색하던 방향으로 계속 패턴 검색 N 검색하던 반대 방향으로 계속 패턴 검색
vi 명령어 – 패턴 교체 :s/old/new<CR> 현재 줄의 처음 old를 new로 교체 :s/old/new/g<CR> 현재 줄의 모든 old를 new로 교체 :1,20s/old/new/g<CR> 1부터 20번째 줄까지 모든 old를 new로 교체 :-2,+4s/old/new/g<CR> 커서 2줄 위부터 4줄 아래까지 old를 new로 교체 :%s/old/new/g<CR> 문서 전체에서 old를 new로 교체 :%s/old/new/gc<CR> 문서 전체에서 old를 new로 확인하며 교체 :g/pattern/s/old/new/g<CR> pattern이 있는 모든 줄의 old를 new로 교체 :g/pattern/s//new/g<CR> :%s/old/new/g<CR>과 동일
vi 명령어 – ex모드 :q<CR> vi를 종료함 :w<CR> 편집중인 문서를 저장 :w [file]<CR> 편집중인 문서를 [file]로 저장 :w >>[file]<CR> 편집중인 문서를 [file]에 덧붙여서 저장 :e [file]<CR> [file]을 불러옴 :e#<CR> 이전에 편집하던 파일을 불러옴 :e%<CR> 현재 파일을 다시 불러옴, 즉 저장하지 않은 작업 취소 :r [file]<CR> [file]을 커서위치에 끼워넣기 :set [option]<CR> [option]을 켜기 :set [nooption]<CR> [option]을 끄기 :![command]<CR> [command] 실행 :r ![command]<CR> [command] 실행 결과를 끼워넣기
vimrc 환경설정 화일 계정의 루트 폴더에 만든다. set autoindent " 자동으로 들여쓰기를 한다. set cindent " C 프로그래밍을 할때 자동으로 들여쓰기를 한다. set smartindent " 좀더 똑똑한 들여쓰기를 위한 옵션이다. set textwidth=79 " 만약 79번째 글자를 넘어가면 \ set wrap " 자동으로 <CR>를 삽입하여 다음 줄로 넘어간다. set nowrapscan " 검색할 때 문서의 끝에서 다시 처음으로 돌아가지 않는다. set nobackup " 백업 파일을 만들지 않는다. set visualbell " 키를 잘못눌렀을 때 삑 소리를 내는 대신 번쩍이게 한다. set ruler " 화면 우측 하단에 현재 커서의 위치(줄,칸)를 보여준다. set tabstop=4 " Tab을 눌렀을 때 8칸 대신 4칸 이동하도록 한다. set shiftwidth=4 " 자동 들여쓰기를 할때 4칸 들여쓰도록 한다.
여러파일 편집 vi file1.c file2.c file3.c 한 화면이 열려 있는 것처럼 보이나, 열려 있는 각 파일은 vim의 파일 버퍼에 들어 있게 된다. :b2 -> 파일 버퍼 2번으로 전환 열려 있는 파일을 닫는 명령은 :bw .vimrc 에 단축키를 지정 한다. 예- ,누르고 1 :map ,1 :b!1<CR> :map ,2 :b!2<CR> :map ,3 :b!3<CR> Map 명령은 단축키를 매핑할 때 사용.
다중 창 사용 Ctrl +w, n 창 가로 분할 Ctrl +w, w 창 간 전환 Ctrl +w, s 현재 파일로 수평 분할 Ctrl +w, v 현재 파일로 수직 분할
셀 명령어 사용 Ex 모드에서 :![명령어] - 명령어 사용 후 다시 돌아온다. :![명령어] - 명령어 사용 후 다시 돌아온다. :!bash - 쉘로 가게 된다. 돌아오고 싶을 땐 exit :r![명령어] - vi 화면에 명령어 결과를 출력 :r[파일명] - 파일의 내용 끼워넣기
Vim 플러그인 ctags – 소스 태그를 찾음 몇 초안에 태그가 있는 파일을 열어 커서를 이동 cscope – c 소스 분석 기타 플러그인 – 내장 스크립트로 새로운 기능 추가 vim + screen + ctags + cscope screen 으로 가상 터미널 생성 명령 http://www.vim.org/scripts 에서 플러그인을 다운.
개발자를 위한 팁 파일 탐색 기능 -> :20vs ./ 빠른 괄호 이동 -> { , } 에서 %를 치면 쌍을 이루는 곳으로 간다 빠른 탐색 -> 찾고자 하는 문자열에서 * 나 # 폴딩 기능 -> 함수를 접어서 보기 편하게 해줌 {에서 v]} zf 아니면 블록설정후 zf 여러행에 탭넣기 -> [N]>> 또는 [N]<< 예) 7<< 함수의 원형으로 이동 -> 함수 사용된 부분에서 [I 탭사이즈 조정 -> :set ts=8 흐트러진 소스정렬 - > 블록지정후 =