블로그 이미지
인터넷 해외선교를 기본으로 하는 개인적 내용과 학점은행제 관련한 것을 한꺼번에 남겨볼께요. 항상 행.복.하시길~ 주문처럼 외우는 엠토리가 운영하는 블로그입니다
엠토리

공지사항

최근에 올라온 글

최근에 달린 댓글

글 보관함

calendar

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

엠토리, 리눅스 세상 접속 - 3rd : vi

2011. 2. 14. 19:46 | Posted by 엠토리

리눅스에 대해 세번째로 남기면서, 수업 4일차의 내용입니다.
이때는 VI 에 대해 진행했습니다.
리눅스는 GUI 보다는 텍스트로 여러가지 명령과 작업을 진행하기 때문에 특히나 이 vi 라는 것에 대해 잘 알아야 한다네요.

vi(visual screen editor) : 리눅스나 유닉스에서 일반적으로 사용하는 텍스트 편집기
자체 윈도우가 있는 것이 아니라 터미널에서 실행 되고, 메뉴가 없다.

vi 는 세가지 상태(모드,Mode)가 있다.
 1) 명령상태 또는 esc 상태
 2) 입력상태 또는 편집 상태
 3) ex상태 또는 :(콜론) 상태

#vi
vi 를 실행하면 처음상태가 명령상태이다. 키보드 입력이 하나의 명령으로 동작한다.

i(insert) 나 a(append) 를 누르면 입력상태로 전환된다.
왼쪽하단에 -끼워넣기- 또는 -INSERT- 로 표시됨

다시 명령상태로 전환하려면 esc 키를 누르면 된다.

ex 상태는 콜론(:) 으로 시작하는 상태를 말한다.
:set  nu   ---> 라인번호 출력
:set  nonu ---> 라인번호 해제

처음 vi 를 실행하면 명령상태 이므로 아래 문자키를 입력하여 입력상태로 만들고 입력을 하게 된다.

■ 입력상태 설명
i : 현재 커서 앞쪽에 입력
a : 현재 커서 뒤쪽에 입력
I : 현재 라인 처음에 입력(라인이 공백으로 시작하면 실제 단어 앞에 입력 됨)
A : 현재 라인 마지막에 입력
o : 현재 라인 아래 줄에 입력
O : 현재 라인 위쪽 줄에 입력

명령상태로 바꾸려면 esc 키를 누르면 된다. (왼쪽 하단에 -끼워넣기- 또는 -INSERT- 가 표시되면 입력상태, 없으면 명령상태이다.)

■ 삭제(esc 키를 눌러서 명령상태에서 입력하는 것임)
x 또는 delete 키 : 한자 삭제
dd : 한 줄 삭제
dw : 한 단어 삭제 (단어 첫번째 글자에 커서를 위치시켜야 함)
d$ : 현재 커서 부터 마지막까지 삭제 ($는 마지막을 의미)
d0 : 현재 커서 부터 라인의 처음부분까지 삭제 (숫자 0 은 처음을 의미)
d^ : 현재 커서 부터 라인의 처음부분까지 삭제 (^ 는 처음을 의미)

■교체
r  : 한 글자 교체(r 누르고 새로운 문자 입력)
cw : 한 단어 교체(cw 누르고 새로운 단어 입력후 esc 누르기)
cc : 한 줄 변경(cc 누르고 새로운 내용 입력후 esc 누르기)

dw 나 cw 이용시 단어의 첫번째 글자에 커서를 위치시키고 작업을 해야 함

리눅스 명령어 상태(# 상태)로 빠져 나가려면 명령상태로 바꾼다음 아래 명령을 입력후 엔터를 치면된다.
:q (저장하지 않고 종료, q - quit)
:wq (저장후 종료, w - write, q - quit)

vi 실행시 파일명을 지정하지 않았으면 리눅스 명령어 상태로 나올 때 저장할 파일명을 입력해야 한다.

:q 엔터를 쳤을 때 하단에 ! to override(덮어쓰려면 ! 더하기) 메시지가 나오는 경우가 있는데
1)읽기 전용파일을 편집후 빠져 나올 때
또는
2)파일을 수정후 저장하지 않고 그냥 빠져 나올 때 이런 메시지가 출력된다.
이때는 !(force - 강제 실행을 의미)를 사용해서 빠져나오면 된다.

:q!  (저장하지 않고 강제 종료)
:wq! (저장후 강제종료)

--->리눅스는 대소문자를 구분함

:q! 를 입력해서 리눅스 명령어 상태로 빠져 나온다.

#vi
입력 상태 만들고 단어를 입력

one
two
three

esc 누른 후 :wq 엔터 입력 ---> 파일명을 지정하지 않아서 메시지가 출력된다.

:wq  test2.txt
---> :wq  저장할파일명
---> 기본적으로 vi 를 실행한 디렉토리(현재 디렉토리)에 저장된다.
---> 다른 디렉토리에 저장하려면  :wq  /tmp/test3.txt  와 같이 경로와 파일명을 입력하면 된다.

