CS

[Linux] vi 에디터

kyoulho 2024. 9. 18. 17:15

vi 에디터는 리눅스와 유닉스 계열 운영체제에서 기본적으로 제공되는 텍스트 편집기다. 빠른 속도와 강력한 기능으로 인해 많은 시스템 관리자와 개발자들이 선호한다. vi는 다양한 모드로 작동하며, 효율적인 텍스트 편집을 가능하게 한다.

 

vi의 모드

vi는 크게 두 가지 모드로 구성된다:

  1. 명령 모드 (Command Mode): 기본 모드로, 커서 이동이나 텍스트 편집 명령을 입력할 수 있다.
  2. 입력 모드 (Insert Mode): 텍스트를 실제로 입력할 수 있는 모드다.

모드 전환은 다음과 같이 한다:

  • 명령 모드에서 입력 모드로 전환: i, a, o 등을 누른다.
  • 입력 모드에서 명령 모드로 전환: Esc 키를 누른다.

 

기본 조작법

커서 이동

vi의 강력한 기능 중 하나는 효율적인 커서 이동이다. 

명령어 기능 설명
h 왼쪽으로 이동 커서를 한 글자 왼쪽으로 이동시킨다.
j 아래로 이동 커서를 한 줄 아래로 이동시킨다.
k 위로 이동 커서를 한 줄 위로 이동시킨다.
l 오른쪽으로 이동 커서를 한 글자 오른쪽으로 이동시킨다.
w 다음 단어의 시작으로 이동 커서를 다음 단어의 첫 글자로 이동시킨다.
b 이전 단어의 시작으로 이동 커서를 이전 단어의 첫 글자로 이동시킨다.
gg 파일의 처음으로 이동 커서를 파일의 맨 처음으로 이동시킨다.
G 파일의 끝으로 이동 커서를 파일의 맨 끝으로 이동시킨다.
숫자G 특정 줄로 이동 예: 50G는 50번째 줄로 이동시킨다.

텍스트 입력

명령 모드에서 다음 키를 눌러 입력 모드로 전환한다:

  • i: 현재 커서 위치에서 입력 시작
  • a: 현재 커서 다음 위치에서 입력 시작
  • o: 아래 새로운 줄에서 입력 시작

텍스트 삭제

명령어 기능 설명
x 현재 문자 삭제 커서가 위치한 문자를 삭제한다.
dd 현재 줄 삭제 커서가 위치한 줄을 삭제한다.
dw 단어 삭제 커서가 위치한 단어를 삭제한다.

복사와 붙여넣기

명령어 기능 설명
yy 현재 줄 복사 커서가 위치한 줄을 복사한다.
p 복사한 내용 붙여넣기 복사한 내용을 현재 커서 다음 위치에 붙여넣는다.

실행 취소와 재실행

명령어 기능 설명
u 마지막 명령 실행 취소 최근에 실행한 명령을 취소한다.
Ctrl + r 실행 취소한 명령 재실행 취소한 명령을 다시 실행한다.

검색

명령어 기능 설명
/텍스트 아래 방향으로 텍스트 검색 파일 내에서 텍스트를 아래 방향으로 검색한다.
?텍스트 위 방향으로 텍스트 검색 파일 내에서 텍스트를 위 방향으로 검색한다.
n 다음 검색 결과로 이동 이전에 검색한 텍스트의 다음 결과로 이동한다.
N 이전 검색 결과로 이동 이전에 검색한 텍스트의 이전 결과로 이동한다.

치환

텍스트를 치환할 때는 :s 명령어를 사용한다.

명령어 기능 설명
:%s/찾을텍스트/바꿀텍스트/g 전체 치환 파일 전체에서 찾을 텍스트를 바꿀 텍스트로 치환한다.
:10,20s/찾을텍스트/바꿀텍스트/g 특정 범위 치환 10번째 줄부터 20번째 줄까지에서 찾을 텍스트를 바꿀 텍스트로 치환한다.

파일 저장과 종료

명령어 기능 설명
:w 파일 저장 현재 파일을 저장한다.
:q vi 종료 vi 편집기를 종료한다.
:wq 또는 :x 저장하고 종료 파일을 저장한 후 vi 편집기를 종료한다.
:q! 변경 사항 무시하고 강제 종료 변경된 내용을 저장하지 않고 vi 편집기를 강제 종료한다.

매크로 사용

반복되는 작업을 자동화하기 위해 매크로를 사용할 수 있다. 매크로는 특정 명령어 시퀀스를 기록하고 재생하는 기능이다.

  1. 매크로 기록 시작: q + [레지스터 키] (예: qa는 레지스터 a에 기록 시작)
  2. 작업 수행: 반복할 작업을 수행한다.
  3. 매크로 기록 종료: q를 누른다.
  4. 매크로 실행: @ + [레지스터 키] (예: @a는 레지스터 a의 매크로 실행)
  5. 반복 실행: 숫자 + @ + [레지스터 키] (예: 5@a는 5번 실행)

다중 파일 편집

vi는 한 번에 여러 파일을 열어 편집할 수 있다.

명령어 기능 설명
:n 다음 파일 열기 열린 파일 목록에서 다음 파일을 연다.
:prev 또는 :N 이전 파일 열기 열린 파일 목록에서 이전 파일을 연다.
vi 파일1 파일2 파일3 여러 파일 열기 vi를 실행할 때 여러 파일을 동시에 연다.

도움말 보기

vi 내에서 도움말을 보려면 다음 명령어를 사용한다.

명령어 기능 설명
:help 도움말 보기 vi의 도움말을 전부 보여준다.
:help 명령어 특정 명령어 도움말 특정 명령어에 대한 도움말을 보여준다.

 

 

비정상적인 종료 시 swp 파일과 조치 방법

swp 파일이란?

vi 에디터로 파일을 편집하면 .swp 확장자를 가진 스왑 파일이 생성된다. 이 파일은 편집 중이던 내용을 임시로 저장하여, 다음에 vi를 열 때 복구할 수 있도록 도와준다.

swp 파일 확인하기

비정상적으로 종료된 후 vi를 다시 열면 다음과 같은 메시지가 표시될 수 있다:

E325: ATTENTION
Found a swap file by the name ".example.txt.swp"
          owned by: user   dated: Sat Sep 15 16:29:00 2023
         file name: ~user/example.txt
          modified: YES
         user name: user   host name: localhost
        process ID: 1234

swp 파일 처리 방법

1. 스왑 파일을 이용한 복구

비정상 종료로 인해 생성된 swp 파일을 사용하여 작업을 복구할 수 있다.

  • 복구 옵션 선택:
    • (O)pen Read-Only: 파일을 읽기 전용 모드로 연다.
    • (E)dit: 기존 파일을 편집 모드로 연다.
    • (R)ecover: 스왑 파일을 이용하여 복구한다.
    • (Q)uit: vi를 종료한다.
    • (A)bort: 모든 작업을 중단하고 vi를 종료한다.
  • R을 눌러 복구 모드를 선택한다.복구가 완료되면 vi는 스왑 파일의 내용을 복구한 상태로 열린다.

2. swp 파일 삭제하기

복구가 필요 없거나 스왑 파일이 더 이상 유효하지 않은 경우, swp 파일을 삭제할 수 있다.

 

참고 자료:

'CS' 카테고리의 다른 글

[Linux] 사용자와 그룹  (1) 2024.09.18
[Linux] 마운트  (0) 2024.09.18
[Linux] 런레벨  (0) 2024.09.18
[Linux] 가상 콘솔  (0) 2024.09.18
[Linux] 개요  (1) 2024.09.15