MyAlbum   Pet
DirectX   openGL   Java   C/C++   STL   C#   Python   Window   ActiveX   SE & Refactoring   Game   Unicode   googleDesktop   Network   Database   Web   php   asp   asp.net   Library   QT   wxWidget   Something to read  
ToDo
zelon's WebAlbum
Google Tools
Google Naver map
ToRearrange
OpenOffice.org
Eclipse
Check W3 validator
vim
e i R f
Anonymous

Contents

1 나의 VIM 설정
2 tab 기능
3 커서 이동
4 블럭 잡기
5 스크롤
6 mark 하기
7 undo & redo
8 복사
9 정규 표현식
10 찾기
11 바꾸기
12 중복행 바꾸기
13 찾아서 출력하기
14 grep 후
15 diff
16 folding
17 tips for programmer
18 c++ 프로그래밍할 때 파일 쉽게 이동하기
19 기타
20 ctag 사용
21 환경 설정
22 플러그인
23 기타
24 윈도우에서 붙여넣기 중 계단 현상 방지
25 UTF-8 파일 열어보기
26 euc-kr 로 되어 있는 파일을 utf-8 환경에서 편집하기
27 ^M 을 안보이게 하기
28 나중에 편집할 것
29 링크



http://wiki.kldp.org/wiki.php/VimTutorKo

1 나의 VIM 설정 #


윈도우의 경우, Document and settings 밑의 자기 아이디 폴더 밑에 _vimrc 라는 파일에 다음과 같은 것을 넣으면 된다.

set langmenu=none
language en
colors torte
syn on
set nobackup
set ic             " do incremental search
set is
set hls
set ai
set ruler          " show status
set cindent
set sw=4
set ts=4
set bs=2           " allow backspacing over everything in insert mode
set nowrap
set showmatch     " show matched brace

filetype plugin indent on

" CTRL-X and SHIFT-Del are Cut
vnoremap <C-X> "+x
vnoremap <S-Del> "+x

" CTRL-C and CTRL-Insert are Copy
vnoremap <C-C> "+y
vnoremap <C-Insert> "+y

" CTRL-V and SHIFT-Insert are Paste
map <C-V>		"+gP
map <S-Insert>		"+gP

cmap <C-V>		<C-R>+
cmap <S-Insert>		<C-R>+

" Pasting blockwise and linewise selections is not possible in Insert and
" Visual mode without the +virtualedit feature.  They are pasted as if they
" were characterwise instead.
" Uses the paste.vim autoload script.

exe 'inoremap <script> <C-V>' paste#paste_cmd['i']
exe 'vnoremap <script> <C-V>' paste#paste_cmd['v']

imap <S-Insert>		<C-V>
vmap <S-Insert>		<C-V>

" Use CTRL-Q to do what CTRL-V used to do
noremap <C-Q>		<C-V>

" Use CTRL-S for saving, also in Insert mode
noremap <C-S>		:update<CR>
vnoremap <C-S>		<C-C>:update<CR>
inoremap <C-S>		<C-O>:update<CR>

" For CTRL-V to work autoselect must be off.
" On Unix we have two selections, autoselect can be used.
if !has("unix")
  set guioptions-=a
endif

" CTRL-Z is Undo; not in cmdline though
noremap <C-Z> u
inoremap <C-Z> <C-O>u

" CTRL-Y is Redo (although not repeat); not in cmdline though
noremap <C-Y> <C-R>
inoremap <C-Y> <C-O><C-R>

" Alt-Space is System menu
if has("gui")
  noremap <M-Space> :simalt ~<CR>
  inoremap <M-Space> <C-O>:simalt ~<CR>
  cnoremap <M-Space> <C-C>:simalt ~<CR>
endif

" CTRL-A is Select all
noremap <C-A> gggH<C-O>G
inoremap <C-A> <C-O>gg<C-O>gH<C-O>G
cnoremap <C-A> <C-C>gggH<C-O>G
onoremap <C-A> <C-C>gggH<C-O>G
snoremap <C-A> <C-C>gggH<C-O>G
xnoremap <C-A> <C-C>ggVG

