dev-os

[Linux] vi & vim

검은바람 2014. 1. 16. 17:06
반응형

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의 특징

장점

 

  1. 키보드로 모든것을 할 수 있다.(처음 시작하는 사람들에게는 치명적인 단점이다.)
  2. 가볍다. 하지만 매우 많은 기능이 있다.
  3. 사용하면 할 수록 재미있다.

단점

 

  1. 키보드 만을 사용한다.
  2. 단축키가 매우 많다.
  3. 처음 사용자들은 사용하기가 매우 힘들다.

3. vi의 모드(mode of vi)

  1. 명령모드(command mode)
  2. ex모드
  3. 입력모드
  4. ex모드 <=> 명령모드 <=> 입력모드

즉 ex모드에서 입력모드로 가기위해서는 명령모드를 거쳐서 가야한다. 모드라고해서 거창한것은 없다. 단지 "ESC" 키 를 한번 누르는것이 전부다.

4. vi의 명령(command of vi)

ㄱ. 파일관련 단축키

 

  1. w filename.xxx : 쓰기(write)
  2. w >> filename.xxx : 파일에 덧붙여서 저장>
  3. q : 종료(quit)
  4. q! : 저장하지 않고 종료
  5. e filename.xxx : 열기(open)
  6. wq! : 저장하고 종료하기

ㄴ. 입력모드 전환 키

 

  1. a : 커서 위치의 다음칸부터 입력
  2. A : 커서 행의 맨 마지막부터 입력
  3. i : 커서 위치부터 입력
  4. I : 커서 행의 맨 처음부터 입력
  5. o : 커서 행의 다음행에 입력
  6. O : 커서 행의 이전행에 입력
  7. s : 커서 위치의 한 글자를 지우고 입력
  8. cc : 커서 위치의 한 행을 지우고 입력

ㄷ. 이동(move)

 

  1. h : 왼쪽
  2. l : 오른쪽
  3. j : 아래
  4. k : 위
  5. w : 다음 단어의 첫글자로 이동
  6. b : 이전 단어의 첫글자로 이동
  7. $ : 커서 행의 맨 마지막으로 이동
  8. ^ : 커서 행의 맨 처음으로 이동 
  9. + : 다음행의 첫 글자로 이동
  10. - : 이전행의 첫 글자로 이동 
  11. ( : 문장의 처음으로 이동
  12. ) : 문장의 마지막으로 이동
  13. { : 문단의 처음으로 이동
  14. } : 문단의 마지막으로 이동 
  15. H : 커서를 화면의 맨 위로 이동
  16. M : 커서를 화면의 가운데로 이동
  17. L : 커서를 화면의 마지막으로 이동 
  18. z : 현재 행을 화면의 맨 위로 이동
  19. z. : 현재 행을 화면의 중앙으로 이동
  20. z- : 현재 행을 화면의 최하단으로 이동 
  21. [n]H : 커서를 현재 화면의 [n]행으로 이동
  22. [n]L : 커서를 현재 화면의 아래서 [n]행으로 이동 
  23. ctrl + u : 반 화면 위로 스크롤
  24. ctrl + d : 반 화면 아래로 스크롤 
  25. ctrl + b : 한 화면 위로 스크롤
  26. ctrl + f : 한 화면 아래로 스크롤 
  27. gg : 문서의 맨 첫 행으로 이동
  28. G : 문서의 맨 마지막행으로 이동
  29. [n]G : 문서의 [n]번째 행으로 이동
  30. [n] : 문서의 [n]번째 행으로 이동 

ㄹ. 삭제

 

  1. x, dl : 커서위치의 글자 삭제
  2. X : 커서 바로 앞의 글자 삭제
  3. dw : 한 단어를 삭제
  4. d0 : 커서 위치부터 행의 처음까지 삭제
  5. D, d$ : 커서 위치부터 행의 끝까지 삭제
  6. dd : 커서가 있는 행을 삭제
  7. dj : 커서가 있는 행과 그 다음 행을 삭제
  8. dk : 커서가 있는 행과 그 앞 행을 삭제

