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