티스토리 뷰

SYSTEM/LINUX

9) VI

chrisysl 2018. 2. 22. 18:31

vi (Visual Editor) : 텍스트편집기

 - 리눅스에서 가장 많이 사용하는 텍스트 편집기

 - 모드 형 편집기



vim (Vi IMproved) : 향상된 vi

 - vi 기능을 향상시킨 vi의 클론버전

 - 비주얼 모드가 추가됨

 - 현재 가장 많이 사용되는 텍스트 편집기



모드(mode)형과 비모드형 편집기

 1. 모드형

- 입력모드와 명령모드가 구분

- 입력모드는 텍스트를 입력할 때 사용하는 모드

- 명령모드는 삭제, 복사, 붙여넣기 편집이 가능한 모드

- vi는 모드형 편집기


 2. 비모드형

- 입력모드와 명령 모드가 구분되어 있지 않음

- 편집 기능을 Ctrl이나 Alt 같은 특수 키와 함께 사용

- 메모장, 한글, 워드는 비모드 형 편집기






# 명령모드 / 입력모드 / 실행모드

각각의 모드에서 실행할 수 있는 키입력들이 다르다.

vi를 실행시키면 항상 명령모드다.


 - 명령모드 -> 입력모드 : i, a, o

 - 입력모드 -> 명령모드 : esc

 - 명령모드 -> 실행모드 : :, /, ?

 - 실행모드 -> 명령모드 : esc






vim 설치

 - #> yum -y install vim

 - #> alias vi="vim"






# vi="vim" 임을 Xshell 에도 alias로 등록






vi [파일명]

 - 파일이 존재하는 경우 : 해당 파일을 열어 내용을 수정

 - 파일이 존재하지 않는 경우 : 새로운 파일을 만들어 내용을 입력



명령모드 -> 입력모드

 - a (append) : 커서가 위치한 곳에서 한 칸 뒤로 이동한 후에 입력모드 전환

 - i (insert) : 커서가 위치한 곳에서 입력모드 전환

 - o (open line) : 현재 커서가 위치한 행에서 개행한 후 입력모드 전환



파일 내용 입력

 - 1. vi [파일명]

 - 2. 내용 수정/입력 후

 - 3. ESC → <입력모드> → <명령모드>

 - 4. :w (저장)

 - 5. :q (종료)






#> vi /etc/resolv.conf

입력시 






# 이와같이 수정가능한 창이 나온다.

이미 존재하는 파일에 vi명령을 했으므로 해당 파일을 열어 내용을 수정할 수 있다.






# 이와같이 practice 디렉토리에 vi_test1.txt 를 생성해보자. 

존재하지 않는파일이므로 새로운 파일이 생성된다.


#)_ 참고

#> rm -rf ./* 은 해당 디렉토리 내의 모든파일 삭제






# 입력시 새 파일이 생성된 것을 알 수 있다.

좌측의 '~' 표시는 비어있는 행을 나타낸다.






#> i 키를 입력시 '끼워넣기' 로 모드가 변하면서 입력이 가능해진다






#> ESC 키를 누르면 다시 명령모드로 돌아오게되므로 입력/수정 이 불가능하다.






#> : 키를 눌러 실행모드로 들어갈 수 있다.






#> :w 를 입력후 엔터를 치면 저장된다.






#> :q 입력시 vi모드가 종료된다.






#> :wq 는 저장 후 종료 가 된다.



i, a, o 는 직접 눌러보며 차이점을 알아가야한다.






커서 이동

 - 명령모드에서 아래 키로 이동이 가능하다.


(k) ↑

(h) ← (j) ↓ (l) →

vi가 처음 나왔을때의 키보드는 방향키가 없던 시절이었기 때문에, 

익숙해진다면 손의 이동의 동선을 최소화 할 수 있다.



 - ^ : 행의 맨 앞으로 커서를 이동

 - $ : 행의 맨 끝으로 커서를 이동



# 실습을 위해 /etc/services 파일을 현재경로에 test-2 로 카피해보자.

#> cp /etc/services ./test-2 입력하고, 해당 파일을 열면






# 맨 앞이 #으로 시작하는 행은 주석문이다. 


Ctrl + b : 이전화면 (back)

Ctrl + f : 다음화면 (front)






#> :set number - 행번호 표기






[#]gg : [#]으로 이동, [#]이 생략되면 1을 의미하여 문서의 처음으로 이동

[#]G : [#]으로 이동, [#]이 생략되면 마지막 행을 의미하며 문서의 끝으로 이동






삭제 ( 명령모드 에서 사용)

x : 커서에 위치한 문자 삭제 (Delete 키)

dd : 커서가 위치한 행 삭제

ex) 10줄 삭제 : 10dd //현재 커서가 위치한 곳으로부터 10줄 삭제

     999줄 삭제 : 999dd






복사 (yank)

yy : 커서가 위치한 행을 복사

ex) 3줄 복사 : 3yy //현재 커서가 위치한 곳으로부터 3줄 복사



붙혀넣기 (put)

p : 현재 행에 붙여넣기



명령어 취소/다시실행

u : undo, 바로 이전에 행한 명령어 취소

Ctrl + r : 바로 이전에 취소했던 명령을 다시실행





명령모드에서의 삭제/복사/저장/종료

#> :20d - 20번째 행 삭제

#> :1,3d - 1번 ~ 3번행 삭제 (1,2,3행 삭제)

#> :.,+20y - 현재 행으로부터 아래로 20행까지 복사


#> :w - 저장

#> :w! - 강제저장 // ! 는 '강제' 라고 알면 된다.

#> :q - 종료

#> :q! - 강제종료


#> :w [파일명] - 새로운 파일이름으로 문서 저장

#> :e! - 편집한 내용을 저장하지 않고 파일 다시 열기






# 명령모드에서 :w test-3 입력시 새로운 파일이름으로 현재 파일과 동일한 파일 저장



행번호 출력

#> :set number(:set nu 와 동일)






문자열 검색

/[문자열]

ex) /tcp

n : 다음으로 일치하는 문자열로 이동

N : 이전으로 일치하는 문자열로 이동






문자열 치환

#> :%s/[OLD]/[NEW]/g

ex) :%s/udp/tcp/g //문서 전체의 udp를 tcp로 치환



'SYSTEM > LINUX' 카테고리의 다른 글

10) Redirection, Pipe  (0) 2018.04.22
8) Link  (0) 2018.02.21
7) Grep&Regular-Expression  (0) 2018.02.17
6) Basic Command2  (0) 2018.02.15
5) Basic Command1  (0) 2018.02.14
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/03   »
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 29 30
31
글 보관함