Darkwind BETAI'm Developer.

강좌게시판


[Linux] vim 정리
흑풍 0 267 0 0 2011-02-07 11:29:52

Vim 에는 자동 완성기능, 파일의 비교 및 병합기능과 통합된 도움말 시스템, 확장된 정규식 표현, 스크립트 언어 (Perl, Python, Ruby, Tcl ) 인터프리팅, gzip, bzip2, zip 등으로 압축된 파일 편집기술과 철자 체크, 창 분할, 구문강조, 유니코드 및 다국어 지원, 검색, 커서 위치기록 등과 같이 수 많은 기능을 가지고 있다. 또한 그 외에도 여러가지 플러그인 들이 상당히 유용하다. 예를 들자면 ctags, cscope, 그리고 대표적으로 taglist 까지 상당히 유용하다. 이 들은 모두 소스코드를 분석할 때 용이하게 쓰일 수 있으며 많이 애용된다. 이 들의 사용방법은 그다지 어렵지 않으므로 인터넷에 쳐 보면 쉽게 알 수 있다. 하지만 Vim 이 절대적으로 편리한 이유는 바로 마우스를 사용하지 않기 때문이다. Vim 에서는 모든 명령을 키보드로 처리하기 때문에 키보드에서 손을 떼어 마우스를 잡은 후 다시 키보드에 손을 대는 이런 귀찮은 행동을 할 필요가 사라진다.

set tabstop=2        "탭 간격을 2 칸 으로 지정한다

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 "() {} 에서 한 괄호만 입력해도 일치하는 괄호를 보여줍니다

글 수정하기
cc :
한 줄 전체 수정하기
C :
커서의 현재 위치부터 줄의 끝까지 수정하기
cw :
커서의 현재 위치부터 단어의 끝까지 수정하기
J :
아래 줄을 현재 줄과 합치기
:12,24j : 12
줄부터 24줄까지 합치고 각 줄의 공백은 그대로 두기.
~ :
대소문자 전환하기

r :
현재 커서아래에 있는 글자를 다른 문자로 바꾸기
4rx :
현재 커서 이후 4개의 글자를 "x" 문자로 바꾸기
R : ESC
키를 누를때 까지 덮어쓰기
s :
현재 글자를 삭제하고 삽입 모드로 변경하기
S :
현재 줄을 삭제하고 삽입 모드로 변경하기
>> :
현재 줄을 오른쪽으로 들여쓰기 하기
3>> :
세 줄을 오른쪽으로 들여쓰기 하기
>% :
괄호등이 있는 곳에서 실행하며, 괄호의 다른 짝이 되는 부분까지를 오른쪽으로 들여쓰기 하기
>} :
한 문단을 오른쪽으로 들여쓰기 하기
>'m : m
문자로 마크된 줄까지 들여쓰기 하기 (마크는 mx 에서 x를 원하는 마크 문자로 지정해서 한다)
<< :
왼쪽으로 내어쓰기 하기(그 외 다른 기능들은 들여쓰기와 같은 조합을 사용할 수 있음
)

복사와 붙여넣기
yl (
와이엘) : 현재 커서 아래의 글자를 복사하기
nyl : n
개의 문자를 복사하기
yw :
한 단어 복사하기
yy :
현재 줄 복사하기
Y :
현재 줄 복사하기(yy와 동일)
nyy : n
줄 복사하기

y$ :
줄 끝까지 복사하기
y) :
문장(구두점 등으로 끝남) 끝까지 복사하기
y'x :
현재 위치부터 마크 x 까지 복사하기 (마크는 mx 에서 x를 원하는 마크 문자로 지정해서 한다)
y/word :
현재 위치부터 "word"라는 단어 직전까지 복사하기

"ay'm :
현재 위치부터 마크 m까지를 복사하여 버퍼 "a"에 저장하기. ":e filename" 혹은 ":n filename"으로 다른 파일로 이동하여서로 다른 파일간의 복사에 사용될 수 있음.
"ayy :
버퍼 "a"에 현재 줄을 복사하여 저장하기

"a3Y :
버퍼 "a"에 세 줄을 복사하여 저장하기
"A3Y :
버퍼 "a" 3줄을 복사하여 그 이전 버퍼 내용에 이어 저장하기
"ap :
아래 줄에 버퍼 "a"의 내용을 붙여넣기
p :
현재 커서 위치의 오른쪽에 붙여넣기
P :
현재 커서 위치의 왼쪽에 붙여넣기

삭제하기
x :
현재 커서 아래의 문자 삭제하기
dd :
현재 줄 삭제하기
d^ :
현재 위치부터 줄의 처음까지 삭제하기
d$ :
현재 위치부터 줄의 끝까지 삭제하기
dw :
커서의 현재 위치부터 단어의 끝까지 삭제하기
d3w : 3
단어 삭제하기
3dd :
현재 줄포함 아래로 3 줄 삭제하기
d/word :
현재 위치부터 오른쪽으로 "word" 검색하여 그 직전까지 삭제하기
d?word :
현재 위치부터 왼쪽으로 "word" 검색하여 그것을 포함해서 삭제하기
dfx :
현재 위치부터 오른쪽으로 문자 "x" 까지 삭제하기
dFx :
현재 위치부터 왼쪽으로 문자 "x" 까지 삭제하기
D :
현재 위치부터 줄 끝까지 삭제하기
u :
삭제 취소하기
U :
방금 수정했던 줄 전체를 원래 상태로 되돌리기

