Vi editor
|
텍스트 입력 모드 |
|
범위 설정 |
|
커서 이동 | |||||||
|
i |
커서 앞에서 삽입 |
1,$ |
모든 줄 |
k |
한 줄 위로 | ||||||
|
a |
커서 뒤에서 삽입 |
1,. |
처음부터 현재 줄까지 |
j |
한 줄 아래로 | ||||||
|
o |
현재 줄 다음부터 삽입 |
.,$ |
현재부터 마지막줄까지 |
l |
오른쪽으로 | ||||||
|
O |
현재 줄 앞에서 삽입 |
.-2 |
현재부터 앞 두줄까지 |
h |
왼쪽으로 | ||||||
|
R |
텍스트가 대치 |
.+2 |
현재부터 뒤 두줄까지 |
^ |
줄의 시작으로 | ||||||
|
텍스트 지우기 |
텍스트 치환 |
$ |
줄의 끝으로 | ||||||||
|
x |
문자 |
r |
문자 |
b |
한 단어 앞으로 | ||||||
|
dw |
단어 |
cw |
단어 |
w |
한 단어 뒤로 | ||||||
|
dd |
줄 |
cc |
줄 |
Ctrl+d |
반 화면 아래로 | ||||||
|
D |
현재 줄의 끝까지 |
텍스트 붙이기 |
Ctrl+f |
한 화면 아래로 | |||||||
|
:<R>d |
블록단위의 줄 |
<R>y |
줄을 버퍼에 복사 |
Ctrl+u |
반 화면 위로 | ||||||
|
탐색 |
pu |
현재 줄 다음에 붙이기 |
Ctrl+b |
한 화면 위로 | |||||||
|
/sss |
뒤쪽으로sss탐색 |
:nnpu |
줄 nn다음에 붙이기 |
:nn |
줄번호 nn으로 | ||||||
|
?sss |
앞족으로 sss 탐색 |
파일 저장/불러오기 |
기타 | ||||||||
|
n |
마지막 탐색명령 반복 |
:w |
현재 이름으로 저장 |
Ctrl+l |
화면을 다시 그림 | ||||||
|
탐색/치환 |
:w mm |
mm으로 저장 |
:!<C> |
잠깐 <C>명령 실행 | |||||||
|
:<R>s/ sss/ ttt/ |
처음 줄만 치환 |
:e mm |
mm파일 편집 |
:q |
종료 | ||||||
|
:<R>s/ sss/ ttt/g |
모두 치환 |
:n |
다음 파일 편집 |
:q! |
저장않고 종료 | ||||||
|
Shell 사용하기 |
|
검 색 | |||
|
:!<C> |
shell명령 실행 후 Enter키로 복귀 |
f |
동일 행 검색 | ||
|
:sh |
Shell prompt실행, exit로 복귀 |
/<CR> |
순방향 점체 검색 | ||
Ctrl+z |
Vi process 중지, fg로 복귀 |
?<CR> |
역방향 전체 검색 | ||
|
화면 및 커서 이동 |
; |
동일 행 반복 검색 | |||
|
z |
현재 행을 화면의 상단으로 이동 |
N, n |
전체 행 반복 검색 | ||
|
z. |
현재 행을 화면의 중앙으로 이동 |
/^ |
검색 문자열을 행의 시작에 한정 | ||
Ctrl+E |
한 행 아래로 이동 |
/$ |
검색 문자열을 행의 마지막에 한정 | ||
Ctrl+Y |
한 행 위로 이동 |
/. |
한 문자를 나타낸다 | ||
|
H |
현재 화면의 상단으로 커서를 이동 |
/[ ] |
문자 집합, ^은 여집합 | ||
|
M |
현재 화면의 중앙으로 커서를 이동 |
/ * |
0이상의 반복을 의미 | ||
|
L |
현재 화면의 하단으로 커서를 이 |
/ \< |
패턴을 단어의 시작에 한정 | ||
|
텍스트 수정 |
/ \> |
패턴을 단어의 끝에 한정 | |||
|
r |
한 문자 치환 |
/ \ |
\ 뒤의 문자를 에스케이프 | ||
|
R |
커서 우측으로 입력되는 문자 치환 |
행 병합 / 명명 | |||
|
s |
한 문자를 여러 문자로 치환, Esc종료 |
J |
두 행을 한 행으로 | ||
|
cw |
단어 치환 |
m |
행을 a에서 z중의 하나로 표시 | ||
|
c$ |
커서부터 행의 마지막까지 치환 |
블럭 지정 및 붙여넣기 | |||
|
c^ |
행의 시작부터 커서까지 치환 |
yw |
현재 커서가 있는 단어 | ||
|
cc |
행 전체 치환 |
y$ |
현재 커서가 있는 곳에서 행의 끝 | ||
|
Vi 옵션 |
y^ |
현재 커서가 있는 곳에서 행의 시작 | |||
|
vi –r <filename> |
임시저장 파일 읽음 |
yy |
현재 커서가 있는 행의 전체 | ||
|
vi –R <filename> |
Read Only로 읽음 |
p |
붙여넣기 | ||
|
vi +n <filename*gt; |
시동시에 n번째 행을 보여줌 |
|
| ||
텍스트 복구
vi는 사용자의 마지막 9개의 삭제를 9개의 버퍼에 보관함으로써 대부분의 잘못된 삭제를 복구할 수 있다. p 명령 앞에 버퍼 번호를 주어 해당 버퍼에 있는 내용을 되살릴 수 있다.
예제) "2p, "1p
매크로
매크로는 여러가지 기본 명령을 확장해 보다 복잡한 작업을 쉽게 처리하기 위해 제공되는 기능이다.
- Buffer 매크로
vi의 a부터 z까지의 버퍼에 명령을 지정하여 실행 할 수 있다. 실행 방법은 @<buffer name>이다.
매크로 명령을 buffer에 저장하기 위해선 해당 매크로 명령을 입력 모드에서 편집한 다음
"<buffer name>D 명령을 이용해 편집된 매크로 명령을 해당 buffer에 저장한다.
예제) i\fI^[Ea\fP^[
"aD
@a
- Map
주어진 명령 문자열을 키보드의 키에 지정되도록 해주는 기능이다. 이것은 :map 명령을 사용한다.
예제) :map #1 i\fI^V<ESC>Ea\fP^V<ESC><CR>
- 삽입 모드 맵
맵은 삽입 모드 동안에는 사용할 수 없다. 삽입 모드에서 맵을 이용하기 위해선 삽입 모드 맵을
사용해야 한다. 이것은 :map! 명령을 사용한다.
예제) :map! #1 Changwon<CR>
- 약어
약어는 말 그대로 어떤 긴 문자열에 대한 약어를 지정해 주는 것으로써 좀더 문서의 편집을 쉽게
하기 위해 제공되는 기능이다. 이것은 :ab명령을 사용한다.
예제) :ab ux UNIX(tm)<CR>
환경 설정 :set <option>
autoindent
autoprint
autowrite
beautify
directory=/var/tmp
edcompatible
errorbells
noexrc
flash
hardtabs=8
ignorecase
lisp
list
magic
modelines
number
novice
optimize
paragraphs=IPLPPPQPP Lipplpipnpb
prompt
readonly
redraw
remap
report=5
scroll=17
sections=NHSHH HUuhsh+c
shell=/bin/csh
shiftwidth=4
showmode
slowopen
tabstop=4
taglength=0
tags=tags /usr/lib/tags
tagstack
term=sun-cmd
terse
timeout
ttytype=sun-cmd
warn
window=34
wrapscan
wrapmargin=0
writeany
주요 vi 옵션
autoident(ai) : 새로운 각 행을 이전 행 또는 새로운 행이 생길 때 커서가 어떤 위치에 자동으로 인덴트
되도록 한다. c 프로그래밍할 때 유리하다.
autowrite(aw) : 다른 화일로 옮겨갈 명령을 실행하기 전 또는 쉘로 잠시 나오기 전에 현재 화일을 강제
로 저장한다.
ignorecase(ic) : 검색과 대치시 대소문자 구분을 무시한다.
magic : 모든 정규식 문자를 사용할 수 있게 한다.
mesg : 문서 편집 동안 메시지가 화면에 출력되는 것을 허용한다.
number(nu) : 문서의 행에 행번호를 붙여 화면에 출력한다.
showmach(sm) : )나 {를 입력할 때마다 자동으로 커서가 대응하는 (나 }로 이동하여 1초동안 머문다.
showmode : 상태 행에 현재 편집 모드를 출력한다.
wrapscan(ws) : vi가 매번 화일 전체를 검색하도록 한다.
검색은 항상 현재 행부터 시작해서 화일의 끝으로 진행된다.
예제) 문서의 각행에 행번호를 출력하는 예제 :set number<cR>
번호 출력을 해제하는 예제 :set nonumber<CR>
현재 vi 모드를 출력하는 예제 :set showmode