ㅁ. 복사 & 붙여넣기

 

  1. yw : 커서가 있는 단어를 복사한다.
  2. yy : 커서가 있는 줄을 복사한다.
  3. v : 현재 커서부터 블록을 시작한다.
  4. y : 블록이 되어있는 부분을 복사한다.
  5. p : 현재 커서가있는곳에 붙여 넣는다.

ㅂ. 잘라내기

잘라내기를 이해하기위해서는 vi의 레지스터를 알아야 한다. vi는 총 17개의 레지스터를 가지고 있다. 일단 삭제명령으로 지운 글자들은 순서대로 레지스터로 이동한다. 그러므로 p를 눌러주면 삭제된 글자들이 붙여넣기가 된다.

ㅅ. 레지스터

윈도우에서 말하는 클립보드와 같은것이다.

  1. reg : 레지스터에 있는 내용을 볼 수 있다.
  2. "[n]p : [n]번 레지스터에 있는 값을 현재 커서위치에 붙여넣는다.

o. 블록

 

  • 블록은 v키를 누른뒤 커서를 이리저리 움직이면 설정된다.
  • 직사각형의 영역을 지정하기 위해서는 "ctrl + v"를 누르면 된다.
  1. ~ : 대소문자 전환
  2. d : 삭제
  3. y : 복사
  4. c : 치환(바꾸기)
  5. < : 앞에 탭 제거
  6. > : 앞에 탭 삽입

선택된 영역에 대하여 ex명령

  1. J : 행을 합침
  2. U : 대문자로 만듦
  3. u : 소문자로 만듦

ㅈ. 되돌리기와 되살리기

  1. u : 되돌리기(undo) 윈도우에서 ctrl + z 와 같다.
  2. ctrl + r 되살리기 지워진것을 다시 살린다.>

ㅊ. 문자열 찾기

 

  1. /[찾고자하는 문자열] : 아래로가면서 문자열을 찾는다.
  2. ?[찾고자하는 문자열] : 위로 올라가면서 문자열을 찾는다.
    • n : 다음 문자열
    • N : 이전의 문자열

ㅋ. 문자열 치환

 

  1. %s/old/new/g : 아래로 가면서 문서에 있는 모든 old문자열을 new로 바꿈
  2. s/old/new/ : 아래로 가면서 제일 처음 매칭되는 행의 문자열을 치환
  3. 2,4s/old/new/g : 2행에서 4행사이에 매칭되는 문자열을 치환한다.
  4. -1,+3s/old/new/g : 현재 커서에서 위로1줄 아래로 3줄 범위내의 문자열을 치환
  5. %s/old/new/ : 문서의 전체를 조사하되 한행에서는 처음 만나는 문자열만 치환
  6. %s/old/new/gc : 치환여부를 물어본다.

Vim window split Manual

vim은 정말 알면 알수록 재미있고 신기한 에디터인것 같다. 소개할 window split기능은 여러가지로 재미있게 이용할 수 있을것이다. 아래에서 부터는 ^는 "ctrl 키와 함께 누름" 을 의미한다.

새창으로 파일 열기

:sp filename

커서의 창 이동

 

  1. ^ww 다음창으로 이동
  2. ^wt 최상위 top으로 이동
  3. ^wb 최하위 botton으로 이동
  4. ^wj 아래창으로 이동
  5. ^wk 위쪽 창으로 이동

창 닫기

 

  1. ^wc 현재창 닫기
  2. :q 현재창 닫기
  3. ^wo 현재창만 남기고 모두 닫기
  4. :only 현재창만 남기고 모두 닫기
  5. :qa 모든 창을 닫고 종료

창의 크기조절

 

  1. ^w_ 활성창 크기 최대화
  2. 10^w_ 활성창 크기를 10줄으로
  3. :res10 활성창 크기를 10줄으로
  4. ^w= 모든창 크기를 같게

창의 위치 이동

 

  1. ^wH 창을 왼쪽으로 이동
  2. ^wL 창을 오른쪽으로 이동
  3. ^wJ 창을 아래로 이동
  4. ^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 	

 

반응형