Server의 세계/Linux & Unix

[Linux] vi 명령어 정리 (명령모드/편집모드/콜론모드)

코딩기스칸 2022. 8. 1. 17:25

vi는 1976년 빌조이가 개발하였으며 유닉스 환경에서 가장 많이 쓰이는 문서 편집기다. 그때 당시에는 화살표 키에 대응할 만한 키가 없었기 때문에 H, J, K, L키가 각각 ←, ↓, ↑, ↓ 으로 커서를 이동하게 만들어졌고 지금도 방향키처럼 쓸 수 있다.

(하지만 요즘엔 방향키를 쓰면 되므로 잘 안쓴다.)

 

VI 편집기 모드

 

출처 : @zeesoo님의 velog

 

먼저 연습용 파일인 test.txt를 생성한 뒤,  vi 편집기를 열겠다.

 

[root@cc ~]# touch test.txt
[root@cc ~]# vi test.txt

 

Vi는 명령모드(command mode)와 편집모드(insert mode)가 있으며 일단 프로그램을 시작하면 일반적으로 명령모드(command mode)로 시작하게 된다. 

  • 명령모드

명령모드

i키를 누르게 되면 편집모드로 들어 갈 수 있다.

  • 편집모드

편집모드

하단에 INSERT로 표시 된 것을 확인 할 수 있다. 편집모드로 들어가면 문서내용을 추가, 삭제 등 편집 작업을 할 수 있다.

작성을 마치면 esc 키를 입력한다.

esc를 누르면 다시 명령모드가 된다. 여기서 콜론을 입력하면 콜론모드.

이후 :(클론)를 입력 후 콜론모드에서 원하는 종료단축키를 눌러 vi편집기를 종료하면 된다. 

cat 파일명으로 내용확인

내용이 저장된 것을 확인 할 수 있다.

 


모드별 자주 쓰이는 명령어

진짜 왕왕 자주 쓰는 명령어는 동작 부분에 핑크색 배경색 표시 (본인 관점이라 매우 주관적)

Ⅰ. 명령모드(command mode)에서의 명령어들

vi 편집기에 들어가자마자 or esc를 눌렀을때 상태에서 쓰는 명령어들

빨간색편집모드로 변경되는 단축키.

 

vi 명령어 동작 화면
i 편집모드(현재 커서에서 삽입)
a 덧붙이기(커서 바로 다음 위치에서 삽입)
o 현재 행 아래에 삽입
shift 키 + s 줄 삭제후 편집 모드
s 단어 삭제 후 편집 모드
shift 키 + g 파일의 끝으로 이동
x/X 글자 삭제/ 백스페이스 글자 삭제
(N)dd 커서가 위치한 곳의 한 줄 삭제
u 방금 한 명령 취소
(N)yy(N줄 복사) -> p(붙여넣기) 커서 위치한 곳의 한줄 복사
→ 커서가 있는 줄 바로 아래에 버퍼 내용 붙여 넣기
Shift 키 + 4 커서가 있는 줄의 맨 뒤로 이동
0(숫자 영) 커서가 있는 줄의 맨 앞으로 이동

 

Ⅱ. 편집모드(insert mode)

명령모드에서 편집모드로 넘어가면 자유롭게 코드나 글을 작성할 수 있다. 편집모드에서 수정, 입력 후 다시 명령모드로 돌아가려면 esc를 입력하면 된다.

vi 명령어 동작
esc 편집모드에서 명령모드로 전환

 

Ⅱ. 콜론모드 or 마지막 행 모드(last line mode)

명령모드에서 :(콜론)를 입력하면 다음의 작업이 가능하다.(저장, 종료하기)

아래 명령어 입력 후 enter를 치면 명령이 실행된다.

vi 명령어 동작
:q vi 종료
:q! vi 강제 종료
:w 현재 파일명으로 파일 저장
:w [파일명] 입력한 파일명으로 파일 저장
:wq 저장 후 종료
vi 명령어 동작 화면
:set number(nu) vi 라인 번호 출력
:set nonumber(nonu) vi 라인 번호 출력 취소
:(해당라인 숫자) 해당 라인으로 커서 이동
ex) :5 입력후 엔터치면 5번째 라인으로 이동
:?문자열 커서 위치 앞으로 문자열 찾기
ex) :/bread 입력 후 enter 치면
10번에 있는 bread로 커서가 이동
:/문자열 커서 위치 뒤로 문자열 찾기
ex) :?bread 입력 후 enter 치면
11번에 있는 bread로 커서가 이동

 

D.O.N.E!!