340 likes | 452 Views
VIM Seminar. 이윤석 ( gangok@sparcs ). VI. Text Editor 1976 년 Bill Joy 라는 사람이 개발 line editer 와 구별되는 VIsual editor 라는 뜻에서 유래 현재는 복제품 ( 혹은 개량품 ) 의 형태로 많이 사용되고 있음. VIM. VI Improved VI 복제품 중 가장 많이 사용됨 1991 년 Bram Moolenaar 라는 사람이 개발 리눅스에서 가장 많이 사용되며 , 대부분의 OS 에서 사용가능함
E N D
VIM Seminar 이윤석(gangok@sparcs)
VI • Text Editor • 1976년 Bill Joy라는 사람이 개발 • line editer와 구별되는 VIsual editor라는 뜻에서 유래 • 현재는 복제품(혹은 개량품)의 형태로 많이 사용되고 있음
VIM • VI Improved • VI 복제품 중 가장 많이 사용됨 • 1991년 Bram Moolenaar라는 사람이 개발 • 리눅스에서 가장 많이 사용되며, 대부분의 OS에서 사용가능함 • (심지어 아이폰, 안드로이드에서도!!)
VIM 실행시키기 • $vim • $vim [파일 이름] • [파일 이름]에 해당하는 파일이 없을 경우 임시 생성 • vim 대신 vi를 입력해도 상관없음
뭐든지 입력해보자! • i를 누른뒤 텍스트를 입력
입력모드와 명령모드 • 입력모드 : 텍스트를 입력 • 명령모드 : 명령을 내림 • vim을 처음 켜면 명령모드로 시작됨 • 명령모드 -> 입력모드 : 정해진 명령어를 입력 • 입력모드 -> 명령모드 : esc키를 누름 • 뭔가 잘못된 것 같으면 무조건 esc키를 누르자
1. 커서 이동(방향키) • h, j, k, l • h : 왼쪽 • j : 아래쪽 • k : 위쪽 • l : 오른쪽 • 헷갈리죠? 쓰다 보면 외워진대요
2. 입력 모드로 들어가는 명령 • 소문자 i: 현재커서위치에서부터입력시작 • 소문자 a: 현재커서뒤쪽에서부터입력시작 • 대문자 I: 현재 줄 맨 앞쪽에서부터입력시작 • 대문자 A: 현재 줄 맨 뒤쪽에서부터입력시작 • 소문자 o: 현재 줄 다음부터입력시작 • 대문자 O: 현재 줄 이전부터입력시작
3. 불러오기, 저장, 종료 • :e [파일 이름] //불러오기 • :w //저장 • :w [파일 이름] • :q //종료 • :wq //저장하며 종료 • :wq [파일 이름] • 위 명령 뒤에!를 붙이면 강제로 수행하라는 의미가 됨 • Ex) :w! :q! :wq!
너무 복잡하죠? • 모든 명령을 처음부터 다 외울 필요 없음 • 꼭 필요하다 싶은 것만 외우고 있다가, 뭔가 있었으면 좋겠다 싶은 기능이 있거든 찾아볼 것!
4. 커서 이동(고급) • w : 다음 단어 • b : 이전 단어 • $ : 줄 마지막으로 • ^ : 줄 처음으로 • gg : 파일 처음으로 • G : 파일 마지막으로
5. 블록 지정 • v : 블록지정 • V : 줄단위 블록지정 • Ctrl + v : 사각형 블록지정 • esc로 취소
6. 복사, 붙여넣기 등(블록 지정 상태) • y : 복사 • d,c : 잘라내기(삭제) • p : 붙여넣기
7. 복사, 붙여넣기 등(블록 미지정) • yy : 커서가 있는 줄 복사 • Y + [숫자]+ y : 커서가 있는 줄 부터 [숫자] 줄 만큼 복사 • Ex) y3y • dd : 커서가 있는 줄 삭제(잘라내기) • d + [숫자]+ d : 커서가 있는 줄 부터 [숫자] 줄 만큼 삭제 • p : 다음에 붙여넣기 • P : 이전에 붙여넣기
8. 실행취소 • u : 실행취소(undo) • Ctrl + r : 실행취소 취소(redo)
9. 찾기 • / + [내용] : 뒤로 가면서 [내용] 찾기 • ? + [내용] : 앞으로 가면서 [내용] 찾기 • :set hlsearch : 검색어에 하이라이트 • :set nohlsearch : 검색에어 하이라이트 주지 않기 • n : 다음 검색어(정방향) • N : 이전 검색어(역방향)
9.5 찾아 바꾸기 • :%s/[찾을 단어]/[바꿀 단어]/[옵션] • 옵션으로 g는 모두 바꾸기, c는 바꿀 때 마다 물어보기 • Ex) :%s/void/blank/g • % 대신 줄 번호를 입력하여 해당 영역에 대해서만 찾아 바꾸기도 가능 • Ex) :1,30s/void/blank/g • 찾기와 찾아 바꾸기는 정규식으로 동작함
9.5-2 정규식 • String의 검색, 치환, 추출을 위한 패턴 • 여러 가지 환경에서 사용되나 사용법은 대동소이함 • 예 - 전화번호 형식, 이메일 형식 등
9.5-2 정규식(2) • 우리 학번 : \d\{8} => 여덟자리 숫자 • 리눅스 아이디 : [A-Za-z][0-9A-Za-z]* • 첫 자리는 문자, 그 다음부터 숫자 ㅇㅋ • 이메일주소 : \w\+@\w\+\.\w\+ • + => 글자 적어도 1개 이상 ~ 무한대 • 즉, 글자들@글자들.글자들 • 아라에 사용되는 카이스트 이메일 : • ^\s*\w\+@kaist\.ac\.kr\s*$
9.5-2 정규식(3) • http://download.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html • or google ‘정규식’ 검색
기타 알아두면 좋은 내용1. 창 나누기 • Ctrl+w, n: 가로로 화면나누기 • :vs • Ctrl+w, v: 세로로 화면 나누기 • :sp • Ctrl+w, h/j/k/l: 나뉘어진 창 사이를이동 • :set mouse=an : 마우스 사용 가능 • :q : 현재 창 닫기
기타 알아두면 좋은 내용 2. Folding(2) • zf: 지정된 영역 folding 만들기 • zo or zO : folding 열기 • zc or zC : folding 닫기 • zr or zR : folding 모두 열기 • zm or zM : folding 모두 닫기 • zd : folding 삭제
기타 알아두면 좋은 내용3. Macro $ vi macro_sample i1.<ESC>qayyp<Ctl+a>q98@a q<reg>(some macro)q //macro 저장 @<reg> @@ //macro 실행 :register //register 보기 “5p //5번 register paste
기타 알아두면 좋은 내용4. .vimrc 환경 설정 파일
기타 알아두면 좋은 내용5. vimdiff • $ vimdiff: 두개의파일을 비교하는 모드 • Ex) $ vimdiff a.txt b.txt • do : 다른 윈도우의 변경 사항을 현재 윈도우로 가져오기 • dp: 현재 윈도우의 변경 사항을 다른 윈도우로 넣기 • ]c : 다음 변경 사항으로 이동 • [c : 이전 변경 사항으로 이동
차근차근 배워보고 싶으면.. • $ vimtutor • vim 튜토리얼
과제 • orig_vim파일을 수정하여 final_vim과 똑같이 만들기 • 일일이 타이핑해도 되지만 가능하면 오늘 배운 기능들을 사용해 보기(do, dp제외) • cp /home/gangok/vim_seminar/*_vim ~ • vimdifforig_vimfinal_vim