본문 바로가기

개발/BACK

Linux vi / vim 명령어 총 정리

728x90

 

vi 에디터 완벽 마스터 가이드

리눅스 개발자의 필수 도구

vi는 리눅스와 유닉스 환경에서 가장 널리 사용되는 텍스트 에디터다. 서버 환경에서 파일을 편집할 때 필수적인 도구이며, 모든 명령어와 모드 전환을 완벽하게 익히면 생산성이 크게 향상된다.


1. vi 에디터란?

vi는 "Visual Editor"의 약자로, 1976년에 개발된 텍스트 에디터다. 거의 모든 리눅스/유닉스 시스템에 기본으로 설치되어 있어 서버 환경에서 파일을 편집할 때 필수적이다.

1.1 vi vs vim

  • vi: 원본 에디터, 기본 기능만 제공
  • vim: "Vi Improved", vi의 개선 버전으로 더 많은 기능 제공

현재 대부분의 리눅스 시스템에서는 vi 명령어를 입력해도 실제로는 vim이 실행된다.


2. vi 시작하기

2.1 파일 열기

 새 파일 생성 또는 기존 파일 열기
vi filename.txt

 여러 파일 동시에 열기
vi file1.txt file2.txt

 특정 라인으로 이동하며 열기
vi +10 filename.txt   10번째 라인으로 이동

 파일의 마지막 라인으로 이동하며 열기
vi + filename.txt

2.2 vi 종료하기 (긴급)

vi를 종료하는 방법을 모르면 곤란하다. 가장 먼저 익혀야 할 명령어:

 명령 모드에서 입력
:q           저장하지 않고 종료
:q!          강제 종료 (변경사항 무시)
:wq          저장하고 종료
:x           저장하고 종료 (변경사항이 있을 때만)
ZZ           저장하고 종료 (대문자 Z 두 번)
⚠️ 중요: vi를 처음 사용할 때 종료 방법을 모르면 정말 곤란하다. :q!를 외워두자!

3. vi 모드 이해하기

vi는 3가지 모드로 동작한다. 모드를 이해하는 것이 vi 마스터의 첫걸음이다.

모드 설명 전환 방법
명령 모드 기본 모드, 커서 이동, 삭제, 복사 등 ESC 키
입력 모드 텍스트 입력 i, a, o 등
ex 모드 명령어 입력 (저장, 종료 등) : (콜론)
💡 팁: vi를 처음 사용하면 모드 전환이 헷갈린다. 항상 ESC를 눌러 명령 모드로 돌아간 후 명령을 입력하자.

4. 명령 모드 명령어

명령 모드는 vi의 기본 모드다. 커서 이동, 삭제, 복사, 붙여넣기 등을 수행한다.

4.1 커서 이동

 기본 이동
h           왼쪽으로 한 글자
l           오른쪽으로 한 글자
j           아래로 한 줄
k           위로 한 줄

 단어 단위 이동
w           다음 단어의 시작으로
b           이전 단어의 시작으로
e           현재/다음 단어의 끝으로

 라인 단위 이동
0           라인의 시작으로
$           라인의 끝으로
^           라인의 첫 번째 문자로 (공백 제외)

 문서 단위 이동
gg          문서의 첫 번째 라인으로
G           문서의 마지막 라인으로
:n          n번째 라인으로 이동 (예: :10)

 화면 단위 이동
H           화면의 맨 위로
M           화면의 중간으로
L           화면의 맨 아래로
Ctrl+f      다음 페이지
Ctrl+b      이전 페이지

4.2 삭제 명령어

 삭제 명령어
x           현재 커서의 문자 삭제
X           현재 커서 앞의 문자 삭제
dw          현재 단어 삭제
dd          현재 라인 삭제
D           커서 위치부터 라인 끝까지 삭제
d$          커서 위치부터 라인 끝까지 삭제
d0          커서 위치부터 라인 시작까지 삭제

 여러 라인 삭제
3dd         3줄 삭제
dG          현재 위치부터 문서 끝까지 삭제
dgg         현재 위치부터 문서 시작까지 삭제

4.3 복사 및 붙여넣기

 복사 (yank)
yy          현재 라인 복사
yw          현재 단어 복사
y$          커서 위치부터 라인 끝까지 복사
y0          커서 위치부터 라인 시작까지 복사
3yy         3줄 복사

 붙여넣기 (put)
p           커서 다음에 붙여넣기
P           커서 앞에 붙여넣기

4.4 실행 취소 및 재실행

u           실행 취소 (undo)
Ctrl+r      재실행 (redo)
U           현재 라인의 모든 변경사항 취소

5. 입력 모드 명령어

입력 모드로 전환하는 다양한 방법이 있다. 상황에 맞게 선택하자.

5.1 입력 모드 전환

 입력 모드로 전환
i           현재 커서 위치에서 입력 모드
I           현재 라인의 시작에서 입력 모드
a           현재 커서 다음 위치에서 입력 모드
A           현재 라인의 끝에서 입력 모드
o           현재 라인 아래에 새 라인 추가 후 입력 모드
O           현재 라인 위에 새 라인 추가 후 입력 모드

 입력 모드 종료