" CTRL-Tab is Next window
noremap <C-Tab> <C-W>w
inoremap <C-Tab> <C-O><C-W>w
cnoremap <C-Tab> <C-C><C-W>w
onoremap <C-Tab> <C-C><C-W>w

" CTRL-F4 is Close window
noremap <C-F4> <C-W>c
inoremap <C-F4> <C-O><C-W>c
cnoremap <C-F4> <C-C><C-W>c
onoremap <C-F4> <C-C><C-W>c

if has("multi_byte")
	set encoding=utf-8
else
	echoerr "Sorry......"
endif


hls 는 highlisted-search 이다. 끄려면 nohls



2 tab 기능 #


vim7.0 버젼부터 지원되는 기능
tabn[ext] n : n 번째 탭으로 이동
tabne[w] : 새 탭 생성
tabe[dit] name : 새 탭으로 편집

3 커서 이동 #


단어별 왼쪽이동b, #b4b 를 치면 4단어 왼쪽으로 이동
단어별 오른쪽이동w, #w
현재 단어의 끝으로 이동e
그 줄에서 빠른 찾기f#, #2f#fi 를 치면 그줄 오른쪽에서 가장 가까운 i 로 이동, 2fi 를 치면 두번째
파일의 끝으로 이동Shift+G
특정 라인으로 이동#G10G : 10번째 줄로 이동
Ctrl + u반페이지 위로
Ctrl + d반페이지 밑으로

H화면의 젤 처음 라인으로
M화면의 가운데 라인으로
L화면의 마지막 라인으로

Ctrl+g현재 라인의 정보

'.마지막으로 수정한 라인

4 블럭 잡기 #


v블럭 시작
V줄단위 블럭 시작
Ctrl+vVertical 선택Ctrl+v 후 에 Shift + i 를 누르고 // 를 누르고 ESC 2번 누르면 선택 부분 주석처리


5 스크롤 #


반페이지 이동Ctrl + U, Ctrl + DUp and down

6 mark 하기 #


마크는 vim 에서 특정한 위치를 지정할 때 쓴다. 이 지정된 위치는 다른 명령어들과의 조합을 이용해서 다양하게 쓰일 수 있다. 마크는 a~z 까지 26개를 쓸 수 있다

a마크하기ma
b마크하기mb
......

a마크로이동`a
b마크로이동`b
......

7 undo & redo #


Undou
RedoCtrl+r

8 복사 #


한줄복사yy
현재위치에 복사P
다음위치에 복사p
a마크까지 복사y'a

9 정규 표현식 #


^Load.*$\n : 앞에 Load 로 시작하고 아무 문자나 계속 오다가 마지막에 end-of-line 이 오는 것을 찾는다.

[[:digit:]] : 숫자를 찾는다.


10 찾기 #

setting find hilight:set hlsearach , :set nohlsearch, current off : nohlsearch
setting incremental search:set incsearch
대소문자 구분끄기:set ic
대소문자 구분켜기:set noic
현재 단어를 아래로 찾기(단어위에서)*
현재 단어를 위로 찾기(단어위에서)#

11 바꾸기 #


:%s/old/new/g

  • 끝에 /g 가 붙은 것은 한 라인에 old 라는 단어가 2개 이상있어도 모두 바꾸겠다는 뜻이다.
  • 끝에 /cg 를 붙이면(c를 더 붙이면) 바꿀 때 물어본다. confirm 의 c 이다.



12 중복행 바꾸기 #

:%s/abc\ndef/abc\rkkk

abc
def

를

abc
kkk

 로 바꿈.

13 찾아서 출력하기 #


마치 linux 의 grep 처럼.
:%g/pattern

14 grep 후 #


  • grep 한 것만 남기기
:v/searchString/d 1


  • grep 된 줄만 지우기
:%g/searchString/d 1

15 diff #


[c이전 diff 위치
]c다음 diff 위치

diffg다른창에서 가져온다(get)
diffp다른창으로 복사한다(put)

vert diffsplit newfilename간단하게 비교창 띄우기

16 folding #


zoFolding Open
zOFolding all open
zcFolding close
[zstart of folding
]zend of folding
zjnext start of folding

