0. 읽기전에!!!
- 큰따옴표 " " 로 묶인 글은 그 안의 내용을 말하는 것입니다. 만일 "가나다" 라고 하면 큰따옴표("")를 제외한 가나다만 입력하면 됩니다.
- "", "/", "?" 표시는 입력모드에서 ESC키를 누른뒤 입력하면 됩니다.
- filename.xxx는 아무 파일을 의미합니다. 즉 자기가 원하는 대로 쓰면 됩니다. 단, 파 일명 작성규칙에 맞는 파일명을 입력해야 합니다.
- 대소문자는 구분합니다. x와 X는 다릅니다.
- ""은 엔터키를 의미합니다.
- "[n]"은 숫자를 의미 합니다.
- "x, dl"은 x 또는 dl을 의미합니다.
1. History of vi
vi는 BSD의 C shell을 개발한 빌 조이가 1976년에 ed의 기능을 확장시킨 ex(Extended editer)편집기를 개발 하고 이를 확장 시켜서 만들었다. <<유닉스.리눅스 프로그래밍 필수 유틸리티>>
※vi는 Visual editer의 줄임이다.
2. vi의 특징
장점
- 키보드로 모든것을 할 수 있다.(처음 시작하는 사람들에게는 치명적인 단점이다.)
- 가볍다. 하지만 매우 많은 기능이 있다.
- 사용하면 할 수록 재미있다.
단점
- 키보드 만을 사용한다.
- 단축키가 매우 많다.
- 처음 사용자들은 사용하기가 매우 힘들다.
3. vi의 모드(mode of vi)
- 명령모드(command mode)
- ex모드
- 입력모드
- ex모드 <=> 명령모드 <=> 입력모드
즉 ex모드에서 입력모드로 가기위해서는 명령모드를 거쳐서 가야한다. 모드라고해서 거창한것은 없다. 단지 "ESC" 키 를 한번 누르는것이 전부다.
4. vi의 명령(command of vi)
ㄱ. 파일관련 단축키
- w filename.xxx : 쓰기(write)
- w >> filename.xxx : 파일에 덧붙여서 저장>
- q : 종료(quit)
- q! : 저장하지 않고 종료
- e filename.xxx : 열기(open)
- wq! : 저장하고 종료하기
ㄴ. 입력모드 전환 키
- a : 커서 위치의 다음칸부터 입력
- A : 커서 행의 맨 마지막부터 입력
- i : 커서 위치부터 입력
- I : 커서 행의 맨 처음부터 입력
- o : 커서 행의 다음행에 입력
- O : 커서 행의 이전행에 입력
- s : 커서 위치의 한 글자를 지우고 입력
- cc : 커서 위치의 한 행을 지우고 입력
ㄷ. 이동(move)
- h : 왼쪽
- l : 오른쪽
- j : 아래
- k : 위
- w : 다음 단어의 첫글자로 이동
- b : 이전 단어의 첫글자로 이동
- $ : 커서 행의 맨 마지막으로 이동
- ^ : 커서 행의 맨 처음으로 이동
- + : 다음행의 첫 글자로 이동
- - : 이전행의 첫 글자로 이동
- ( : 문장의 처음으로 이동
- ) : 문장의 마지막으로 이동
- { : 문단의 처음으로 이동
- } : 문단의 마지막으로 이동
- H : 커서를 화면의 맨 위로 이동
- M : 커서를 화면의 가운데로 이동
- L : 커서를 화면의 마지막으로 이동
- z : 현재 행을 화면의 맨 위로 이동
- z. : 현재 행을 화면의 중앙으로 이동
- z- : 현재 행을 화면의 최하단으로 이동
- [n]H : 커서를 현재 화면의 [n]행으로 이동
- [n]L : 커서를 현재 화면의 아래서 [n]행으로 이동
- ctrl + u : 반 화면 위로 스크롤
- ctrl + d : 반 화면 아래로 스크롤
- ctrl + b : 한 화면 위로 스크롤
- ctrl + f : 한 화면 아래로 스크롤
- gg : 문서의 맨 첫 행으로 이동
- G : 문서의 맨 마지막행으로 이동
- [n]G : 문서의 [n]번째 행으로 이동
- [n] : 문서의 [n]번째 행으로 이동
ㄹ. 삭제
- x, dl : 커서위치의 글자 삭제
- X : 커서 바로 앞의 글자 삭제
- dw : 한 단어를 삭제
- d0 : 커서 위치부터 행의 처음까지 삭제
- D, d$ : 커서 위치부터 행의 끝까지 삭제
- dd : 커서가 있는 행을 삭제
- dj : 커서가 있는 행과 그 다음 행을 삭제
- dk : 커서가 있는 행과 그 앞 행을 삭제
ㅁ. 복사 & 붙여넣기
- yw : 커서가 있는 단어를 복사한다.
- yy : 커서가 있는 줄을 복사한다.
- v : 현재 커서부터 블록을 시작한다.
- y : 블록이 되어있는 부분을 복사한다.
- p : 현재 커서가있는곳에 붙여 넣는다.
ㅂ. 잘라내기
잘라내기를 이해하기위해서는 vi의 레지스터를 알아야 한다. vi는 총 17개의 레지스터를 가지고 있다. 일단 삭제명령으로 지운 글자들은 순서대로 레지스터로 이동한다. 그러므로 p를 눌러주면 삭제된 글자들이 붙여넣기가 된다.
ㅅ. 레지스터
윈도우에서 말하는 클립보드와 같은것이다.
- reg : 레지스터에 있는 내용을 볼 수 있다.
- "[n]p : [n]번 레지스터에 있는 값을 현재 커서위치에 붙여넣는다.
o. 블록
- 블록은 v키를 누른뒤 커서를 이리저리 움직이면 설정된다.
- 직사각형의 영역을 지정하기 위해서는 "ctrl + v"를 누르면 된다.
- ~ : 대소문자 전환
- d : 삭제
- y : 복사
- c : 치환(바꾸기)
- < : 앞에 탭 제거
- > : 앞에 탭 삽입
선택된 영역에 대하여 ex명령
- J : 행을 합침
- U : 대문자로 만듦
- u : 소문자로 만듦
ㅈ. 되돌리기와 되살리기
- u : 되돌리기(undo) 윈도우에서 ctrl + z 와 같다.
- ctrl + r 되살리기 지워진것을 다시 살린다.>
ㅊ. 문자열 찾기
- /[찾고자하는 문자열] : 아래로가면서 문자열을 찾는다.
- ?[찾고자하는 문자열] : 위로 올라가면서 문자열을 찾는다.
- n : 다음 문자열
- N : 이전의 문자열
ㅋ. 문자열 치환
- %s/old/new/g : 아래로 가면서 문서에 있는 모든 old문자열을 new로 바꿈
- s/old/new/ : 아래로 가면서 제일 처음 매칭되는 행의 문자열을 치환
- 2,4s/old/new/g : 2행에서 4행사이에 매칭되는 문자열을 치환한다.
- -1,+3s/old/new/g : 현재 커서에서 위로1줄 아래로 3줄 범위내의 문자열을 치환
- %s/old/new/ : 문서의 전체를 조사하되 한행에서는 처음 만나는 문자열만 치환
- %s/old/new/gc : 치환여부를 물어본다.
Vim window split Manual
vim은 정말 알면 알수록 재미있고 신기한 에디터인것 같다. 소개할 window split기능은 여러가지로 재미있게 이용할 수 있을것이다. 아래에서 부터는 ^는 "ctrl 키와 함께 누름" 을 의미한다.
새창으로 파일 열기
:sp filename
커서의 창 이동
- ^ww 다음창으로 이동
- ^wt 최상위 top으로 이동
- ^wb 최하위 botton으로 이동
- ^wj 아래창으로 이동
- ^wk 위쪽 창으로 이동
창 닫기
- ^wc 현재창 닫기
- :q 현재창 닫기
- ^wo 현재창만 남기고 모두 닫기
- :only 현재창만 남기고 모두 닫기
- :qa 모든 창을 닫고 종료
창의 크기조절
- ^w_ 활성창 크기 최대화
- 10^w_ 활성창 크기를 10줄으로
- :res10 활성창 크기를 10줄으로
- ^w= 모든창 크기를 같게
창의 위치 이동
- ^wH 창을 왼쪽으로 이동
- ^wL 창을 오른쪽으로 이동
- ^wJ 창을 아래로 이동
- ^wK 창을 위로 이동
파일으로 바로 이동
커서를 파일 이름위에 대고 ^wf
vim 유용한 기능들, vim useful commands, functions
마우스 사용하기
:set mouse=a
html 으로 소스코드를 색을 입혀서 새 창에 띄운다.
:TOhtml
외부 명령어 실행
:!ls
쉘에서 ls를 친것과 같은 기능을 한다.
현재 커서에 파일 불러서 더하기
:r filename
이런방법도 있음
:r !ls
vim 옵션조정
1. 커서, 백스페이스 설정
windows 에서 vim 사용시 초기화 파일은 자기 홈디렉토리에 "_vimrc" 파일을 생성하여 넣어놓으면 된다. 즉 나의 경우는
"C:\Documents and Settings\김성환" 폴더에 "_vimrc"파일을 넣어두었다.
그렇지 않으면 vim이 설치된 폴더 c:\Program Files\Vim\ 에다가 넣어도 된다.
_vimrc 파일을 설정하는법은 쉽다.
-----------------------_vimrc 파일의 내용-------------------------
set nu
set autoindent
set backspace=indent,eol,start
set ruler
syntax on
set incsearch
------------------------------------------------------------------
이렇게 넣어두었다.
set nu 는 라인의 번호를 출력하라는 명령이고
set autoindent 는 자동 들여쓰기기능
set backspace=indent,eol,start 는 처음에 vim을 설치했을때 backspace를 눌러도 글자가 지워지지 않고 커서만 이동했는데 이 명령후에는 일반 윈도우의 메모장이나 한글프로그램처럼 동일하게 작동한다.
set ruler 는 우측하단에 현재 커서의 위치를 표시해주게된다.
syntax on 은 자동으로 파일을 인식하여 색을 입혀주는 기능이 활성화 되는기능이다.
2. gVIM에서 color scheme 지정법
가. c:\Program Files\vim\_vimrc 파일을 연다.
나. 아래와 같이 입력
------------------ _vimrc --------------------
: colorscheme torte
----------------------------------------------
3. gVIM에서 폰트지정
가. c:\Program Files\vim\_vimrc 파일을 연다.
나. 아래와 같이 입력
------------------ _vimrc --------------------
set guifont = 나눔고딕코딩:h14:cHANGEUL
----------------------------------------------
4. 그외 다른 옵션들
" ---- language-env DON'T MODIFY THIS LINE!
""" ========================================================
""" 기본적인 설정들
""" ========================================================
set nocompatible " Vim 디폴트 기능들을 사용함
set backspace=2 " 삽입 모드에서 백스페이스를 계속 허용
"set autoindent " 자동 들여쓰기
set cindent " C 언어 자동 들여쓰기
set smartindent " 역시 자동 들여쓰기
"set textwidth=76 " 76번째 칸을 넘어가면 자동으로 줄 바꿈
set nowrapscan " 찾기에서 파일의 맨 끝에 이르면 계속하여 찾지 않음
"set nobackup " 백업파일을 만들지 않음
set novisualbell " 비주얼벨 기능을 사용하지 않음
set nojoinspaces " J 명령어로 줄을 붙일 때 마침표 뒤에 한칸만 띔
set ruler " 상태표시줄에 커서 위치를 보여줌
set tabstop=4 " 간격
set shiftwidth=4 " 자동 들여쓰기 간격
"set keywordprg=edic " K를 눌렀을 때 실행할 명령어
set showcmd " (부분적인) 명령어를 상태라인에 보여줌
set showmatch " 매치되는 괄호의 반대쪽을 보여줌
set ignorecase " 찾기에서 대/소문자를 구별하지 않음
set incsearch " 점진적으로 찾기
set autowrite " :next 나 :make 같은 명령를 입력하면 자동으로 저장
set title " 타이틀바에 현재 편집중인 파일을 표시
""" ========================================================
""" 파일 인코딩을 한국어로 설정
""" ========================================================
if $LANG[0] == 'k' && $LANG[1] == 'o'
set fileencoding=korea
endif
""" ========================================================
""" 터미널에 따른 설정 : Xterm이면 16컬러 사용
""" ========================================================
if &term =~ "xterm-debian" || &term =~ "xterm-xfree86"
set t_Co=16
set t_Sf=^[[3%dm
set t_Sb=^[[4%dm
set t_kb=?
fixdel
endif
""" ========================================================
""" 문법 강조기능 사용
""" ========================================================
if has("syntax")
"syntax on
syntax off
endif
""" ========================================================
""" GUI 모드로 실행할 경우
""" ========================================================
if has("gui_running")
set visualbell " 비주얼벨 기능 사용
set hlsearch " 찾는 단어를 하이라이팅
set guifontset=-*-fixed-medium-r-normal--14-*-75-75-*-70-iso8859-1,
-*-gulim-medium-r-normal--14-140-75-75-*-140-ksc5601.1987-0
endif