본문 바로가기
Linux 2급

리눅스의 꽃 vi 편집기 (vi editor)

by 방뭉밍봉 2023. 11. 2.

오늘은 리눅스가 사랑받는 이유 중 하나인 vi 편집기에 대해 알려드리겠습니다

쉽게 따라 할 수 있는 내용이니 같이 따라 해보시길 바랍니다

Vi Editor

리눅스 유저들에게 가장 사랑받는 에디터

#>vi [path]

--> [path] 파일이 존재하면 해당 파일 열기

--> [path] 파일이 존재하지 않으면 생성하여 열기

리눅스 vi 편집기에는 3가지 모드가 있습니다 (명령 모드. 실행 모드. 입력 모드)

1. 명령 모드

명령 모드는 vi 편집기로 파일을 들어가자마자 아무것도 하지 않았을 때 보이는 기본 모드입니다 예시로 /etc/passwd 파일을 vi 편집기로 열어보겠습니다

[내용을 수정하면 안 되는 파일이니 나올 때는 :q!로 저장하지 말고 종료해주세요]

그러면 이렇게 passwd 파일에 저장된 리눅스 운영체제의 등록된 계정 정보들을 쫘르륵 볼 수 있습니다 여기서 아무 버튼도 누르지 않고 막 접속한 상태가 명령 모드입니다

기본적으로

#커서 이동

h 왼쪽

j 아래쪽

k 위쪽

l 오른쪽

커서 이동 단축키인데 그냥 ← ↑ → ↓ 키로도 이동이 가능합니다

u 명령 취소 (윈도우 Ctrl+Z와 같음)

0, ^ 커서 라인의 처음으로 커서 이동

$ 커서 라인의 끝으로 커서 이동 (shitf+4)

gg 현재 문서의 처음으로 커서 이동 (따닥! 눌러야 합니다)

G 현재 문서의 끝으로 커서 이동(shift+g)

#복사

yy 현재 커서 라인을 복사(한 줄 복사)

커서 있는 곳의 라인을 한 줄 복사합니다

yy

P 커서가 있는 곳에서 p를 누르면 한 줄 복사했던 라인이 붙여넣기 됩니다

[num] yy 현재 커서 라인부터 [num] 라인만큼 복사(여러 줄 복사)

 

키보드 위쪽 숫자 5를 누른 상태로 yy를 눌렀더니 5라인이 복사되었단 단어가 뜹니다 커서 있는 곳부터 아래로 5줄

9줄 이상을 복사할 때 15줄을 복사한다고 치면 1 누른 상태로 5를 눌러 둘 다 누른 상태로 yy 누르면 됩니다

#붙여넣기

p 현재 커서에 붙여넣기

5줄이 똑같이 복사되어서 붙여넣기된 걸 볼 수 있습니다

#라인 삭제

dd 현재 커서 라인을 삭제(한 줄 삭제)

따닥! 누르면 커서가 있는 라인 한 줄을 삭제합니다

[num] dd 현재 커서 라인부터 [num] 라인만큼 삭제(여러 줄 삭제)

yy 랑 같다고 생각하면 됩니다><

v 현재 커서에서 -- VISUAL --

v 키를 누르면 윈도우에서 마우스로 원하는 텍스트만 복사하고 싶을 때 드래그하는 것과 똑같이 됩니다

v 키 한 번 더 누르면 해제

y 키는 복사

d 삭제

2. 입력 모드

- 입력 모드 -> 명령 모드

ESC

- 명령 모드 -> 입력 모드

a 현재 커서의 오른쪽에서부터 입력

A 현재 커서 라인의 끝에서부터 입력

i 현재 커서의 왼쪽에서부터 입력

I 현재 커서 라인의 처음에서부터 입력

o 현재 커서 라인의 아랫줄에서 입력(아랫줄 생성)

O 현재 커서 라인의 윗줄에서 입력(윗줄 생성)

3. 실행 모드

[shift+;] 키를 동시에 누르면 (:) 실행 모드로 넘어가게 됩니다

:[num] 라인으로 이동

이렇게 하면 위에서부터 5번째 줄로 커서를 이동하게 됩니다

:$ 마지막 라인으로 이동 ( $ = 마지막 라인 )

#라인 표시

:set nu 줄 번호 O

set nu라고 적으시면

 

앞에 줄마다 번호를 붙여줍니다!!

:set nonu 줄 번호 X

줄 번호를 없애줍니다.

:[범위] y 범위만큼 복사

:[범위] d 범위만큼 삭제

12번째 줄을 삭제합니다!

/[문자열]

이렇게 사용하시면 ming라는 단어가 있는 곳으로 커서가 이동합니다

문자열 치환 (replace)

:%s/[원본 단어]/[바꿀 단어]/[옵션]

ming라는 문자열을 bong로 바꾸고 싶다 우선 한번 해보자

:22s/ming/bong라고 22번째 줄의 ming가 bong로 바뀐 걸 볼 수 있다

치환 기능은 별도의 옵션을 뒤에 넣어줘야 한다 만약

저기 있는 ming라는 단어를 MING/bong라고 대문자로 넣어주면 인식을 하지 못한다

대 소 문자 구분을 안 하게 하는 명령어는 끝에 i라고 해주는 명령어를 넣으면 된다

이렇게 하면 변경이 안되지만

끝에 /i를 넣었더니 대소문자 구분 안 하고 문자열 치환 한걸 볼 수 있다

#replace에서 줄바꿈 추가 하는 방법

예를 들어 아래 쉘 스크립트 파일에 exit 0을 다른 문자로 치환하고 추가로 아랫줄까지 명령어를 추가하고 싶다면

#> %s/exit 0/asdf\r/qwer 이런식으로 사용하면 된다 원래 쉘 스크립트 파일에서의 줄바꿈은 \n으

로 알고 있는데 vi나 vim에서는 줄바꿈을 \n 이 아닌\r 로 표현합니다.

vi 백그라운드 실행

:![command] 외부명령어

느낌표를 사용해보자 느낌표 명령어는 vi 편집기로 글을 작성하다가 vi 편집기를 잠깐 백그라운드로 돌리고

외부에 모든 명령어를 사용할 수 있는 명령어이다 윈도우로 치면 txt 파일 작성하다가

이거 누르고 다른 창에서 검색하는 거라고 생각하면 된다

이제 편집기로 글을 작성하고 나온 다음 해야 하는 종료, 저장..

:q 종료 그냥 종료한다 보통 이거 하나는 잘 안 씀

:q! 강제 종료(저장하지 않고 종료) alt+f4

:w [path] 다른 이름으로 저장

:wq 저장하고 종료 w를 쓰면 w/test/test1 이렇게 작성하면 vi 편집기로 편집한 내용을

다른 곳에 저장할 수 있다

:sp [path] 화면분할

이 화면 분할은 말 그대로 화면 분할 서비스이다 vi 편집기로 파일의 내용을 편집 또는 작성 중에 다른 파일의 내용을 확인할 때나 사용한다

이 외에도 많은 커맨드들이 있지만 오늘은 앞으로 vi 편집기를 사용할 때 문제없이 사용할 수 있도록 하는 자주 쓰이는 명령어들을 알아보았다. 나중에 vi가 사랑받는 이유인 vim이라는 편집기를 알아보자

------------------------------------------------------------------------------------------------

/etc/passwd 파일은 건드리면 안 되는 파일이나 나올 때 wq로 저장하지 말고

q! (저장하지 않고 강제 종료)을 하여 나온다

-------------------------------------------------------------------------------------------------