CoDream

[리눅스 편집기] vi 주의!!!! 본문

Develop/리눅스

[리눅스 편집기] vi 주의!!!!

코잠 2025. 4. 1. 22:25
728x90
반응형

vi는 리눅스 및 유닉스 시스템에서 널리 사용되는 텍스트 편집기입니다. vi는 고급 기능을 제공하여 코드 작성, 텍스트 편집, 파일 수정 등의 작업을 효율적으로 처리할 수 있습니다. vi는 명령 모드와 입력 모드로 나누어져 있으며, 다양한 작업을 명령어를 통해 수행할 수 있습니다.

1. vi 기본 구조

명령 모드 (Command Mode): vi의 기본 모드로, 텍스트를 수정하는 것이 아니라 커서를 이동시키거나 명령어를 입력할 수 있습니다.

입력 모드 (Insert Mode): 텍스트를 직접 입력하거나 수정할 수 있는 모드입니다.

명령줄 모드 (Ex Mode): 파일 저장, 종료 등 파일 관련 명령을 입력하는 모드입니다. :로 진입할 수 있습니다.


2. vi에서 할 수 있는 주요 작업

(1) 텍스트 편집

입력 모드로 전환: 명령 모드에서 i (현재 위치 앞에 입력), I (현재 줄의 맨 앞에 입력), a (현재 위치 뒤에 입력), A (현재 줄 끝에 입력) 등으로 입력 모드로 들어갑니다.

텍스트 삭제:

x: 현재 커서 위치의 문자를 삭제합니다.

dd: 현재 줄을 삭제합니다.

d{motion}: 커서 위치에서 {motion} 위치까지 삭제합니다.

dw: 현재 단어를 삭제합니다.

d$: 현재 위치에서 줄 끝까지 삭제합니다.


텍스트 복사 및 붙여넣기:

yy: 현재 줄을 복사합니다.

y{motion}: 특정 범위의 텍스트를 복사합니다.

p: 커서 뒤에 복사한 텍스트를 붙여넣습니다.

P: 커서 앞에 복사한 텍스트를 붙여넣습니다.


텍스트 변경:

r{char}: 현재 커서 위치의 문자를 {char}로 변경합니다.

cw: 커서부터 단어 끝까지 삭제하고 입력 모드로 전환합니다.

cc: 현재 줄을 삭제하고 입력 모드로 전환합니다.



(2) 커서 이동

단어, 문장, 줄 단위 이동:

h: 왼쪽으로 한 문자 이동

j: 아래로 한 줄 이동

k: 위로 한 줄 이동

l: 오른쪽으로 한 문자 이동

w: 다음 단어의 시작으로 이동

b: 이전 단어의 시작으로 이동

0: 현재 줄의 맨 앞까지 이동

$: 현재 줄의 맨 끝까지 이동

gg: 파일의 맨 처음으로 이동

G: 파일의 맨 끝으로 이동



(3) 검색 및 치환

검색:

/단어: 파일 내에서 단어를 검색합니다.

?단어: 파일 내에서 단어를 역방향으로 검색합니다.

n: 다음 검색 결과로 이동

N: 이전 검색 결과로 이동


치환:

:s/old/new: 현재 줄에서 old를 new로 변경합니다.

:s/old/new/g: 현재 줄에서 모든 old를 new로 변경합니다.

:%s/old/new/g: 전체 파일에서 모든 old를 new로 변경합니다.



(4) 파일 관련 작업

파일 저장 및 종료:

:w: 파일을 저장합니다.

:q: vi를 종료합니다. (변경 사항이 있을 경우 종료되지 않음)

:wq: 파일 저장 후 종료합니다.

:x: :wq와 동일한 명령어입니다.

:q!: 변경 사항을 저장하지 않고 종료합니다.


다른 파일 열기:

:e 파일명: 다른 파일을 열기

:bnext: 다음 열린 파일로 이동

:bprev: 이전 열린 파일로 이동



(5) 텍스트 조작 (Visual Mode)

시각 모드로 텍스트 선택:

v: 문자 단위로 텍스트를 선택

V: 줄 단위로 텍스트를 선택

Ctrl+v: 블록 선택 모드로 진입

y: 선택한 텍스트를 복사

d: 선택한 텍스트를 삭제

>: 선택한 텍스트를 오른쪽으로 들여쓰기

<: 선택한 텍스트를 왼쪽으로 내어쓰기



(6) 여러 파일 작업 (탭, 버퍼 사용)

여러 파일 열기:

:tabnew 파일명: 새 탭으로 파일을 엽니다.

:tabnext: 다음 탭으로 이동

:tabprev: 이전 탭으로 이동


버퍼 사용:

:b #: 마지막 열린 파일로 전환

:bN: N 번째 열린 파일로 전환



(7) 기타 유용한 명령어

파일에 대한 정보:

:set number: 줄 번호 표시

:set relativenumber: 상대적인 줄 번호 표시

:set ignorecase: 검색 시 대소문자 구분 없이 검색


매크로 사용:

q{레지스터}: 매크로 녹음 시작 (예: qa는 a 레지스터에 녹음)

{명령어}q: 매크로 녹음 종료

{레지스터}@: 매크로 실행 (예: @a)




---

결론

vi는 매우 강력한 텍스트 편집기로, 다양한 기능을 제공하며 이를 통해 코드 작성, 텍스트 편집, 설정 파일 수정 등을 효율적으로 처리할 수 있습니다. 위 명령어들을 익히고 잘 활용하면 리눅스 환경에서 작업하는 데 많은 도움이 될 것입니다.


728x90
반응형