본문 바로가기

Learning/ └Essential & Admin

리눅스 VI 편집기_Unit8


편집기 종류(Visual Editor)
 vim         :주 사용 편집기
 emacs     :편집기 // 단축키 위주의 사용 편집기
 pico        :윈도우 메모장(Noteped)와 유사 매우 단순


VI 편집기 명령어 형식
 vi                        새 파일을 편집할 수 있는 화면 출력 작업 후 파일이름 지정하여 저장(ex)w filename
 vi filename            filename 이름을 가진 파일 존재하는 경우 해당 파일을 편집, 없는파일이면 새 파일 생성후 편집

 vi -R filename        Readonly 상태로 열어준다. 중요한파일,여러 사람이 동시에 수정 가능한 파일 다룰때 사용
 view filename        -R기능과 같다

 vi -r filename         비정상적으로 종료되었을 때 저장된 임시파일을 사용(r =Recoverty)
 vi -L                    비정상적으로 작업 종료 되었을 시 편집하던 파일 복구할 임시파일의 목록을 표시

vi +38 file name    라인번호 지정 38번 라인부터 시작

vi -c 38 filename

 

VI 편집기 특성

vi

vim

 

파일의 크기가 vim이 크다 (성능이 좋다)

 

 

gedit ~/.bashrc

alias vi=' /usr/bin/vim

. ~/.bashrc

(vi 명령어 입력시 vim 편집기 실행 적용)

 

명령어 실습

 

# vi -L

(작업중 shut down 되었을때)

 

 

 

# ls -l /var/tmp

(비 정상 종료된 파일의 목록이 보임)

 

 

# vi -r /var/tmp/file1.swp

 

 

# vi +/"fedora" /etc/passwd

# vi +30 /etc/passwd

# cat > /test/file1

 

 

# su - fedora

$ vi -R /test/file1

(여러 사용자가 동시에 수정 가능한 파일 다룰때)

 

 

 

 

 

(기본 작업 테스트)

# cd /test

# vi filename

( 존재하지 않는 파일이기 때문에 새 파일 생성) 

 

커맨드모드(ESC Mode)

 

 

명령어 입력을 하기 위해

Input Mode 로 전환 ( I, A, O)

(반대로 ESC Mode로 돌아가기 위해서는 ESC입력)

 

 

 

작성한 글 편집하기

line : linux -> liNux 로 변경

move -> delete -> insert -> save & quit

 

(1) move : h, j, k, l

(ESC Mode로 전환)

 

(2) delete : x, dd

(3) : input : i

 

 

(4) save & quit : shift + :

: w!, :wq, :q!, :wq!

(w : 저장 q : 종료 ! : 무시(확인하지않고) )

 

 

( . verification )

[TER1]

# vi filename

 

[TER2]

# cd /test

# cd /etc/services /test

# vi services

 

 

: set number ( : set nu ) 라인 넘버수 출력

: set nonumber ( : set nonu) 라인 넘버수 제거

 

set number 후 ESC Mode 에서 :30 입력시

30번째 라인으로 이동

: 30   = 30G    

nG ( : 사용없이 숫자입력후 G 를 입력하면 : n 과 같음)

/ftp -> n -> N

 

 

Vi 편집기 모드 변경

명령행모드/입력행모드/최하위행모드

명령행 모드 : 편집작업 및 기타 명령어를 입력 할수 있는 모드

입력행 모드 : 입력만 할 수 있는 모드

최하위행 모드 : 저장 및 기타 검색 작업등을 할 수 있는 모드

Command Mode(Edit Mode)    키 입력을 명령어로 해석

Input Mode(Insert Mode)        키 입력을 파일에 입력

Last Line Mode(Ex Mode)        ex 명령어를 수행

 

입력행 모드(Input Mode)

편집기 실행시 처음 기본 모드

InputMode 에서 CommandMode 로 전환 하는 방법

Insert

- i : 현재 커서 위치로부터 입력

- l : 현재 커서가 있는 행의 처음부터 입력

Append

- a : 현재 커서 위치 이후부터 입력

- A : 현재 커서가 있는 행의 마지막부터 입력

Open Line

- o : 현재 커서가 있는 아래행부터 입력

- O : 현재 커서가 있는 위행부터 입력

 

명령 모드(Command Mode)

이동

         상: j

좌: h   하: k  우: l

w        : 다음 문장 처음으로 이동

b        : 이전 문장 처음으로 이동

0(^)    : 라인의 처음 문자로 이동

$        : 라인의 마지막으로 이동

