[vim] 윈도우용 vim 창 크기 설정하기!

[vim] 윈도우용 vim 창 크기 설정하기!


윈도우용 vim(gvim)의 창 크기를 설정하려면, lines와 columns의 설정값을 바꾸어 주시면 됩니다. 예를 들어, 90 column에 60 line의 윈도우를 사용하시려면 .vimrc에 아래와 같이

set lines=60
set columns=90

두줄 간단하게 삽입하시면 새로운 창이 뜰 때, 위 속성대로 창크기가 결정됩니다!

참고로 시작 시 윈도우의 창위치를 결정하고 싶으시면
winpos 700 0
이런 식으로 x좌표와 y좌표를 지정하시어 시작 위치를 결정하실 수도 있습니다.
이래서 vim을 안 좋아할 수가 없습니다.

Daum 블로거뉴스
블로거뉴스에서 이 포스트를 추천해주세요.

[vim] Editing Multiple files with vim

[vim] Editing Multiple files with vim


vim으로 여러 파일을 편집하면 레지스터에 복사한 내용을 그대로 옮길 수도 있고, 전에 수행했던 명령들을 반복할 수 도 있고, 여러 가지 장점이 있습니다. 여러 파일을 편집하려면 다음과 같이 vim 시작 시에 파일을 여러 개 써주시면 됩니다.

  $vim file1 file2 file3

또는 파일 편집 중에 다른 파일을 편집하고자 할 때에는 다음과 같이 하시면 됩니다.

  :e wanttoeditfile

파일간 이동은 다음과 같이 하시면 됩니다.
 
  :bp!

또는

  :bn!

또는

  :b1!
  :b2!
  :b3!
  :b4!
  :b5!
  :b6!


등등으로 파일들간을 요리조리 이동하실 수 있습니다. 여기서 명령을 살펴보면 b는 buffer를 의미합니다. 여기서 버퍼는 파일이 열리게 되면 버퍼가 하나 할당되어 버퍼에 파일이 담겨집니다. '파일을 담는 통'이라고 생각하시면 되겠습니다. p는 previous, n은 next. 따라서 위 명령은 이전 버퍼로 가라, 다음 버퍼로 가라 버퍼 1번으로, 3번으로....뭐 이런식이 되겠습니다.

저는 위 내용을 .vimrc에 아래와 같이 넣어두고 ,[숫자] 형식으로 사용하고 있습니다. 아주 유용합니다. ^^;

  map ,1 :b1<CR>
  map ,2 :b2<CR>
  map ,3 :b3<CR>
  map ,4 :b4<CR>
  map ,5 :b5<CR>
  map ,6 :b6<CR>
  map ,7 :b7<CR>
  map ,8 :b8<CR>
  map ,8 :b8<CR>
  map ,9 :bp<CR>
  map ,0 :bn<CR>

파일을 편집하시다가 <현재파일명.new>파일로 저장하고 싶으시면 아래와 같이 하시면 됩니다.

  :w %.new

여기서 %는 현재파일명을 나타내는 레지스터입니다. 또한 파일을 두개만 여시고 왔다갔다 하실 때에는 아래와 같이

  :e#

명령으로 쉽게 변경하실 수도 있습니다. 이거랑 똑같은 것이 <Ctrl+^>입니다. 얘는 <ctrl><shift><숫자6>입니다.

또한 편집 도중 너무 엄하게 흘러와서 다시 파일을 처음 연 상태로 되돌리고 싶으실 땐

  :e!

명령으로 쉽게 되돌리실 수 있습니다. ^^;

Daum 블로거뉴스
블로거뉴스에서 이 포스트를 추천해주세요.

vim 설정[.vimrc]

vim 설정[.vimrc]


color vc

syn on
set history=500             " keep 100 lines of command line history
set hlsearch
set ruler
set tabstop=4
set shiftwidth=4
set nobackup
set nocompatible
set fileencoding=korea
"set enc=utf-8
set showmatch
set is
set dip=iwhite,icase,vertical

"C indent 설정하기
set nocp incsearch
set cinoptions=:0,p0,t0
set cinwords=if,else,while,do,for,switch,case
set formatoptions=tcqr
set cindent
"set ic

"below script for match it
"source $VIMRUNTIME/macros/matchit.vim
"runtime macros/matchit.vim

map <F1> :q!<CR>
map <F3> :nohlsearch<CR>
map <F4> :set number!<CR>
map <F5> :set ts=8<CR>
map <F7> I/* <ESC>A */<ESC>
map <F8> :s/\/\* \(.*\) \*\//\1/
map <F9> :w!<CR>
map <F10> :set columns=181<cr><C-w>=zR]c
map ; ebve<C-Insert>

