vim seminar
DESCRIPTION
VIM SEMINAR. SPARCS 11 10 podo. 꼭 알아야 할 것. 알아둘 만한 것. VIM??. 빔이 뭔가요. VIM = VI iMproved vi 의 확장판. VI. UNIX 기반의 문서 편집기 (Text Editor) 1976 년 Bill Joy Visual Editor vim, nvi , elvis. VIM. vi 의 확장판 중 가장 널리 쓰임 1991 년 Bram Moolenaar 대부분 Linux 의 기본 에디터 Emacs , Nano, ed - PowerPoint PPT PresentationTRANSCRIPT
VIM SEMINAR
SPARCS 11
10 podo
꼭 알아야 할 것
알아둘 만한 것
VIM??
빔이 뭔가요VIM = VI iMproved
vi 의 확장판
VIUNIX 기반의 문서 편집기 (Text Edi-tor)
1976 년 Bill Joy
Visual Editor
vim, nvi, elvis
VIM vi 의 확장판 중 가장 널리 쓰임
1991 년 Bram Moolenaar
대부분 Linux 의 기본 에디터
- Emacs, Nano, ed
여러 OS 에서 사용 가능
- iOS, Android 까지도
준비
이런 거 놔두고왜 까만 화면에서 ??
저 .. 전산게 X?
텍스트 편집만 가능한Text Editor
IDE(Integrated Development Environment)
장점 | VIM
응용 가능한 다양한 기능- 편집환경 변화 , 정규식 표현 , 다국어 지원 , 문법
검사
GUI 지원 (gVim)
모든 작업을 키보드를 이용
간단한 단축키와 명령어 만으로도 실행
http://en.wikipedia.org/wiki/File:KB_Terminal_ADM3A.svg
Lear-Siegler ADM3A 터미널용 키보드
익숙해지도록노력합시다 !!
설치 | Linux
Wheel
설치 | Windows
www.vim.org/download.php
http://en.wikipedia.org/wiki/File:Vim.png
실행
PuTTY 를켜 봅시다 !
$ vim [FileName]
입력 상태
명령 상태 / ex 상태
입력 상태
개요 | 입력상태
내용 입력이 가능한 상태
명령 상태에서 a, o, i 등을 입력 (삽입 )
명령 상태에서 c, R 등을 입력 ( 수정 )
ESC 키를 누르면 명령상태로 전환
입력 | 입력상태
i(nsert) : 현재 위치부터 입력
a(append) : 현재 위치 다음부터 입력
I : 현재 줄의 맨 앞에서부터 입력
A : 현재 줄의 맨 끝에서부터 입력
o(pen line) : 현재 줄 아래에 줄을 만들고 입력
O : 현재 줄의 위에 줄을 만들고 입력
i lo <ESC> I he <ESC>
a l <ESC> O 안녕 <ESC>
명령 상태
개요 | 명령상태
편집에 필요한 각종 명령이 가능한 상태
처음 vim 을 실행했을 때나 ESC 키를 입력
이동 , 수정 , 삭제 , 검색 등의 작업
이동 | 명령상태
h : 왼쪽
j : 아래
k : 위
l : 오른쪽
이동 | 명령상태
w : 다음 단어 ( 의미 기준 ) 의 첫 글자로 이동 W : 다음 단어 ( 공백 기준 ) 의 첫 글자로 이동 b : 이전 단어 ( 의미 기준 ) 의 첫 글자로 이동 B : 이전 단어 ( 공백 기준 ) 의 첫 글자로 이동
e : 다음 단어 ( 의미 기준 ) 의 끝 글자로 이동 E : 다음 단어 ( 공백 기준 ) 의 끝 글자로 이동
“ 의미” 기준이라는 것은 “ ” . / % <> 등등을 기준으로 구분
이동 | 명령상태
0 : 현재 줄의 처음으로 이동 ^ : 현재 줄의 첫 글자로 이동 $ : 현재 줄의 마지막 글자로 이동
+, <Enter> : 다음 줄의 첫 글자로 이동 - : 이전 줄의 첫 글자로 이동
(, ) : 이전 / 다음 문단 ( 빈 줄 포함 ) 의 첫 글자로 이동 {, } : 이전 /다음 문단의 첫 글자로 이동 [[, ]] : 이전 / 다음 함수 ({, })의 처음으로
이동
W W + j l - $
이동 | 명령상태 H : 현재 화면의 맨 위로 커서 이동 M : 현재 화면의 가운데로 커서 이동 L : 현재 화면의 맨 아래로 커서 이동
gg : 파일 맨 처음으로 이동 [ 줄 번호 ] + gg : 해당 줄로 이동 G : 파일 맨 마지막으로 이동
:[ 줄 번호 ] <Enter> 를 이용해도 해당 줄로 이동 가능
k
h j l
삭제 | 명령상태
x, dl : 현재 위치의 글자 삭제 X, dh : 현재 위치 바로 앞의 글자 삭제 d + < 이동키 > : 현재 위치부터 < 이동키 >
까지 움직인 부분을 삭제- dw( 단어 ), d0( 처음까지 ), dj( 그 줄과 다음 줄 ), dk
D, d$ :
dd : 커서가 있는 줄을 삭제
현재 위치부터 줄의 끝까지 삭제
dw j e D x G dd
편집 | 명령상태 → Visual Block 상태
편집 | 명령상태 → Visual Block 상태
이동 명령어를 이용하여 블록을 지정
v : 글자 단위로 블록 지정 , 이동명령어 이용
V : 줄 단위로 블록 지정 Ctrl + v : 현재 위치부터 사각형으로 블록
지정
편집 | Visual Block 상태
블록 지정한 후 ,
x, d, c : 잘라내기 ( 삭제 후 클립보드에 저장 )
y : 복사
편집 | 명령상태
y + < 이동키 > : 현재 위치부터 < 이동키 >까지 움직인 부분을 복사
yy : 현재 줄을 복사
p : 현재 위치의 다음에 붙여넣기 P : 현재 위치에 붙여넣기
수정 | 명령상태 → 입력상태
~ : 대소문자 변환 r : 현재 글자 수정 ( 한 글자 ) R : “ 바꾸기” 상태로 전환 ( 현재 글자 이후로 ESC 키를 누르기 전까지 수정 )
s, cl : 현재 글자를 여러 글자로 수정 c + < 이동키 > : 현재 위치부터 < 이동키 >
까지 움직인 부분을 교체 C, c$ : cc : 현재 위치의 줄을 교체즉 , c 명령어는 삭제와 입력을 동시에 해 주는 명령어
현재 위치부터 줄의 끝까지 교체
검색 | 명령상태
f + [ 글자 ] : 다음 [ 글자 ] 가 나오는 위치로 커서 이동
t + [ 글자 ] : 다음 [ 글자 ] 가 나오는 위치 바로 직전으로 커서 이동
dfX, ctX 등으로 활용 가능
검색 | 명령상태
/[RE] : 파일에서 [RE] 검색 (뒤쪽으로 )
?[RE] : 파일에서 [RE] 검색 (앞쪽으로 )
n : 다음 찾기N : 이전 찾기
Regular Expression( 정규 표현식 )
스크롤 | 명령상태
Ctrl + F : 한 화면 앞으로 ( 아래로 ) 스크롤
Ctrl + B : 한 화면 뒤로 ( 위로 ) 스크롤 Ctrl + D : 반 화면 앞으로 스크롤 Ctrl + U : 반 화면 뒤로 스크롤 Ctrl + E : 한 줄 앞으로 스크롤 Ctrl + Y : 한 줄 뒤로 스크롤
z + <Enter>, ., - : 현재 줄을 화면의 맨 위 , 가운데 , 맨 아래로 스크롤
파일 | 명령상태
ZZ : 파일을 저장 후 종료
EX 상태
개요 | ex 상태
명령 상태에서 : 키 입력
파일 저장 , 읽기 , 각종 치환 , vim 설정
파일 | ex 상태
:e [FileName] : 불러오기 :e!% : 현재 파일 다시 불러오기 :q : 편집 종료 :q! : 저장하지 않고 강제 종료 :w [FileName] : 저장 ( 파일명 생략 가
능 ) :w! : 강제 저장 :wq : :f : 파일 이름 , 라인 수
출력 :r [FileName] : 파일 끼워 넣기
저장 후 종료
치환 | ex 상태
[Old] 를 [New] 로 치환
:s/[Old]/[New] : 현재 줄에서 치환 :s/[Old]/[New]/g : 현재 줄에서 모두
치환 :%s/[Old]/[New]/g : 문서전체에서 치환 :%s/[Old]/[New]/gc : 확인하며 전체에서
치환 :1,10s/[Old]/[New] : 1~10 번째 줄에서
치환 :-2,+4s/[Old]/[New] : 커서의 2 줄
위부터 4 줄 아래까지 치환
VIM 설정 | ex 상태
:set nu : (number) 줄 번호 표시 :set nonu : 줄 번호 지우기
:set ai : (autoindent) 자동 들여쓰기
:set noai : 자동 들여쓰기 해제
:set mouse=a : 마우스로 커서 선택 가능 :set mouse=c : 마우스로 커서 선택 불가능
:set paste : ( 마우스 ) 붙여넣기 상태 :set nopaste : 붙여넣기 상태 해제
Thanks to : SPARCS 10 noname
VIM 설정 | ex 상태
:set ts=[ 수 ] : (tabstop) 한 tab 의 크기
설정 :set sts=[ 수 ] : (softtabstop) tab 이동
크기 :set sw=[ 수 ] : (shiftwidth) shift 크기
조절 :set (no)et : (expandtab) tab 을 space 로 변환
/ 해제 :set retab : tab 설정을 새로 적용
:set list : Enter, 탭 등을 문자로 표현<<, >> : 문자를 tab 만큼 shift 한다
VIM 설정 | ex 상태
:highlight : 하이라이트 설정 :nohl : (nohighlight) 검색 후 하이라이트를
지움
:syntax on/off : 문법 설정 /해제
:set syntax=[Language] : 문법 언어 설정
NETRW | ex 상태
네트워크를 통해서 파일을 읽고 쓰기 http://www.vim.org/scripts/script.php?
script_id=1075
디렉토리 내용 보기도 가능
:e [http://…] : 편집:Nread : 읽기:Nwrite : 쓰기:e ./ : 현재 디렉토리
SHELL 명령 사용:![Command] : [Command] 를 실행
:r ![Command] : 결과 내용을 붙여넣음
Ctrl + Z 를 눌러 vim 정지
$ fg
유용한 기능들
인터페이스 설정 | .vimrc
/home/[ID]/.vimrc
vim 설정을 자동으로 구성
ex 모드의 기능을 사용
.vim 디렉토리도 함께 복사
/home/podo/.vimrc
실행 취소 및 다시 실행u : 실행 취소 (Undo)
Ctrl + R : 다시 실행 (Redo)
반복 동작명령어 앞에 수를 붙여서 반복 동작의
회수를 지정
[ 수 ] + d, d + [ 수 ] : 반복 삭제
[ 수 ] + p : 반복 붙여넣기
창 나누기 :sp : (split) 수평으로 분할 :vs, :vsp : (vsplit) 수직으로 분할 :[크기 ]sp [FileName]
Ctrl + ww : 창 간 이동 Ctrl + wh/j/k/l : 각 방향의 창으로 이동 Ctrl + w= : 창 크기 같게 하기 :resize [크기 ][명령 ] : 창 크기 재조정
여러 개의 파일 편집 여러 개의 파일을 동시에 열어서 편집 한 화면에 나오진 않지만 vim 에서 전환 가능 파일간 복사 , 잘라내기 , 붙이기 등이 가능
$ vim [FileName1] [FileName2] …
:n : 다음 파일 편집 :N : 이전 파일 편집
:q 로 종료하는 경우 다 같이 꺼짐에 주의
탭 여러 파일을 관리할 때 탭으로 표시
:tabnew [FileName] : 새 탭 생성 ( 파일이름
생략가능 )
:tabn : (tabnext) 다음 탭으로 이동 :tabp : (tabprevious) 이전 탭으로 이동 :tabfir : (tabfirst) 처음 탭으로 이동 :tabl : (tablast) 마지막 탭으로 이동
$ vim –p [File1] [File2] … : tab 으로 파일들 열기
접기 블록으로 선택한 영역을 접어 놓음
zf : 영역 접기 zo, zO : 접은 영역 열기 zc, zC : 접은 영역 접기 zr, zR : 접은 영역 모두 펼치기 zm, zM : 접은 영역 모두 접기 zd : 접기 영역 삭제
V [ 영역 선택 ] zf zo
자동 완성파일 안에서 나왔던 단어를 바탕으로
목록을 생성하여 선택
Ctrl + P
Thanks to SPARCS 08 anna418
Ctrl + P
매크로 q : 매크로 입력 및 종료
q + [Reg] + [매크로 행동 ] + q : 매크로 저장
@[Reg] : [Reg] 에 저장한 매크로 실행
:reg, :register 로 레지스터 내용을 볼 수 있다 .
i 1. <ESC> q a yy p Ctrl+a q 98@a
마크m[ 알파벳 ] : 현재 위치를 [ 알파벳 ] 으로
마크
- 52 개의 마크 가능 ( 대소문자 구분 )
`[ 알파벳 ] : 마크된 위치로 이동
‘[ 알파벳 ] : 마크된 줄의 처음으로 이동
VIMDIFF 두 파일의 다른 점을 vim 으로 보여줌
$ vimdiff [FileName1] [FileName2] …
:do : 다른 창의 내용으로 현재 내용 바꾸기 :dp : 현재 창의 내용을 다른 창으로 넣기 ]c : 다음 다른 부분으로 이동 [c : 이전 다른 부분으로 이동
도와주세요 ..?
$ vimtutor
:help [Command]
http://picasaweb.google.com/lh/photo/PQ6_Ud_mJRpGBM38-7-Pig?feat=embedwebsite
이동
자주 쓰면서익히도록 !!
입력 삭제
References http://ko.wikipedia.org/wiki/Vi
http://plusblog.tistory.com/930
http://en.wikipedia.org/wiki/Vim_(text_editor)
http://www.joinc.co.kr/modules/moniwiki/wik-i.php/Site/Vim/Documents/UsedVim#AEN26
http://wiki.kldp.org/KoreanDoc/html/Vim_Guide-KLDP/Vim_Guide-KLDP.html
SPARCS “VIM” Seminar(neo, mazorro)
끝
질문 ?
Assignment 직접 써봐야 늘겠죠 ??
vim_ex 파일을 실행
수 하나를 입력 받고 10 을 더하기
bit.sparcs.org/~[ID] 에 결과 띄우기
Programming
★ Hint : /home/[ID]/public_html/index.html 에 출력
Assignment 어떤 언어를 써도 상관 ㄴㄴ
단 ! VIM 을 사용 !!
컴파일 방법은 물어보거나 검색 ㄱㄱ
gcc 의 경우
- $ gcc vim_ex.c –o vim_ex
끝ㅋ