CTRL + F    : 다음 페이지 이동

CTRL + B    : 이전 페이지 이동

H        : 현재 페이지 가장 첫번째 줄로 이동
L         : 현재 페이지 가장 마지막 줄로 이동

1G        : 문서의 첫 번째 라인으로 이동

G          : 문서의 마지막 라인으로 이동

nG        : n 에 숫자입력후 G 입력 입력한 숫자로 이동*(: set number)

 

삭제

x        : 좌우삭제/현재커서 한글자 삭제

dw     : 현재 커서 한 단어 삭제

dd      : 상하삭제/현재 라인 삭제

:1,3    : 1라인 부터 3라인까지 삭제

dG    : 현재 커서부터 문서 마지막까지 삭제

d1G    : 현재 커서부터 문처 n까지 삭제 ( 1 : 처음)

 

Undo

u    :이전 상태로 되돌림

U    :라인 전체에 대해 이전 상퇴로 되돌림

Join Line

j     :현재라인에 아래 라인 붙이기

Replace

r     : 현재 글자를 대치

R    :<ESC>키를 누르기 전까지 현재 글자 대치

 

최하위행(Line)모드(Last Line Mode)

복사/붙이기(Copy/yank & Paste)

yy(=Y)        현재 라인 복사(Yank)

3yy(3Y)        현재 커서 라인 포함해서 하위의 3개의 라인 복사

p                현재 커서 아래에 붙이기

P                현재 커서 위에 붙이기

:1,3 co 5        첫 번째 라인부터 3번째 라인까지 복사하여 5번째 라인 아래에 붙이기

:1,3 m 5        첫 번째 라인부터 3번째 라인까지 5번째 라인 아래에 이동하기

검색(Search)

/New        현재 커서 라인부터 찾으려는 문자열 (예 : New)검색

?New        문서의 마지막 라인부터 찾으려는 문자열 검색

n            : n(Next), 정방향 다음번째 검색

N            : N(Next), 역방향 다음번째 검색

 

 

검색/바꾸기(Search & Replace)

: %s/<찾을문자열>/<바꿀문자열>/g

: 5,10s/Old/New/g

(5번째 줄부터 10번째 줄까지만 )

 

[참고] "<찾을 문자열>" 에는 "정규 표현식"을 사용할 수 있다.

 

ex) :%s/hello/HELLO/g

1,$ -> :5,10s/HELLO/hello/g

search(substitution)

globally -> %s/hello/HELLO/ , %s/hello/HELLO/g

(g는 모든 찾을문자열 /g가 없을시 첫번째만 변경)

 

[활용]

ex) :5,10s/^/#/        (주석처리)

     :5,10s/^/%//      (주석해제)

:5,10s/^/    / (4blank character)        (들여쓰기)

:5,10s/^    //        (내어쓰기)

 

 

 

Save & Quit

:w    w(write) 현재 파일 저장

:w filename    다른 이름으로 저장

:w!(root use)    현재 파일 강제저장

:w file        현재까지의 변경사항을 file로 저장

:3,10w file    3번째 라인부터 10번째 라인까지 file로 저장

:q        q(quit) 편집기 종료

:q!        저장안하고 종료

:wq        저장하고 종료

:wq!        현재파일 강제적 저장 종료

:r file        file내용을 현재 커서 위치에서 읽어들임

:!CMD        vi 편집기를 빠져나가지 않은 상태에서 쉘 명령어를 수행

w!와 wq! 는 root use 일때만 가능

 

[참고] 저장하고 빠져나가기 (Save & Quit)의 여러가지 방법

:x
:wq

ZZ

 

:! bash         배쉬셀 추가

 

[참고] vi 편집기 실행에 대해서

[TER1] # vi filename

: wq!

[TER2]# vi services

: q!

  # cat services

 

vi 편집기 환경파일

 

편집기 환경파일
 라스트 라인 모드에서
  : set all    (전체 환경기능 출력)

  : set        (현재 사용하고 있는 기능만 출력)

  : set number    (사용하고 싶은 기능)

  : set nonumber (사용하지 않을 기능)

  : set tapstop=4    (: set ts=4)

( : set [기능의이름]=[값] )
 no가 앞에 붙어있는 것은 기능이 비활성화 되어있는 상태

 

 

 

VIM편집기의 기본환경 설정 파일 변경 시

지금 사용하는 편집기에만 설정이되고 다음 편집기에는 초기화 된다

지속적 동작을 원할때

vi ~/.vimrc (vim run command)에 옵션값을 입력하여 저장한다