map ,1 :b1<CR>
map ,2 :b2<CR>
map ,3 :b3<CR>
map ,4 :b4<CR>
map ,5 :b5<CR>
map ,6 :b6<CR>
map ,7 :b7<CR>
map ,8 :b8<CR>
map ,8 :b8<CR>
map ,9 :bp<CR>
map ,0 :bn<CR>

imap <C-j> <DOWN>
imap <C-k> <UP>
imap <C-h> <LEFT>
imap <C-l> <RIGHT>
"imap <TAB> <Space><Space><Space><Space>

map -
map =
map <space> l
vmap <space> zf

autocmd FileType html set formatoptions+=tl
autocmd FileType css set smartindent
autocmd FileType html,css set noexpandtab tabstop=2

abbr p%      printf("\n", );
abbr inculde include
abbr q1 q!
abbr Q1 q!
abbr Wq wq
abbr WQ wq
abbr wQ wq
abbr wq1 wq!
abbr WQ1 wq!
abbr Wq1 wq!
abbr wQ1 wq!
abbr #b /************************************************************
abbr #e ************************************************************/
abbr THe The
abbr ds diffs
abbr 2html runtime! syntax/2html.vim

set noeb
set commentstring=//%s
set lines=50
set columns=90
winpos 700 0
"set tags=D:\p4\KTF\src\tags
set tags=D:\depot\dp\shibumi\releases_7.2.7-br\src\tags
set path=c:\Program\ Files\\Microsoft\ Visual\ Studio\ 8\\VC\PlatformSDK\include


Daum 블로거뉴스
블로거뉴스에서 이 포스트를 추천해주세요.

[vim] vim종료의 꼼수

[vim] vim종료의 꼼수


vim을 사용하면서 자주 사용하는 명령들 중 수위를 차지하는 명령이 바로 vim의 종료, 즉 열려 있는 파일의 닫기 명령입니다. 파일을 닫기 위해서 사용하는 꼼수로는 다음과 같은 것이 있습니다.
1. 저장하고 종료하기
2. 저장하지 않고 종료하기
3. 종료하면서 발생하는 오타방지하기

vim

1. 저장하고 종료하기
저장하며 종료하기 위한 꼼수로는 map을 씁니다. 다음과 같은 명령을 .vimrc파일에 넣어두고 <F9>키를 누르면, 저장하고 종료하기가 실행됩니다.
map <F9> :wq!<CR> "<F9>키를 누르면 저장하고 끝내라!

2. 저장하지 않고 종료하기
저장하지 않고 종료하기 위한 꼼수로도 map을 씁니다. 다음과 같은 명령을 .vimrc파일에 넣어두고 <F1>키를 누르면, 저장하지 않고 종료하기가 실행됩니다.
map <F1> :q!<CR> "<F1>키를 누르면 저장하지 말고 끝내라!

3. 종료하면서 발생하는 오타 방지하기
종료하면서 발생하는 오타를 방지하기 위한 꼼수로는 abbr을 씁니다. 다음과 같은 명령을 .vimrc파일에 두고 사용하다 보면 가끔씩 발생하는 오타명령시 예를 들어 :wq 명령으로 종료를 해야하는데 :Wq명령을 치게 되는 경우(':'이 shift key를 누르면서 쳐야되는 글자이기 때문에 이와 같은 실수가 꽤나 자주 발생하는 편입니다.) abbr이 자동으로 Wq를 wq로 바꾸어 주기 때문에 vim을 사용하는데 있어 흐름을 깨지 않고 편하게 사용할 수 있습니다. 덧붙여 말씀드리면 Wq라는 단어를 사용하는 경우가 거의 없기 때문에 abbr로 지정을 하고 사용해도 큰 불편을 느끼지 못한다는 사실!

abbr q1 q!
abbr Q1 q!
abbr Wq wq
abbr WQ wq
abbr wQ wq
abbr wq1 wq!
abbr WQ1 wq!
abbr Wq1 wq!
abbr wQ1 wq!

vim을 엊그제부터 사용하기 시작한 초보자를 위한 참고사항!
- map은 해당 키를 사용자가 지정한 명령으로 바꾸어 주는 기능입니다.
- abbr은 사용자가 입력모드에서 입력시 복잡하고 긴 단어를 짧고 간결하게 바꾸어주는 기능입니다.
- <CR>은 map명령에서 Carriage Return을 의미합니다. 이는 ^M(이거 한글자입니다)과 같은데, 여기서 ^M은 Ctrl+V + Ctrl+M의 조합으로 입력할 수 있습니다.