ESC         명령 모드로 돌아가기
💡 팁: i는 "insert", a는 "append", o는 "open new line"의 약자다.

6. 파일 저장 및 종료

ex 모드(콜론 모드)에서 파일을 저장하고 종료한다.

6.1 파일 저장

 ex 모드에서 입력 (: 입력 후 명령어 입력)
:w          현재 파일 저장
:w filename.txt   다른 이름으로 저장
:wq         저장하고 종료
:x          저장하고 종료 (변경사항이 있을 때만)
ZZ          저장하고 종료 (명령 모드에서, 대문자 Z 두 번)

6.2 종료 명령어

:q          종료 (변경사항이 없을 때만)
:q!         강제 종료 (변경사항 무시)
ZQ          저장하지 않고 종료 (명령 모드에서)

6.3 파일 읽기 및 쓰기

:r filename.txt     현재 커서 위치에 파일 내용 삽입
:w >> filename.txt   현재 내용을 파일에 추가 (append)

7. 검색 및 치환

vi에서 텍스트를 검색하고 치환하는 방법을 설명한다.

7.1 검색

 명령 모드에서 입력
/search     "search" 문자열을 아래로 검색
?search     "search" 문자열을 위로 검색
n           다음 검색 결과로 이동
N           이전 검색 결과로 이동
*           현재 커서의 단어를 아래로 검색
           현재 커서의 단어를 위로 검색

7.2 치환

 ex 모드에서 입력
:s/old/new/         현재 라인의 첫 번째 "old"를 "new"로 치환
:s/old/new/g        현재 라인의 모든 "old"를 "new"로 치환
:%s/old/new/g       문서 전체의 모든 "old"를 "new"로 치환
:%s/old/new/gc      문서 전체 치환 (각각 확인하며)
:5,10s/old/new/g    5번째부터 10번째 라인까지 치환
💡 팁: 정규식을 사용할 수 있다. 예: :%s/^ //g (라인 시작의 " " 제거)

8. 고급 기능

8.1 여러 파일 편집

 여러 파일 열기
vi file1.txt file2.txt file3.txt

 ex 모드에서 파일 전환
:n          다음 파일로
:N          이전 파일로
:files      열린 파일 목록 보기

8.2 라인 번호 표시

:set number       라인 번호 표시
:set nonumber     라인 번호 숨기기
:set nu           라인 번호 표시 (줄임말)
:set nonu         라인 번호 숨기기 (줄임말)

8.3 기타 유용한 명령어

 기타 명령어
.           마지막 명령 반복
~           대소문자 전환
J           현재 라인과 다음 라인 합치기
r           현재 문자를 다른 문자로 교체
R           교체 모드 (여러 문자 교체)
>>          현재 라인 들여쓰기
<<          현재 라인 내어쓰기
:%!sort     문서 전체를 정렬
:set list   탭과 공백 문자 표시
:set nolist  탭과 공백 문자 숨기기

8.4 명령어 조합

명령어를 조합하면 더 강력하다:

 명령어 조합 예제
d3w         3개 단어 삭제
y5j         아래 5줄 복사
c$          커서 위치부터 라인 끝까지 변경 (입력 모드로 전환)
ci"         따옴표 안의 내용 변경
di(         괄호 안의 내용 삭제
va"         따옴표와 내용 선택 (visual mode)

8.5 vi 설정 파일 (.vimrc)

홈 디렉토리에 .vimrc 파일을 만들어 vi 설정을 저장할 수 있다:

 ~/.vimrc 예제
set number           라인 번호 표시
set tabstop=2        탭 크기 2칸
set shiftwidth=2    들여쓰기 크기 2칸
set expandtab        탭을 공백으로 변환
set autoindent       자동 들여쓰기
set syntax on        문법 하이라이팅
set hlsearch         검색 결과 하이라이트
set ignorecase       검색 시 대소문자 무시

마무리

vi는 처음 사용하면 어렵게 느껴지지만, 익숙해지면 매우 강력한 도구다. 서버 환경에서 파일을 편집할 때 필수적이며, 모든 리눅스 시스템에 기본으로 설치되어 있다.

가장 중요한 것은 모드를 이해하는 것이다. 명령 모드, 입력 모드, ex 모드를 구분하고, ESC 키로 항상 명령 모드로 돌아가는 습관을 기르자.

✅ 핵심 요약:
  • 3가지 모드: 명령 모드, 입력 모드, ex 모드
  • 종료: :q! (강제 종료), :wq (저장 후 종료)
  • 입력 모드: i, a, o
  • 삭제: dd (라인), dw (단어)
  • 복사/붙여넣기: yy, p
  • 검색: /, ?
  • 치환: :%s/old/new/g

 

 카카오톡 오픈 채팅 링크

https://open.kakao.com/o/seCteX7h

 

 

728x90