17 tips for programmer #


18 c++ 프로그래밍할 때 파일 쉽게 이동하기 #


  • http://ctags.sf.net 에서 ctag 를 설치한 후 path 를 건다. 그리고 http://www.vim.org 에서 taglist.vim, a.vim 을 설치한다.

  • taglist 는 ctags 로 만들어진 클래스, 파일로 빠르게 이동하는 플러그인이고, a 는 .h, .cpp 파일을 빠르게 이동하는 플러그인이다.

  • Ctrl + ^ 를 누르면 방금 전에 열었던 파일을 왔다갔다 하면서 편집할 수 있다.

19 기타 #


for programmer :


	현재 단어의 manpage 보기 : Shift + K
	move to matched brace : %, use the command --> d%
	현재부터 시작된 {} 안의 내용을 오른쪽 탭으로 밀기 : >i{
	현재부터 시작된 {} 까지도 오른쪽 탭으로 밀기 : >%
	변수가 선언된 곳으로 가기 : gd, gD
	Indenting a block using visual mode
		1. Position the cursor on the left or right curly brace.
		2. Start visual mode with the v command.
		3. Select the inner {} block with the command i}.
		4. Indent the text with >.
	Complete Words : Ctrl + P
        선택구역 한꺼번에 탭 넣기 : v 로 선택후, > 로 탭 넣기
        전체 파일 포맷팅 : gg=G

Vim 기능중에 유용한것:

현재 커서 위치에 있는 헤더파일 열기 gf
-> 되돌아 올땐 Ctrl+o

화면 두개로 나누기 :split

지금 소스와 include 된 헤더에서 현재 커서가 있는 토큰이 사용된 모든 라인 보기
Ctrl+[ I
-> 되돌아 올땐 Ctrl+o

20 ctag 사용 #

ctags사용
쉘에서 ctags -R하여 모든 소스에 대해 인덱스 생성
vi를 실행하고 검색할 단어를 :ta tag로 지정하든지, 단어가 있는 곳에 커서를 둔다.
해당함수(오브젝트)가 정의된 곳으로 가기: Ctrl + ]
되돌아가기: Ctrl + t

21 환경 설정 #

윈도우즈 환경에서의 경우 `C:Program Filesvim 에 있는 _vimrc 파일을 고치면 된다.

줄번호:set number
자동줄바꿈 - wordwrap:set wrap :set nowrap
백업폴더:set backupdir=/tmp

22 플러그인 #


플러그인은 공식 홈페이지인 http://www.vim.org 에서 *.vim 파일을 받아서 vim 밑의 plugin 폴더에 넣으면 작동된다.

23 기타 #


24 윈도우에서 붙여넣기 중 계단 현상 방지 #

:set paste


줄 합치기(라인의 끝에서 delete)J


25 UTF-8 파일 열어보기 #

set tenc=korea 
set enc=utf-8 

26 euc-kr 로 되어 있는 파일을 utf-8 환경에서 편집하기 #

:e ++enc=euc-kr

27 ^M 을 안보이게 하기 #

:set ff=unix

위의 명령을 하면 바꾼다. 그 후 :wq 로 저장하면 된다.

28 나중에 편집할 것 #

c : action like dmotion, but it changes mode to insert mode
change upper case and lower case : ~
in find action, next character is special meaning : *[]^%?~$
regular expression : the$ --> 줄의 끝에 있는 the 를 찾아라.
			include^ --> 줄의 끝에 있는 include 를 찾아라.
			^$ --> find the empty line
			. --> match any single character

marks :
	set mark : ma, mb, mc ......
	move to mark : `a, `b, `c, `"(Move to first line in the file) ...
	delete to mark : d`a
	show all marks : :marks

exit this file and open new file : :vi filename.ext

when editing multiple file :
	show now editing file list : :args
	next file : :next
	previous file : :prev
	first file : :rewind
	last file : :last



Window
	split : :split
	splie line up : count[Ctrl+W]-
	splie line down : count[Ctrl+W]+
	splie line same : count[Ctrl+W]=
	next window : Ctrl+WW