Daum 블로거뉴스
블로거뉴스에서 이 포스트를 추천해주세요.

vim 초 간단 매뉴얼

vim 초 간단 매뉴얼


0. vim의 특징

- 무한 Undo & redo 기능
- 커맨드 및 레지스터 저장기능
- syntax hilight기능
- split기능

1. 이동

  t/T f/F | ^$

- 글자단위이동

  [0]f[A]: 현재 라인에서 가장 가까운 해당글자위로 이동(오른쪽)
  [0]F[A]: 현재 라인에서 가장 가까운 해당글자위로 이동(왼쪽)
  [0]t[A]: 현재 라인에서 가장 가까운 해당글자 바로 전 이동(오른쪽)
  [0]T[A]: 현재 라인에서 가장 가까운 해당글자위로 이동(왼쪽)
  [0]|: 해당 column으로 이동(ex 30| : 30번째 column으로 이동)


- vi에서는 대문자 명령과 소문자 명령 사이에는 반대의 뜻이 담겨 있습니다!
- [0] : 숫자를 입력합니다.
- [A] : 글자를 입력합니다.
ex) 4tJ : tJ를 4번 반복합니다. 따라서 현재 라인의 4번째 J바로 앞으로 커서가 이동합니다.
- | : 백스페이스바로 및 또는 바로 왼쪽에 있는 \와 같이 있는 글자입니다.
 

^: 현재라인의 시작부분으로 이동(공백무시)
0: 현재라인의 시작부분으로 이동(공백포함)
$: 현재라인의 끝부분으로 이동

워드단위이동(공백기준)
w: 다음 단어의 처음으로
b: 이전 단어의 처음으로
e: 단어의 끝으로

글자단위의 이동은 매크로 작성의 기본이 됩니다. 매크로작성시 가변적인 부분들은 위 글자단위 이동등을 통하여 절대적인 명령으로 매크로를 기록해야 합니다. 예를들어
this is a test.
this is a new test.
위 문장을 printf문으로 싸는 매크로를 작성시 hhhhhhlllll이런 식으로 이동하게 되면 윗 예제 아래 예제에 동일한 매크로를 작성할 수 없게 됩니다. 따라서 ^, $등으로 이동해서 매크로를 작성해야 가변적인 특성들을 아우르는 매크로를 만들 수 있습니다.
ex) 현재 라인을 printf("[현재라인]\n");으로 바꾸어 주는 매크로 작성 시
  ^iprintf("<ESC>a\n");<ESC>


2. 블럭지정


- 복사, 삭제, 변경등 편집단위를 묶기 위해 블럭지정
  v:      글자단위 블럭지정
  V:      라인단위 블럭지정
  Ctrl+v: 블럭단위 블럭지정

 ※ gv: 이전에 블럭 지정해 둔 부분 다시 블럭 지정하기

3. vimrc & viminfo


- $HOME/.vimrc
  vi가 수행시 실행하는 초기화 명령이 들어 있는 파일
  여기에 map이나, abbr set 명령등 자신이 vim수행시 필요한 사항들을 기록해둔다.

- $HOME/.viminfo
  vi가 수행하는 동안 필요한 임시내용들을 저장하는 파일.
  찾기나, ex 명령, 버퍼등의 정보가 여기에 저장되므로 반복 입력시 처음부터 다 입력할 필요 없이 화살표를 통해 이전 명령들을 검색할 수 있게 됨.

4. map

- map 은 자기만의 명령을 만들어 냄.
ex) map ; %
  map <F1> :q!<CR>
  map <F3> :set nu!<CR>
  map :%!sort "현재 문서를 알파벳 순으로 정렬하기
- vmap은 visual모드에서만 사용가능한 맵
ex) vmap <space> zf  "블럭지정한 부분을 fold기능으로 묶어버림
- imap은 insert모드에서만 사용가능한 맵
ex)
  imap <C-j> <DOWN>  "Control+j는 입력모드에서 아래화살키로 변경
  imap <C-k> <UP>
  imap <C-h> <LEFT>
  imap <C-l> <RIGHT>
  imap <TAB> <Space><Space><Space><Space>
ex)   
  map <f1> :set nu!
  map <f2> :wq!
  map <f3> :set ic!
  map <f6> I/* <ESC>A */<ESC>
  map <f7> :s#/\* \(.*\) \*/#\1<CR>:nohlsearch<CR>


5. abbr