#vi  test2.txt
---> vi 실행하면서 test2.txt 파일을 open 하기. 즉 존재하는 파일 편집하기

■ 이전작업 취소 ---> u(undo 를 의미)
■ 이전 작업 반복 ---> .(점)

■ 문자키를 이용한 커서 이동하기(명령상태에서 하기)

             k(위)
h(왼쪽)            l(오른쪽)
            j(아래)

■ 라인번호 출력 및 해제(명령상태에서 입력)
1)
:set  number
:set  nonumber

2)
:set  nu
:set  nonu

3)
:se   nu
:se   nonu

:help (도움말 출력)
:help  usr_03
:help  wq
:q (도움말 종료)

색상 설정하기
:color  evening
:color  morning
:color  desert

■ 검색
/검색단어(명령상태에서 / 누르고 검색단어 입력후 엔터)
--->후방 탐색(앞에서 뒤로 검색)
n 을 누르면 다음 단어로 이동된다.
N 을 누르면 이전 단어로 이동

?검색단어
--->전방 탐색(뒤에서 앞으로 검색)

:set  nohls (검색어 색상 해제)
:set  hls (검색어 색상 출력)

■ 라인이동 및 페이지 이동
shift + g : 마지막 라인으로 이동(대문자 G, go 를 의미)
1번 라인으로 이동하기
---> 1G 또는 :1 엔터

33번 라인으로 이동하기
---> 33G 또는 :33 엔터

ctrl + f(또는 Page Down 키) : next page 로 이동
ctrl + b(또는 Page Up 키)    : previous page 로 이동
b                                   : 이전 단어로 이동
w                                   : next 단어로 이동
enter                              : next 라인으로 이동
space bar                        : 같은 라인에서 next 문자로 이동

esc  :q 입력해서 빠져 나오기

■ 실습
1)메모장 이용하여 아래 내용으로 /root 디렉토리에 redhat.txt 생성하기
2)vi 이용하여 아래 내용으로 /tmp 디렉토리에 redhat2.txt 생성하기

Redhat Linux
CentOS Linux
Debian Linux

--->터미널에서 vi 로 작업후 탐색기(파일 브라우저)에서 확인을 하면 된다.

#vi  -c 100  /etc/services
---> 파일을 open 하면서 100 번 라인으로 이동하기
-c 는 command 를 의미

또는

#vi  +100  /etc/services

#vi  -c  "color  morning"  /etc/hosts
---> O
#vi  -c"color  morning"  /etc/hosts
---> X

#vi  +"color  morning"  /etc/hosts
---> O
#vi  +  "color  morning"  /etc/hosts
---> X

리눅스 명령어 대기상태로 빠져 나오기
#vi  linux.txt  (---> vi  저장할파일명)
~ 표시는 라인에 아무 내용도 없다는 의미

아래와 같이 입력하기

apple
apple  apple  apple

orange
orange  orange  orange

mango
mango  mango  mango

■ 치환
:1,10s/원래단어/바꿀단어 ---> 1번 라인에서 10번 라인까지 변경
:%s/원래단어/바꿀단어   ---> 파일 전체에서 첫번째 단어만 변경
:%s/원래단어/바꿀단어/g ---> 파일 전체에서 한 줄의 모든 단어 변경
:%s/원래단어/바꿀단어/gc ---> 파일 전체에서 한 줄의 모든 단어 변경시 확인질문 출력(confirm)
:%s/apple/tico (명령상태에서 입력후 엔터-결과 확인)
:%s/orange/matiz/g (g 는 global 을 의미)

■ 복사 및 붙여넣기
한줄 복사      : yy (yank)
한줄 붙여넣기 : p (paste) - 현재 라인 아래 줄에 붙여넣기
                P - 현재 라인 윗 줄에 붙여 넣기
여러줄 대상으로 할 때는 숫자이용
숫자-yy-p ---> 여러 줄 복사해서 붙여넣기
3dd   (3줄 삭제)
3p    (3번 붙여넣기)

■ 라인합치기 : J (Join)

■ 파일편집 및 읽기
:e   파일명(기존 파일 편집하기)
:e!  파일명(현재 작업을 중단하고 다른 파일 편집)
:r   파일명(현재 라인 아래에 기존 파일 읽어오기)

■ 다중파일 편집
vi  파일명1  파일명2  ...
:args (목록 출력)
:n (다음 파일로 이동)
:prev (이전 파일로 이동)

■ vi 에서 저장후 종료 방법
1) :wq
2) ZZ(: 없이 대문자로 입력)
3) :x
4) :exit

■ 블록지정
shift + v : 라인 단위 블록 지정(shift + v 를 누른후 화살표키를 이용하여 블록을 지정)
블록을 지정한 상태에서 y : 복사하기
블록을 지정한 상태에서 d : 삭제하기
블록을 지정한 상태에서 p : 붙여넣기

이상입니다. (현재 포스팅하는 시간은 수업중입니다 ㅋ)
아무쪼록 항상 행.복.하시길~^^