Posted on 2013/04/04 16:50
Filed Under 리눅스기술문서/팁앤테크 조회수: view 7127


발췌 : http://hacheo.egloos.com/3307158


vi 명령어, vi 단축키, vi(Visual Editer), vim


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


장점


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


키보드 만을 사용한다.
단축키가 매우 많다.
처음 사용자들은 사용하기가 매우 힘들다.
3. vi의 모드(mode of vi)


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


4. vi의 명령(command of vi)


ㄱ. 파일관련 단축키


w filename.xxx : 쓰기(write)
w >> filename.xxx : 파일에 덧붙여서 저장>
q : 종료(quit)
q! : 저장하지 않고 종료
e filename.xxx : 열기(open)
wq! : 저장하고 종료하기
ㄴ. 입력모드 전환 키


a : 커서 위치의 다음칸부터 입력
A : 커서 행의 맨 마지막부터 입력
i : 커서 위치부터 입력
I : 커서 행의 맨 처음부터 입력
o : 커서 행의 다음행에 입력
O : 커서 행의 이전행에 입력
s : 커서 위치의 한 글자를 지우고 입력
cc : 커서 위치의 한 행을 지우고 입력
ㄷ. 이동(move)


h : 왼쪽
l : 오른쪽
j : 아래
k : 위
w : 다음 단어의 첫글자로 이동
b : 이전 단어의 첫글자로 이동
$ : 커서 행의 맨 마지막으로 이동
^ : 커서 행의 맨 처음으로 이동
+ : 다음행의 첫 글자로 이동
- : 이전행의 첫 글자로 이동
( : 문장의 처음으로 이동
) : 문장의 마지막으로 이동
{ : 문단의 처음으로 이동
} : 문단의 마지막으로 이동
H : 커서를 화면의 맨 위로 이동
M : 커서를 화면의 가운데로 이동
L : 커서를 화면의 마지막으로 이동
z : 현재 행을 화면의 맨 위로 이동
z. : 현재 행을 화면의 중앙으로 이동
z- : 현재 행을 화면의 최하단으로 이동
[n]H : 커서를 현재 화면의 [n]행으로 이동
[n]L : 커서를 현재 화면의 아래서 [n]행으로 이동
ctrl + u : 반 화면 위로 스크롤
ctrl + d : 반 화면 아래로 스크롤
ctrl + b : 한 화면 위로 스크롤
ctrl + f : 한 화면 아래로 스크롤
gg : 문서의 맨 첫 행으로 이동
G : 문서의 맨 마지막행으로 이동
[n]G : 문서의 [n]번째 행으로 이동
[n] : 문서의 [n]번째 행으로 이동
ㄹ. 삭제


x, dl : 커서위치의 글자 삭제
X : 커서 바로 앞의 글자 삭제
dw : 한 단어를 삭제
d0 : 커서 위치부터 행의 처음까지 삭제
D, d$ : 커서 위치부터 행의 끝까지 삭제
dd : 커서가 있는 행을 삭제
dj : 커서가 있는 행과 그 다음 행을 삭제
dk : 커서가 있는 행과 그 앞 행을 삭제
ㅁ. 복사 & 붙여넣기


yw : 커서가 있는 단어를 복사한다.
yy : 커서가 있는 줄을 복사한다.
v : 현재 커서부터 블록을 시작한다.
y : 블록이 되어있는 부분을 복사한다.
p : 현재 커서가있는곳에 붙여 넣는다.
ㅂ. 잘라내기


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


ㅅ. 레지스터


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


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


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


J : 행을 합침
U : 대문자로 만듦
u : 소문자로 만듦
ㅈ. 되돌리기와 되살리기


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


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


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


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


새창으로 파일 열기


:sp filename


커서의 창 이동


^ww 다음창으로 이동
^wt 최상위 top으로 이동
^wb 최하위 botton으로 이동
^wj 아래창으로 이동
^wk 위쪽 창으로 이동
창 닫기


^wc 현재창 닫기
:q 현재창 닫기
^wo 현재창만 남기고 모두 닫기
:only 현재창만 남기고 모두 닫기
:qa 모든 창을 닫고 종료
창의 크기조절


^w_ 활성창 크기 최대화
10^w_ 활성창 크기를 10줄으로
:res10 활성창 크기를 10줄으로
^w= 모든창 크기를 같게
창의 위치 이동


^wH 창을 왼쪽으로 이동
^wL 창을 오른쪽으로 이동
^wJ 창을 아래로 이동
^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
Writer profile
author image
-아랑 -
2013/04/04 16:50 2013/04/04 16:50

트랙백 주소 : 이 글에는 트랙백을 보낼 수 없습니다

About

by 서진우
Twitter :@muchunalang

Counter

• Total
: 4360767
• Today
: 435
• Yesterday
: 1813