- 입력시 지정해 놓은 글자로 변경됨!
ex)
  abbr q1 q!
  abbr Q1 q!
  abbr Wq wq
  abbr p# printf("\n");
  abbr inculde include
  abbr THe The
  abbr em@ email:butcool@hitel_net
  abbr #b /**************************************************************
  abbr #e **************************************************************/


6. macro

- macro기록법
  q[버퍼명]  -> macro기록시작
  명령들 수행
  q  -> macro 기록 종료
- macro 수행
  @[버퍼명]
  여기서 버퍼명:a-z
- macro는 아래의 global command, norm mode command와 결합하면 아주 유용하게 사용할 수 있음.


7. global command

- g
  Execute the Ex Command on the lines within where pattern matches.
- v
  Execute the Ex Command on the lines within where pattern does not match.
ex) 전체 문서에서 특정패턴을 포함한 라인만을 제거하거나, 또는 그 반대로 특정패턴을 포함한 라인만 남겨놓고 나머지는 모두 제거할 때.
  %g/지우는라인/d
  %v/남기는라인/d


8. norm mode command

- Execute Normal mode commands
:norm WhateverYouWantToDo

ex) :norm Iprintf("<ESC>A\n");<ESC>
현재 라인을 printf로 감싸주는 명령

9. 외부명령의 수행

- ex mode에서 !로 수행함.
  :%!sort   -> 전체문서를 정렬하기.
  :%!uniq  -> 전체문서중 중복된 부분 삭제하기.
  :r !ls -> 현재 커서 위치에 ls한 결과를 삽입하기
  :r !pwd -> 현재 커서 위치에 pwd한 결과를 삽입하기
※ex mode에서 'r'은 덧붙임 기능.

10. 여러파일의 편집 vi `grep -l abc *.c`

:b1<CR>
:b2<CR>
.
.
.
:bn<CR>
:bp<CR>

*참고
shell에서 ``는(ESC밑 물결무늬모양 키) ''(Enter옆 따옴표)와는 다른데, 이것은 쉘에서 명령입력 시
[``으로 감싼 명령을 실행한 결과를 가지고 명령을 수행해라] 라는 의미입니다.
예를 들어 date +%y%m%d를 쉘에서 수행하게 되면 오늘 날짜의 연월일을 출력하게 됩니다. 이를 mkdir `date +%y%m%d`를 쉘에서 수행하게 되면 오늘날짜의 디렉토리가 생성되게 됩니다.


11. 자동완성기능

- 자동완성 기능이란 입력모드에서 문서의 매칭되는 단어들을 자동으로 완성 시켜주는 기능.
  잘못입력된 변수명으로 인한 오류를 줄이기 위해
  긴 단어 입력시 손가락 아픔을 방지하기 위해
- 사용법
  단어를 입력하다 귀찮을 때 아래와같은 명령 수행
Ctrl+p(previous)
Ctrl+n(next)

12. fold기능

- 소스코드등의 중요하지 않은 부분들을 묶어서 간단하게 표시하고자 할 때 사용함.
- 사용법
  zo : 닫혀있는 폴드 열기
  zc : 폴드 닫기
  zf : 폴드 생성하기
  zd : 현재 위치의 폴드 삭제하기
  zR : 현재 문서의 모든 폴드 열기
  ZM : 현재 문서의 모든 폴드 닫기
  zE : 현재 문서의 모든 폴드 삭제
  zD : 현재 위치의 겹쳐진 폴드 삭제
  set fdm=marker
  ;폴드를 마커에 의존해서 동작하게 한다. 기본적으로는 ,의 짝으로 이루어지게 되어 있음.
  set fdm=marker를 .vimrc파일에 넣어두고 사용하게 되면, 파일을 열 때마다 설정할 필요가 없음.
  또는 /* vim: set fdm=marker: */ 이런 식으로 문서의 맨 처음이나 맨 끝에 두게 되면, 자동으로 설정되어, set fdm=marker라고 설정해 두지 않아도 vim 구동시 자동으로 동작하게 됨.


13. split기능


- 화면을 가로 또는 세로로 쪼개서 여러 파일을 동시에 편집할 때 또는 다른 파일을 참조하면서 코딩시에 유용하게 사용할 수 있는 기능.

  :sp 가로로 쪼개기
  :vsp 세로로 쪼개기
  ctrl+w s 가로로 쪼개기 다른 방법
  ctrl+w v 세로로 쪼개기 다른 방법
  ctrl+ww  쪼개진 창 간 이동
  ctrl+w=  쪼개지 창 사이즈 동일하게
 
  쪼개진 창사이즈 조절(세로)
  ctrl+w [0]+
  ctrl+w [0]-
 
  쪼개진 창사이즈 조절(가로)
  ctrl+w [0]>
  ctrl+w [0]<


