Vim 은 Emacs 와 더불어 리눅스 최고의 편집기라 일컫어지는 텍스트 편집기이다. Vim 에는 입력모드와 명령모드 두 가지가 있다. 입력모드는 말 그대로 입력모드로 텍스트를 입력할 수 있다. 한편 명령모드는 저장, 복사, 치환 등과 같이 여러 가지 '명령' 을 수행하는 모드 이다. Vim 을 쓰는 방법은 매우 간단하다. 그냥 터미널에서 'vi 파일명' 을 치면 된다. 예를 들어 문서 hello.c 를 편집하고 싶다면 vi hello.c 를 치면 된다. 보통 vi 는 어떠한 리눅스 배포판이여도 기본적으로 깔려 있으므로 뭐 설치는 걱정 안해도 된다.
Vim 에는 자동 완성기능, 파일의 비교 및 병햡기능과 통합된 도움말 시스템, 확장된 정규식 표현, 스크립트 언어 (Perl, Python, Ruby, Tcl 등) 인터프리팅, gzip, bzip2, zip 등으로 압축된 파일 편집기술과 철자 체크, 창 분할, 구문강조, 유니코드 및 다국어 지원, 검색, 커서 위치기록 등과 같이 수 많은 기능을 가지고 있다. 또한 그 외에도 여러가지 플러그인 들이 상당히 유용하다. 예를 들자면 ctags, cscope, 그리고 대표적으로 taglist 까지 상당히 유용하다. 이 들은 모두 소스코드를 분석할 때 용이하게 쓰일 수 있으며 많이 애용된다. 이 들의 사용방법은 그다지 어렵지 않으므로 인터넷에 쳐 보면 쉽게 알 수 있다. 하지만 Vim 이 절대적으로 편리한 이유는 바로 마우스를 사용하지 않기 때문이다. Vim 에서는 모든 명령을 키보드로 처리하기 때문에 키보드에서 손을 떼어 마우스를 잡은 후 다시 키보드에 손을 대는 이런 귀찮은 행동을 할 필요가 사라진다.
보통 많은 사람들이 Vim 을 그대로 사용하지 않고 여러가지 설정을 해준다. root 계정을 사용하고 있다면 vi /root/.vimrc 를 쳐서 다음과 같은 내용을 입력해준다. (물론 원하는 것만) 여기서 " 는 주석으로 꼭 입력할 필요는 없습니다.
set shiftwidth=2 " >>나 << 사용시 들여쓰기 간격을 지정한다
set expandtab " 탭 문자를 공백문자로 변환한다.
set softtabstop=2 "탭 간격을 공백문자로 변환하면 두 칸 단위로 삭제한다
set visualbell " 사용자 실수 경고시 비프음 대산 화면을 한 번 반짝인다.
set nobackup "백업 파일을 생성하지 않는다
set cindent "C 언어 스타일의 들여쓰기를 사용합니다.
set autoindent "자동 들여쓰기를 사용합니다.
set smartindent "좀 더 지능적인 들여쓰기를 사용합니다.
set enc=euc-kr "인코딩을 한글로 지정합니다.
set incsearch
"키워드 입력시 검색하는 점진 검색을 사용합니다. (파이어폭스서 사용)
syntax on "구문 강조기능을 사용합니다
filetype on "파일 종류에 따라 구문을 강조합니다.
set background=dark "배경색을 어두운 색으로 설정합니다.
colorscheme evening "VI 색상 테마를 evening 으로 설정합니다
set backspace=eol,start,indent
"줄의 끝, 시작, 들여쓰기서 백스페이스 사용시 이전 줄과 연결
set history=1000 " VI 편집 기록을 1000개 까지 저장합니다.
set hlsearch "검색어 강조 기능을 사용합니다.
set ignorecase "검색, 편집, 치환시 대소문자를 구분하지 않습니다.
set showmatch "() 과 {} 에서 한 괄호만 입력해도 일치하는 괄호를 보여줍니다
Vim 을 시작하면 i 를 눌러서 편집모드로 들어갈 수 있고 Esc 나 Ctrl + [ 를 누르면 명령모드로 들어갈 수 있습니다. 명령모드에서는 앞서 말했듯이 저장, 복사, 치환 등의 행동을 할 수 있습니다. 예를들어서 명령모드서 :w 라 치면 이 파일이 저장됩니다. :q 라 치면 종료가 되며 (저장이 되어 있다면), :q! 라 치면 저장의 여부와는 상관 없이 강제 종료됩니다. 아래는 Vim 의 명령어들을 모은 표 입니다. (대부분의 명령어로 모두는 아니다. )
파일 작업시 명령어 |
|
Vim 명령어 |
결과 |
:e 파일명 |
새로운 파일을 연다. 커맨드 프롬프트 처럼 Tab 키를 통해 파일이름의 자동 완성 기능을 사용할 수 있다. |
:w 파일명 |
파일을 저장한다. 만약 파일 이름을 지정하지 않는다면 그냥 원래 파일 이름으로 저장이 되고 파일 이름을 지정해 준다면 새로운 파일 이름으로 저장이 된다 |
:q | Vim 을 종료한다. 파일을 저장하지 않았자면 종료되지 않는다. |
:q! | 파일의 저장에 상관없이 종료한다. |
:wq | 파일을 저장한 후 종료한다. |
:x | 위의 :wq 와 거의 같지만 여기서 파일이 저장된 이후 기록된 사항이 있으면 저장하지 않고 파일이 저장된 이후 기록된 사항이 있으면 저장하고 종료한다. |
파일 편집 중 이동하기 |
|
아래의 Vim 명령어는 Visual 모드, 터미널 모드 모두에서 사용 가능합니다. |
|
Vim 명령어 |
결과 |
j or 방향키 ↑ |
커서를 한 칸 위로 이동 |
k or 방향키↓ |
커서를 한 칸 아래로 이동 |
l or 방향키 → |
커서를 한 칸 오른쪽으로 이동 |
h or 방향키 ← |
커서를 한 칸 왼쪽으로 이동 |
e | 단어의 끝으로 이동 |
E | 단어의 끝으로 이동 |
b | 단어의 첫 부분으로 이동 |
B | 단어의 첫 부분으로 이동 |
0 | 문장의 첫 부분으로 이동 |
^ | 공백문자가 아닌 문장의 첫 부분으로 이동 |
$ | 문장의 끝 으로 이동 |
H | 화면의 첫번째 라인으로 |
M | 화면의 중간 라인으로 이동 |
L | 화면의 마지막 라인으로 이동 |
:n | n 번째 라인으로 이동. 예를들어 :10 이면 10 번째 줄로 이동한다. |
텍스트의 삽입 몇 편집 |
|
Vim 명령어 |
결과 |
i | 커서 앞에 쓴다. |
I | 커서가 가리키는 라인의 앞에 쓴다 |
a | 커서 뒤에 추가한다. |
A | 커서가 가리키는 라인의 맨 뒤에 추가한다. |
o | 커서가 가리키는 라인 아래에 새 라인을 추가한다. |
O | 커서가 가리키는 라인 위에 새 줄을 추가한다. |
r | 한 글자를 바꿔쓴 후 다시 명령모드로 들어간다. |
R | 삽입모드에 들어가지만 글자를 덧쓰면서 이미 쓰여진 글자를 지운다 |
ESC |
삽입/수정 모드에서 빠져나온다. |
텍스트 지우기 |
|
Vim 명령어 |
Action |
x | 커서가 가리키는 글자를 지운다 |
X | 커서 앞의 글자를 지운다. |
dd or :d | 현재 커서가 가리키는 라인의 글자를 지운다 |
비주얼 모드 들어가기 |
|
Vim 명령어 | 결과 |
v | 단어를 하이라이팅(Highlighting, 블록 설정) 한다. 텍스트를 하이라이팅 하기 위해서 보통의 이동 키를 사용한다. |
V | 현재 커서가 가리키는 라인을 하이라이팅 한다. |
The ESC key | 비주얼 모드에서 빠져나와 명령모드로 들어간다. |
블록 텍스트 편집하기 |
|
아래의 명령어는 비주얼 모드에서 텍스트를 블록 설저한 후 명령모드로 들어와 사용할 수 있다. 물론 명령모드에서도 사용할 수 있긴 하다. |
|
Vim 명령어 | 결과 |
~ | 글자의 대소문자를 바꾼다 예를들어서 mOvL 은 MoVl 로 바뀐다. 비주얼 모드와 명령모드 둘다 사용할 수 있으며 비주얼 모드에서 블록 처리한 뒤 명령모드로 들어와 ~ 를 누르면 그 블록 설정된 부분의 대소관계가 바뀐다. |
> (V) | 한 칸 오른쪽으로 민다 |
< (V) | 한 칸 왼쪽으로 민다. |
c (V) | 블록처리된 텍스트를 바꾼다. |
y (V) | 블록처리된 텍스트를 복사(yank)한다. |
d (V) | 블록처리된 텍스트를 잘라내기한다. |
yy or :y or Y | 커서가 가리키는 라인을 복사한다. 블록 처리할 필요는 엎다. |
dd or :d | 커서가 가리키는 라인을 삭제한다. 블록 처리할 필요는 없다. |
p | 복사나 잘라내기 했던 텍스트를 붙여넣기(put) 한다. |
P | 커서 앞에 잘라내기 했던 텍스트를 붙여 넣는다. |
실행 취소 및 다시 실행 |
|
Vim 명령어 | 결과 |
u | 실행 취소한다. |
U | 커서가 가리키고 있던 라인에서 했던 모든 실행들을 취소한다. |
Ctrl + r | 다시 실행한다. |
검색 | |
Vim 명령어 | 결과 |
/pattern | pattern 이란 단어를 검색한다. |
n | 다음 글자를 찾지만 아래방향으로 찾는다. |
N | 다음 글자를 찾지만 윗 방향으로 찾는다. |
치환 (바꾸기) |
|
Vim 명령어 |
결과 |
:rs/foo/bar/a | foo 를 bar 로 치환환한다. r 은 치환하는 범위를 지정하고 a 는 인자를 지정한다. 아래에 r 과 a 의 종류에 대해 설명되어 있다. |
범위 (r) 의 종류에는 |
|
아무것도 쓰지 않을 때 |
범위를 주지 않을 경우 현재 라인에서 치환한다. |
숫자를 쓸 때 |
치환할 라인의 숫자를 쓴다. |
% | 전체 파일의 모든 라인에 대해 치환한다. |
인자 (a)의 종류에는 | |
g | 한 라인의 모든 경우를 치환한다. 이 인자를 주지 않을 경우 처음 발견되는 것만을 치환한다. (이 말은 g 인자를 주지 않고 Hello Hi Hello 에서 Hello bye 로 치환한다면 bye Hi bye 가 아닌 bye Hi Hello 가 된다) |
i | 검색된 문자들의 대소문자를 무시하고 치환한다. (즉, hello 를 hi 로 치환시 Hello, hEllo, HELLO 등과 같은 것들도 치환된다. ) |
I | 위 경우를 무시하지 않는다. ( 위 경우서 hello 만 치환된다 ) |
c | 모든 치환에 대해 확인한다. 만약 치환할 것이라면 y 를, 치환하지 않을 것이라면 n 을, 이하 모든 부분을 치환할 것이라면 a 를, 치환을 종료하겠다면 q 를 누르면 된다. |
예를들자면... |
|
:452s/foo/bar/ | 452 번째 라인의 첫 번째 foo 를 bar 로 치환한다. |
:s/foo/bar/g | 현재 라인에 나타나는 모든 foo 를 bar 로 치환한다. |
:%s/foo/bar/g | 전체 파일의 모든 foo 를 bar 로 치환한다. |
:%s/foo/bar/gi | 위와 같지만 Foo, FOO, FOo, foO 와 같은 것들도 모두 치환된다. |
:%s/foo/bar/gc | 위위와 같지만 각 치환에 대해 모두 검사를 수행한다. |
:%s/foo/bar/c | 파일의 모든 라인에 대해 각 라인의 첫 번째 foo 만 bar 로 치환하며 각 치환에 대해 검사를 한다. |
Vim 에 한 번 맛들리면 영원히 손에서 뗄래야 뗄 수 없는 편집기이다. 여러분도 Vim 의 세계에 풍덩 빠졌으면 한다.
------------------------------------------------------------------------------------
명령어 표 출처 : http://www.tuxfiles.org/linuxhelp/vimcheat.html
원본 출처 : http://kevin0960.tistory.com/entry/VIM-Vi-iMproved-의-명령어-모음
'Programming > Linux' 카테고리의 다른 글
우분투에서 안드로이드 폰 인식 방법 (0) | 2011.06.29 |
---|---|
Ubuntu 10.04 이후에 sun-java5-jdk 설치하기 (0) | 2011.06.27 |