외부 명령어 - 여기 지정된 외부 명령어들은 Unix/Linux의 명령어들이다
:!cmd :
외부 프로그램 실행하기
:%!cmd :
버퍼 내의 모든 내용을 외부 프로그램의 입력으로 제공하고, 외부 프로그램을 실행한 결과로 현재 버퍼를 대체한다.
!! :
현재 줄을 외부 프로그램의 입력으로 제공하고, 외부 프로그램을 실행한 결과로 대체한다
.
!$ :
현재 줄을 외부 프로그램의 입력으로 제공하고, 외부 프로그램을 실행한 결과로 대체한다
.
!L :
현재 커서 위치 줄부터 부터 화면상의 마지막 줄까지를 외부 프로그램의 입력으로 제공하고, 외부 프로그램 실행 결과로 대체한다
.
!23G :
현재 커서 위치 줄부터 23번째 줄까지를 외부 프로그램의 입력으로 제공하고, 외부 프로그램 실행 결과로 대체한다
.
!/word :
현재 줄 부터 해당 "word"가 검색된 줄까지를 외부 프로그램의 입력으로 제공하고, 외부 프로그램 실행 결과로 대체한다
.
!) :
현재 줄 부터 문장 끝까지의 줄을 외부 프로그램의 입력으로 제공하고, 외부 프로그램 실행 결과로 대체한다
.
!} :
현재 줄 부터 문단 끝까지의 줄을 외부 프로그램의 입력으로 제공하고, 외부 프로그램 실행 결과로 대체한다
.
!!date :
현재 줄을 날짜로 대체

!!cut -c41- :
현재 줄에서 처음 40(41 - 1)을 삭제한다.
3!!sort :
현재 줄 부터 3줄을 sort의 입력으로 제공하고, 그 실행 결과로 대체한다
.
!Grev :
현재 줄 부터 끝까지 "rev" 명령의 입력으로 보내고 그 결과로 대체한다. rev 명령은 각 줄의 문자들을 뒤집는다. (
) apple -> elppa)
!}sort :
현재 줄 부터 문단 끝(첫번째 빈 줄 나오는 부분)을 정렬한다
.
:'x,.!sort : mx
명령으로 마크된 줄부터 현재 줄까지를 정렬한다
.
:r !ls : ls
명령의 결과를 현재 줄 다음 줄 부터 삽입한다
.
:'t,'b !spell :
마크 t 부터 마크 b 까지 스펠링 체크

:'t,. !awk '{print $3 " " $2 " " $1}' :
마크 t 부터 현재 줄까지 3 컬럼을 역순으로 배열한다.
:%! sed G :
전체 문서의 각 줄에 빈 줄을 삽입한다
.
:1,5! sed G : 1 - 5
줄에 각각 빈 줄을 삽입한다
.
:'x,.!sed '/^$/d' :
마크 x 줄부터 현재 줄까지 빈 줄을 삭제한다
.

삽입하기
i :
현재 문자 앞에 삽입하기
I :
현재 줄의 맨 첫칸에 삽입하기
a : 현재 문자 뒤에 추가하기
A :
현재 줄의 맨 끝에 추가하기
o :
현재 줄 아래에 새 줄 삽입하고 입력 시작
O :
현재 줄 위에 새 줄 삽입하고 입력시작
20I-<ESC> : 줄의 시작부분에 20개의 빼기기호(-) 삽입하기

이동하기
0 : 커서를 줄의 맨 처음으로
$ :
커서를 줄의 끝으로
w :
한 단어 앞으로(현재 위치에서 오른쪽으로, 구두점이 있으면 구두점 앞까지 단어로 간주)
3w :
세 단어 앞으로

W :
구두점을 무시하고 공백 기준으로 한 단어 앞으로
b :
한 단어 뒤로(현재 위치에서 왼쪽으로, 구두점이 있으면 구두점 앞까지 단어로 간주)
B :
구두점을 무시하고 공백 기준으로 한 단어 뒤로

e :
커서를 단어의 맨 끝으로
E :
구두점을 무시하고 공백을 기준으로 커서를 단언의 맨 끝으로

  목록     글쓰기  

번호 제   목 글쓴이 날짜 조회 추천수
11 [iOS] loadView, viewDidLoad .. [0] 흑풍 2011-02-28 270 0
10 [iOS] Property List 사용법 [0] 흑풍 2011-02-25 292 0
9 [MAC] FrontRow에서 avi및 자막을 볼 .. [0] 흑풍 2011-02-18 277 0
8 [Linux] vim 정리 [0] 흑풍 2011-02-07 267 0
7 [jquery] ajax에서 xml 리턴받아 처리하기. [0] 흑풍 2010-12-22 473 0
5 [jquery] checkbox 관련 [0] 흑풍 2010-12-13 487 0
4 우편번호 검색 API [1] 흑풍 2010-12-07 518 0
3 [PHP] ftp 함수모음 [0] 흑풍 2010-12-03 334 0
2 [PHP] preg_match 사용법 [0] 흑풍 2010-12-02 383 0
1 [Linux] find 명령어 완전 정복 가이드 [0] 흑풍 2010-11-29 344 0