vi 에디터 사용법

vi 에디터 사용법입니다. 명령/입력/실행 모드, 저장 종료, 이동, 삭제, 복사, 검색, 치환, 줄 번호와 실습 파일을 정리했습니다.

vi 에디터 사용법

vi는 Linux 서버에서 거의 항상 사용할 수 있는 기본 편집기다. 처음에는 모드가 낯설지만, 명령 모드, 입력 모드, 실행 모드만 구분하면 설정 파일 수정 정도는 안정적으로 처리할 수 있다.

파일 열기

vi memo.txt
vi /etc/hosts
sudo vi /etc/ssh/sshd_config

운영 설정 파일을 수정할 때는 먼저 백업을 만들어 둔다. 특히 SSH, network, sudo 설정처럼 접속에 영향을 주는 파일은 백업과 검증 명령을 같이 준비해야 한다.

sudo cp -a /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.$(date +%Y%m%d-%H%M%S)
sudo vi /etc/ssh/sshd_config
sudo sshd -t

세 가지 모드

  • 명령 모드: 이동, 삭제, 복사, 붙여넣기 같은 편집 명령을 실행한다.
  • 입력 모드: 실제 텍스트를 입력한다.
  • 실행 모드: 저장, 종료, 검색 치환 같은 : 명령을 실행한다.
ESC     : 명령 모드로 돌아가기
i       : 커서 위치 앞에서 입력 시작
a       : 커서 다음 위치에서 입력 시작
o       : 아래 줄을 새로 만들고 입력 시작
I       : 현재 줄 맨 앞에서 입력 시작
A       : 현재 줄 맨 뒤에서 입력 시작
:       : 실행 모드 명령 입력

저장과 종료

:w        저장
:q        종료
:wq       저장 후 종료
:x        저장 후 종료
:q!       저장하지 않고 종료
:w new.txt 현재 내용을 new.txt로 저장

이동 명령

h  왼쪽
j  아래
k  위
l  오른쪽
0  줄의 맨 앞
$  줄의 맨 끝
gg 문서 첫 줄
G  문서 마지막 줄
15G 15번째 줄로 이동

삭제, 복사, 붙여넣기

x    커서 위치 한 글자 삭제
dd   현재 줄 삭제
5dd  현재 줄부터 5줄 삭제
yy   현재 줄 복사
3yy  현재 줄부터 3줄 복사
p    커서 아래 또는 뒤에 붙여넣기
u    되돌리기
Ctrl+r 되돌리기 취소

검색과 치환

/PermitRootLogin     아래 방향 검색
?PermitRootLogin     위 방향 검색
n                    다음 검색 결과
N                    이전 검색 결과

:%s/old/new/g        문서 전체 old를 new로 변경
:10,20s/foo/bar/g    10~20번째 줄에서만 변경

줄 번호와 붙여넣기 모드

:set number
:set nonumber
:set paste
:set nopaste

터미널에서 여러 줄을 붙여넣을 때 자동 들여쓰기 때문에 내용이 밀리면 :set paste를 켠 뒤 붙여넣고, 끝나면 :set nopaste로 돌린다.

최소 실습

cat > vi-practice.txt <<'EOF'
line one
line two
line three
EOF

vi vi-practice.txt

실습 파일에서 i로 입력, ESC로 명령 모드 복귀, dd로 줄 삭제, u로 되돌리기, :wq로 저장 종료까지 반복하면 서버에서 설정 파일을 수정할 때 당황하지 않는다.

BGM EVER