14. diff기능


- vim의 split기능을 이용하여 두 파일간 차이를 한눈에 쉽게 비교할 수 있다.
  vi -d file1 file2
 
- set dip=iwhite,icase
  ;vim으로 diff시 unix diff의 -i -b 옵션 같은 기능
  공백무시, 대소문자 무시 비교 시 사용


15. register(= named buffer)

- 윈도우의 클립보드와 같은 기능으로, vim에서 사용가능한 버퍼는 알파벳[a-z]까지 26개 및 다양한 특수 문자 및 숫자에 특수한 기능으로 설정되어 있다.

  ctrl+R + W%"
  ctrl+r,w : 현재 커서 밑 단어
  ctrl+r,% : 현재 파일 명
  ctrl+r," : 현재 버퍼 내용

- :register or :reg
    ;현재의 register내용을 보여 줌.
  ""   ^[
  "0~9 
  "a  
  "s  
  "w  
  "-   ^[
  ".  
  ":   register
  "%   DBBG_rep.ch
  "/   prep_map


16. vim+ctags

- vim과 ctags는 유닉스 환경에서 프로그래밍 시 없어서는 안될 필수의 기능이다.
  ctags는 소스파일을 읽어서 각종 변수 및 구조체 함수의 위치를 태그로 만들어 tags라는 파일로 생성해서 이를 vim에서 함수 및 변수명을 통한 파일간 이동을 쉽게 해주는 툴이다.
- tags파일 생성법
ctags -R

  ctrl+] -> tag로 이동
  ctrl+t ->
  vi -t tagname


17. 정규표현식

- 특정한 패턴을 기술하기 위한 Meta 언어를 이용하는 패턴 묘사.

  ^ 행의 시작에서 정규 표현식의 첫번째 문자가 매치(대괄호 안에서는 부정의 의미)
  . 개행문자를 제외한 임의의 문자 한 개와 매치
  [] 대괄호 안에 있는 임의의 문자와 매치하는 문자 클래스
  * 바로앞에 있는 패턴이 0번 혹은 그 아상 반복되는 것
  $ 행의 끝에서 정규표현식의 마지막 문자가 매치
  \+ 앞에 있는 정규 표현식이 한 번이나 그 이상 반복하여 매치할 수 있음을 의미.
  A\{1,3\}
    ;문자 A가 한번에서 연속 세번까지 나타난 문자열 매치
  \| 앞에 있는 정규 표현식 혹은 뒤에 있는 정규 표현식에 매치
  \< 단어의 시작
  \> 단어의 끝
  \( \) 정규표현식 여러 개를 새로운 정규표현식 한 개로 묶는다.
  \s 공백(탭, 스페이스)
  \d 숫자


18. #*


- 커서밑 단어 쉽게 찾기
  # == ?\<ctrl+r ctrl+w\>
  ;커서밑 단어와 같은 단어 위로 탐색
  * == /\<ctrl+r ctrl+w\>
  ;커서밑 단어와 같은 단어 아래로 탐색


19. 파일간 복사


1) register를 이용하는 방법.
2) split기능을 이용한 방법.
3) :r 명령을 이용한 방법.


20. undo & redo


- vim에서는 무한 undo & redo가 가능하다.
undo : u
redo : ctrl+r


21. 숫자의 증감 ctrl+a ctrl+x


- 숫자를 자동으로 증감 시키는 기능
add
extract
-사용법
101ctrl+a
100ctrl+x


22. ctrl+o <TAB>


- ctrl+o : 찾기 등의 명령으로(마커이동) 이동한 곳으로 이동
- <TAB>  :  되돌아가기


23. set syn=c


- 확장자가 다른 파일 강제 syntax할당
  확장자가 틀려서 syntax 칼라매핑이 안될 때.


24. VIMRUNTIME


echo $VIMRUNTIME
help file, syntax file, plugin file등이 있음.
.profile에 export VIMRUNTIME=...로 추가


-----------------------------------------------
- 백문이 불여일타!
- vi는 배우는 것이 아니라 몸으로 익히는 것이다!
-----------------------------------------------
-- vim: set fdm=marker:


Daum 블로거뉴스
블로거뉴스에서 이 포스트를 추천해주세요.


블로그 이미지

Beta1.0

- 붕탱구

Notices

  1. 요약

Calendar

«   2008/11   »
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            

Site Stats

Total hits:
206916
Today:
236
Yesterday:
401