리눅스프로그래밍

vi - 문서 편집하기 (입력 , 이동 , 수정 , 삭제 , 명령 취소)

헬로월드! 2020. 4. 24. 14:47

1. 리눅스 파일 편집기 - vim (대표적인 문서  편집기)

- vim 은 유닉스에서 제공한 편집기인 vi 를 업그레이드한 것으로 기본적인 사용법은 vi 와 같다. 

- GUI 환경인 그놈에서 제공하는 gedit 

 

구분 종류
행 단위 편집기 ed, ex ,sed
화면 단위 편집기 vi, emacs
GUI 편집기 gedit 

 

2. 모드형과 비모드형 편집기

  • 모드형 : 입력 모드와 명령 모드의 구분이 있 (= vi 는 모드형 편집기) 
  • 비모드형: 입력 모드 , 명령 모드가 구분되어 있지 않음
  • 입력 모드 ) 텍스트를 입력할 수 있는 모드 / 명령 모드) 텍스트를 수정하거나 삭제하고 복사와 붙이기 등 편집을 하는 모드
  • 같은 글자라도 입력 모드에서는 텍스트로 처리하여 입력되고 , 명령 모드에서는 텍스트로 입력되는 것이 아니라 편집 명령으로 사용
구분  모드형(vi) 비모드형(메모장)
입력모드 텍스트 입력  텍스트 입력
명령모드 1) 복사 yy ctrl+c
            2) 붙이기 ctrl+v
            3) 저장 :wq , ZZ ctrl+s
모드 전환 i, a, o ,ESC  없음! 

3. vi  사용법 

vi 

- 기능: 지정한 파일을 편집한다. 파일을 지정하지 않으면 빈 파일이 열리고 이 빈 파일의 이름은 별도로 지정할 수 있다.

- 형식: vi [ 파일 ]

 

파일을 지정할 경우 : 해당 파일이 있으면 파일의 내용이 보이고 없는 파일이면 빈 파일이 열린다.

파일을 지정하지 않을 경우: 그냥 빈 파일이 열린다. ( 파일명은 저장할 때 지정가능 / :w 파일명)

 

1)  vi 저장과 종료

편집을 완료한 후 vi 를 종료하려면 명령 모드나 마지막 행모드에서 명령을 입력해야 한다.

보통의 편집기처럼 작업한 내용을 저장하지 않고 종료할 수도 있고 , 다른 이름으로도 저장할 수 있다. 

 

모드 명령 키 기능
마지막 행 모드 :q vi 에서 작업한 것이 없을 때 그냥 종료
  :q! 작업한 내용을 저장하지 않고 종료(강제종료)
  :w [ 파일명 ] 작업한 내용을 저장만 함, 파일명을 지정하면 새 파일로 저장됨
  :wq , :wq! 작업한 내용을 저장하고, vi 를 종료
명령 모드 ZZ 작업한 내용을 저장하고, vi 를 종료

 

 

2) 입력 모드로 전환하기 

i a o I A O 

vi 는 처음에 명령 모드로 시작하여 내용을 입력하려면 입력 모드로 들어가야한다! 

명령키 기능
i   (insert) 커서 앞에 입력 (현재 커서 자리에 입력) 
a  (add) 커서 뒤에 입력 (현재 커서 다음 자리에 입력)
o  (open) 커서가 위치한 행의 다음행에 입력
커서가 위치한 행의 첫 칼럼으로 이동하여 입력
A 커서가 위치한 행의 마지막 칼럼으로 이동하여 입력
커서가 위치한 행의 이전 행에 입력

입력 모드 후 ESC 로 명령 모드로 빠져 나온다. 

 

3) 커서 및 화면 이동하기

- 커서 

명령키  기능
h / j / k / l  각각 커서를 ← /↓ / ↑ / → 로 이동한다. 
^ 또는 0 커서를 현재 행의 처음으로 이동 
커서를 현재 행의 마지막으로 이동
- 커서를 앞 행의 처음으로 이동
+ / Enter 커서를 다음 행의 처음으로 이동
H / M / L  커서를 화면의 맨 윗행, 중간행 , 맨 아랫행으로 이동한다.
커서를 다음 단어의 첫 글자로 이동
커서를 앞 단어의 첫 글자로 이동
e 커서를 다음 단어의 마지막 글자로 이동 

 

- 화면

기존 명령 키  기능 
^u (ctrl + u) 반 화면 위로 이동
^d (ctrl + d) 반 화면 아래로 이동
^b (ctrl + b) 한 화면 위로 이동
^f ( ctrl + f) 한 화면 아래로 이동
^y (ctrl+ y) 화면을 한 행만 위로 이동
^e (ctrl + e) 화면을 한 행만 아래로 이동

 

- 특정 행 바로 이동하기

명령키 기능
파일의 마지막 행으로 커서가 이동
행번호 G 지정한 행 번호로 커서가 이동
: 행번호 지정한 행 번호로 커서가 이동 (마지막 행 모드)
: $  파일의 마지막 행으로 커서가 이동(마지막 행 모드)

 

 

4) 내용 수정하기

명령키 기능
r (replace) 커서가 위치한 한 글자를 다른 글자로 수정
cw , #cw (change word) 커서 위치부터 현재 단어의 끝까지 수정 . #에는 수정할 단어의 수를 지정, ex. 5cw 는 커서 위치부터 다섯단어를 수정한다.
s, #s (substitute) 커서 위치부터 ESC 키를 입력할 때 까지 수정한다. # 에는 수정할 글자 수를 지정, ex. 5s 는 커서위치부터 다섯 글자를 수정한다.
cc (change) 커서가 위치한 행의 내용을 모두 수정한다.
C 커서 위치부터 행의 끝까지 수정한다. 

 

원하는 내용으로 수정 후 ESC 를 눌러 명령 모드로 전환하면 수정 완료다! 

 

 

5) 내용 삭제하기 

명령키 기능
x, #x 커서 위치의 글자를 삭제, #에는 삭제할 글자 수 지정
dw , #dw  커서 위치의 단어를 삭제, # 삭제 단어 수
dd, #dd 커서 위치 행 삭제, # 삭제 행 수 지정
커서 위치부터 행의 끝까지 삭제

 

6) 명령 취소하기 

명령키 기능
u (undo) 명령을 취소
해당 행에서 한 모든 명령을 취소
:e! 마지막으로 저장한 내용 이후의 것을 버리고 새로 작업