vi
문서 편집
1.
기본 편집 기능
1) 예제 화일 만들기
$ vi ex1
: ex1 이라는 화일을 만든다.
a
: append의 약자로 문서 입력 모드로 들어간다.(화면에 보이지
않음,
한 번만 입력)
John
: vi 편집
has
seen
some
mice
and
men.
<ESC>
: 명령모드로 되돌아가기 위해서
ZZ
: 작업한 것을 저장하고 셸로 되돌아 간다. (화면에 보이지 않음)
$ cat ex1 : 방금 작업한 ex1 파일의 내용
확인
2) 화일 안에서의 커서 이동
h : 한 문자 왼쪽으로 이동
j : 한 줄 아래로 이동
k : 한 줄 위로 이동
l : 한 문자 오른쪽으로 이동
G : G앞에 있는 줄 번호로 이동 ex) 1G : 첫번째 줄로 이동
앞에 줄 번호가 없으면 파일 끝으로 이동
명령 앞의 숫자는 명령을 반복적으로 수행함 ex) 4j : 4줄 아래로 이동
ex) 큰 파일의
예(사전)
$ vi -R /usr/dict/words
: -R(read-only)로 words라는 단어 사전을 연다.
-R는
화일이 실수로 수정되는 일을 막는다.
G
: 파일 끝으로 이동
1G
: 파일의 처번째 줄로 이동
^F(ctrl+f)
: 한 화면 다음으로 이동
^B
: 한 화면 앞으로 이동
^D
: 화면 반만큼 아래로 이동
^U
: 화면 반만큼 위로 이동
// 소문자 f, b, d, u로 실습하세요.
w
: 한 단어 다음(단어 첫문자)으로 이동
b
: 한 단어 앞으로(단어 첫문자)이동
e
: 한 단어 다음(단어 끝)으로 이동
3) 문서의 첨가와 삽입
a
: 현재 커서 다음에 문서 추가
i
: 현재 커서 앞에 문서 추가
o
: 현재 줄 다음에 문서 추가
O
: 현재 줄 앞에 문서 추가
<ESC>
: 명령모드로 가는 명령어
<CR> : Enter키
ex)
$vi
ex2
a
: 현재 커서 다음에 문서 추가
Sam
Sam's
fleas a's<ESC>
fleas
flew
flew
fast
fast
i
: 현재 커서 앞에 문서 추가i
Sam's Sam's
fleas iyy<CR>still<ESC> fleas
flew fleyyw
fast still
fast
o : 새로운 줄에서 문서 입력(현재 커서 다음 줄에
추가,
O
는 현재 커서 앞줄에 추가)
Sam's
Sam's
fleas
onew<ESC> new
flew
fleas
fast
fleyyw
still
fast
4) 문서의 삭제
x
: 현재 커서의 한 문자 지움
3x
: 현재 커서부터 뒤로 3문자 지움
dw
: 현재 커서의 뒷 단어 지움
db
: 현재 커서의 앞 단어 지움
dd
: 한 줄 지움
d$
: 현재 커서의 단어부터 끝까지를 지움
d^
: 현재 커서부터 처음까지 지움
u
: 마지막 변경을 취소
U
: 한 줄을 회복하여 재저장
ex) x 명령과 u 명령
Admiral
ral
John
John
John
Paul
kkk4x3x
Paul u
Paul
es
es
es
ex) x 명령과 U
명령
Admiral
Admiral
John
John
John
Paul
kkk4x3x
Paul U
Paul
es
es
es
5)
화일 관리
$ vi ch
: ch 라는 화일이 있으면 열고, 없으면 새로 만든다.
a) 종료하지 않고
저장하기(명령모드)
:w<CR>
: 원래의 화일명에 저장
:w filename<CR>
: 지정된 화일명(filename)에 저장
b) vi 끝내기
:q<CR>
: 끝냄(수정된 화일이 저장되지 않았다면 경고 출력,
저장된 경우만 끝낼수 있음)
:q!<CR>
: 저장 안하고 끝냄(경고를 내지 않음)
ZZ
: 저장 후 끝냄
c)
다른 화일의 편집
:e
: vi를 끝내지 않고, :w 를 이용하여 저장한 후에 :e 명령을
이용하여
원하는 화일을 편집할 수 있다.
:e fillename<CR>
: :w로 현재 편집내용을 저장 안하고, filename을 호출하면
오류발생
:e! filename<CR)
: 현재 편집내용을 저장 안하고, 편집하고자 하는
filename을
호출
e)
한 화일을 다른 화일에 첨가
:r
: 지정된 화일의 내용을 읽어옴
현재 편집하고 있는
화일에 다른 화일을 읽어 그 내용을
삽입한다.
즉
현재의 새로운 줄 다음에 다른 화일 내용이 첨가된다.
// 파일관리의 자세한 예는 교재를 참고 하세요(P
83 - 87).
2.
응용 편집 기능
1)
편집중
셸로 나감
일시적으로
셸로 빠져감
:!
: 한 개의 명령을 실행 후 vi로 돌아온다.
:sh
: 여러 개의 명령을 실행한다.(사용자가 원할 때 까지 사용 가능)
exit, ^D 명령으로 셸을 끝내고 편집중인
vi로 돌아올 수 있다.
Ex)
Flying
Flying
Roaches
Roches
Tonight at
:sh<CR>
Tonight at
Roseland
Roseland
:sh
$
: 셸 프롬프트로 일시적으로 나옴
$ ls<CR> : 셸 명령 실행
편집중인 vi로 돌아가기 위해서는 exit 나 ^D(ctrl+d) 명령
사용
2)
문서
탐색
f : 현재 줄에서 f 다음의 문자를 오른쪽으로
탐색
F : 현재 줄에서 F 다음의 문자를 왼쪽으로
탐색
; : f 나 F 명령을 반복 실행한다.
/ : : 명령과 같이 커서는 화면의 밑줄로 이동한다. 그 다음에
탐색할
단어를
치고 Enter를 친다.
? : 현 위치에서 파일의 처음 부분으로 역 방향 탐색을
한다
마지막 탐색은 n(next occurrence)명령으로 반복
실행할 수 있다.
N 명령은 반대
방향으로 반복 실행
Ex)
f 명령
Flying
Flying
Flying
Roaches
Roaches
Roaches
Tonight ft
Tonight at
;
Tonight at
Roseland.
Roseland
Roseland.
Ex)
/ 명령
Flying
Flying
Roaches
Roaches
Tonight
at
/land<CR>
Tonight at
Roseland
Roseland
Ex)
? 명령
Roaches
Roaches
Roaches
Tonight at
Tonight at
Tonight at
Roseland
?Ro<CR>
Roseland
n
Roseland
Ballroom
Ballroom
Ballroom
3)
화면
표시의 조정
z<CR> : 현재 줄을 화면의 맨 위로
이동
z.
: 현재 줄을 화면의 중간으로 이동
z-
:
현재 줄을 화면의 맨 밑으로 이동
^E(ctrl+e) : 윈도를 한 줄 아래로
이동시킴
^Y : 윈도를 한 줄 위로
이동
^D : 화면 반만큼 아래로
이동
^U : 화면을 위로 반만큼
이동
H : 화면의 맨 윗줄로 커서를
이동
M : 화면의 중간 줄로
이동
L : 맨 밑줄로 커서를 이동
4)
문서를
수정하는 다른 방법
r : r 다음에 대체할 한
문자를 침으로써 커서의 문자가 그 문자로 대치된다.
s : 커서 위의 내용이 다음에 나오는
문자들로 대체된다.
c
: d 명령처럼 다음에 변경되는 범위를 나타내는 문자가 온다.
Ex)
cw : 단어, cb : 앞 단어, c$ : 그 줄의 끝까지,
c^
: 그 줄의 시작 부분 cc : 그 줄 전체를
변경
J(대문자)
: 줄을 합친다.
Ex) r 명령 사용 예
the arc
The art
The art
of third
of third
of
century fcrt
century
jbhr<CR> third
guitar
guitar
century
guitar
s 명령 사용
예
Five
Five
family
families
units
ddkfysies<ESC> went
to
went to
Brazil
c 명령 사용
예
Five
Five
family
family
units
bcwmembers<ESC>
members
went to
went
to
J 명령 사용
예
One
One_Two
Two
Three
Three
J
Four
Four
Five
3.
특수 편집 기능
1)
원하는
형태로 선택하여 편집 // 자세한 것은 교재 참조(p 95
?
96)
set
명령으로 가능하게 하거나 불가능하게 할 수 있다.
:set
all<CR>
: 지정된 전체의 내용을 보여준다.
:set
modename<CR>
: modename 설정 활성화
:set
nomodename<CR> : modename 설정
비활성화
:set
modename=medeval<CR> : modeval의 값으로
지정
자주
쓰이는 선택사항
autoindent
: 프로그램 편집기나 다른 작업을 할 때 앞부분에 빈 칸이 있는
경우에 사용된다.(약어는 ai이며 기본 지정은 noautoindent)
ignorecase
: vi가 탐색하고 대체하는데 대소문자 구별하지 않도록 한다.
(약어는 ic이며 기본 지정은 noignorecase)
list
: 탭을 ^I로, 줄
끝을 $로 표시하여 화면에 나타나도록 한다.
(약어는 li이며 기본 지정은
nolist)
magic
모드 : vi의 정규화 표현을 가능하게 한다.
(기본 지정은 magic)
number
모드 : vi에게 각 줄의 처음에 줄 번호를 화면에 나타나도록 한다.
(약어는
nu이며 기본 지정은 nonumber)
shell
: :!와 :sh 명령을 사용할 때 셸 이름을
나타낸다.
Shell을 /bin/csh 로
지정하면 C shell을 사용할 수 있다.
(약어는 sh)
shiftwidth
: vi의 소프트웨어 탭이 멈추는 너비를 나타낸다.
(약어는 sw)
term
: 터미널 이름
2)
문서
마크
^G(ctrl+g) : 현재 줄 번호를
알림
ma : a라는 이름의 표시로 문서를
마크
‘a : a로 표시된 줄로
이동
`a : a로 표시된 문자 위치로
이동
d’a : 현재 줄에서부터 a로 표시된
줄까지 삭제
d`a : 현재 커서 위치에서부터 a로
표시된 문자 위치까지 삭제
ex)
줄로 이동하는 경우
flowers
flowers
flowers
fertile
fertile
fertile
fragrant majj
fragrant
‘a
fragrant
folly
folly
folly
문자 위치로 이동하는
경우
flowers
flowers
flowers
fertile
fertile
fertile
fragrant majj
fragrant
`a
fragrant
folly
folly
folly
현재 커서부터 z로 표시된 문자 위치까지
삭제
flowers
flowers
flowers
fertile
fertile
file
fragrant mzlll
fragrant
d`z
fragrant
folly
folly
folly
마크는 새로운 편집을 시작하거나, 그 줄의 내용을
변경하면 없어진다.
3)
문서
일부의 이동
한
파일 안에서 한 절을 다른 곳으로 이동시키거나 한 파일에서 다른 파일로
문서를
이동시키는 경우이다.
Vi에는
세 가지 종류의 버퍼가 있다.
(1)
이름이 없는 버퍼 // 삭제를 하면 일단 저장되는
버퍼
(2)
a에서 z까지의 이름이 붙은 26개의 버퍼 // 이름을 정할 수 있는 버퍼
(3)
최근에 삭제된 9줄을 갖는 9개의 숫자 버퍼 // 마지막 9번의 삭제된
내용을 포함하고 있다.
x,
dw, d$, dd
: 문서 삭제 명령
P : 위의 삭제 명령에 의해
버퍼에 저장되어 있는 내용을
복사하여 현재 커서 앞에 회복할 수 있다.
p : 현재 커서 뒤에 버퍼 내용을
복사하여 회복 시킨다.
y
: 문서를 버퍼에 저장한다
ex)
yw, y$, y^, y’a, y`b, yy
//
이름이 없는 버퍼 이용
Ex)
대문자 P에 의한 이동
Bruce Bruce
Bruce
McGurk
is McGurk
McGurk
a
dwjh _a P is
a
soda soda
soda
소문자 p에 의한 이동
Bruce Bruce
Bruce
McGurk is a is
a
is
a
ddj soda p
soda
soda jerk !
McGurk
jerk
!
저장명령(버퍼에 저장) y에 의한 이동
Bruce Bruce
McGurk
McGurk McGurk
is
a
is
a
yyjj is a p
soda
soda soda
McGurk
//
새로운 파일의 편집을 시작할 때마다 vi는 이름이 없는 버퍼를 삭제한다.
그러므로 이는 한 파일에서 다른 파일로 문서를 옮길 수
없다.
4)
문서를
한 파일에서 다른 파일로 이동(2가지 방법이 있음)
(1)
문서를
이름이 있는 버퍼에 저장 방법
(2)
문서를
중간 파일에 저장 방법
(1) 문서를 이름이 있는 버퍼에 저장하는 방법
이용
“a : yank(저장), 삭제,
출력에 사용하는 접두사로 이름 있는 버퍼 a를
나타냄(버퍼이름
a)
“fdw : 한 단어를 삭제하여 버퍼
f에 저장한다.
“fp : 버퍼 f의 내용을 문서에
넣는다.
“ay’a : 현재 줄에서 a로 표시된
줄까지(‘a)
버퍼(“a)로
저장한다(y).
이름을 가진 버퍼는 현재 vi의 편집 동안에만
유지된다.
Ex) flowers flowers
Jones
fertile
fertile
~
fragrant “q3yy fragrant :e
Jim<CR>
~
folly
folly
~
“Jim”
1 line
Jones
Jones
~
fertile
~
“qp
fragrant
~
folly
“Jim
“
1 line
//
숫자 버퍼는 교재를 참조하세요. (p 102)
(2)
문서를 중간 파일에 저장하는 방법 이용
문서를
포함하는 중간 파일을 이용하여 한 파일에서 다른 파일로
이동시킨다.
:n1,
n2w filename<CR> : 지정된 filename에 n1에서 n2줄까지를 저장
즉
문서가 중간 파일로 저장되면 현재 파일에서
중간
파일을 불러올 수 있다.
Ex)
flowers
flowers
Jones
fertile
fertile
~
fragrant
:2,4w if<CR>
fragrant
:e Jim<CR>
~
folly
folly
~
“if”
3 lines
“Jim”
1 line
Jones
Jones
~
fertile
~
:r if<CR> fragrant
~
folly
“if”
3 lines
위에서는 :2,4w if<CR>은 ‘if’라는
중간 파일로 2에서 4까지의 줄을 저장한다.
:e
Jim<CR>은 Jim이라고 지정된 파일을 편집한다.
:r
if<CR>은 중간 파일을 읽어오기 위해 vi의 읽기 명령을 이용한다.
중간
파일은 삭제될 때까지 디렉토리에 남아 있는다.
5)
vi
매크로
교재를
참조하세요.(p 104 ?
108)
%
이번 주 Report
연습문제(p 109) 3-1, 3-2, 3-3 문제
풀어오기
다음시간에
공부할 4장 파일 시스템 정리해 오기(A4 3장 이상)
댓글 0
번호 | 제목 | 날짜 | 조회 수 |
---|---|---|---|
» | vi 문서 편집 | 2007.10.26 | 6534 |
33 |
Hysteresis [히스테리시스, 이력현상:履歷現象]
![]() | 2008.03.27 | 29814 |
32 |
FTP 에서 권한문제 있는 파일삭제
![]() | 2008.06.13 | 9358 |
31 | 리눅스 파일 검색: find 사용 | 2008.07.21 | 17980 |
30 | screen 기본 사용법 | 2008.09.19 | 6050 |
29 | 리눅스 삭제 후 윈도우 설치 | 2008.10.31 | 12873 |
28 | KEYBOARD 자동으로 눌러진 것처럼 구현 | 2009.02.04 | 6665 |
27 | DNS 서버 주소 | 2009.06.27 | 7387 |
26 | Ctrl + Alt + Del 키 눌렀을 때, 작업관리자 실행 안되게 하는 방법 | 2009.06.27 | 7719 |
25 | FILE System 에 대한 간단한 설명 | 2010.01.07 | 6158 |
24 |
인터넷 쿠키 삭제하기 - 흔적 삭제하기
![]() | 2010.08.16 | 6890 |
23 |
"16비트 MS-DOS 하위 시스템"이라는 오류 메시지가 나타난다 - XP 용
![]() | 2010.09.01 | 6100 |
22 |
휴지통에서 삭제한 파일 복구하기
![]() | 2010.10.12 | 10517 |