Bae's Digital Dialogues

리눅스[Linux] vi 편집기 사용 본문

Linux

리눅스[Linux] vi 편집기 사용

배디훈 2024. 6. 3. 03:05

가끔 편집기가 설치되어 있지 않은 환경에서 파일을 작성해야 하거나 터미널 환경에서 파일을 수정하는 것이 더 빠르게 해결할 수 있는 경우가 있다. 이번에는 Linux OS에서 기본으로 제공해주는 vi 편집기를 사용하는 방법에 대해서 알아보자

 

vi 편집기 사용하기

INSERT 모드(i):문자를 입력할 수 있다.

COMMAND 모드(esc):복사/붙여넣기, 파일 저장/죵료 등 다양한 작업을 할 수 있다.

 

COMMAND 모드에서 할 수 있는 것들(기본)

종료(quit):q 입력 후 enter

저장(write) 및 종료:wq 입력 후 enter

저장 및 강제종료(i):wq! 입력 후 enter

*커맨드모드에서는 영문만 사용할 수 있다.

 

이제 편집기 사용 방법에 대해서 알아보자

$ vi myfirstfile #vi 편집화면으로 이동(myfirstfile은 파일명)

 

vi 명령을 사용해서 myfirstfile이라는 파일의 이름을 지정하면 파일이 생성되는 것과 동시에 파일의 편집 화면으로 이동하게 된다.

 

키보드의 I키를 눌러 인서트 모드로 전환하였다.

 

 

파일의 내용을 Hello Vi!로 입력하고 esc를 눌러 하단에 있던 인서트 표시가 사라지면서 커맨드 모드로 전환이 된다.

그러면 여기서 파일의 내용을 저장는 :wq를 입력하고 엔터를 눌러주면 파일의 편집이 정상적으로 종료가 된다.

 

 

ls 명령으로 확인해 보면 myfirstfile이 정상적으로 생성된 것을 확인할 수 있다.

 

 

vi 명령을 사용하여 myfirstfile에 접근하여 i키로 인서트 모드로 이동한 후 Hello vi 맨 뒤에 add text를 입력하였다.

입력한 후 esc키를 눌러 command 모드로 이동한 후 :q를 입력하였다.

 

 

그러면 여기서 저장이 되지 않았기 때문에 강제 종료를 해야 한다는 에러가 나오게 된다.

 

 

다시 콜론을 입력하고 q를 입력한 다음 강제 종료를 의미하는 느낌표를 입력하고 엔터를 누르면 정상적으로 파일의 편집이 종료가 된다.

 

 

다시 myfirstfile을 열어보면 편집한 내용이 저장되지 않고 종료되어 있는 것을 확인할 수 있다. 마찬가지로 :q를 입력해서 편집을 종료해보겠다.

 

 

COMMAND 모드에서 할 수 있는 것들(활용)

줄삭제(delete) dd

복사(copy) yy

붙여넣기(paste) p

되돌리기(undo) u

 

 

vi Dockerfile을 입력해서 새로운 파일을 작성해 보자

$ vi Dockerfile #vi 편집화면으로 이동

 

 

 

파일을 연 후 인서트 모드로 전환하고 파일의 내용을 입력한 후 esc를 눌러 :wq로 파일을 저장하였다. 

 

 

vi 명령으로 동일한 도커 파일을 열어서 네 번째 카피라인에서 D를 두 번 입력해서 한 줄을 제거해 보자

제거가 되었다.

 

U를 입력해서 제거한 행동을 취소해보자

취소가 되었다.

 

 

세 번째 Expose 라인으로 가서 복사를 해보자

y를 두번 누르기 전에 2를 누르고 그 다음 y를 두번 누른다. 다음으로 맨 아래 라인으로 가서 p를 입력하면 EXPOSE라인부터 두 줄이 복사가 된 것을 확인할 수 있다.

 

 

COOMAND 모드에서 할 수 있는 것들(고급)

라인 보기:set number

텍스트 찾기 /검색어 후 n으로 탐색

텍스트 대체:%s/원본/대체/g

 

$ vi nginx.conf #vi 편집화면으로 이동동

 

 

nginx.conf 파일을 연 후 내용을 입력하였다.

 

 

커맨드 모드로 이동한 후 :set number를 입력하고 엔터를 눌렀다. 이렇게 텍스트에 라인이 출력되는 것을 확인할 수 있다.

 

 

/html을 입력하고 엔터를 눌렀다. 맨 처음 검색되는 문자는 18번 라인의 html이다.

 

 

여기서 next를 의미하는 n을 입력하면 다음 결과인 20번으로 커서가 이동한다.

 

 

마찬가지로 /를 입력한 후 expires를 검색했다. 

 

 

이렇게 expires가 30으로 되어 있는데 커서를 30으로 이동한 다음에 INSERT 모드로 이동하고 30d를 12h로 변경했다.

 

 

이번에는 파일 내용 중에 example.com이라고 되어 있는 내용을 hoonwiki.com으로 변경해 볼 것이다.

:%s/example.com/hoonwiki.com/g를 입력하였다.

 

 

example.com이라는 내용이 모두 hoonwiki.com으로 수정된 것을 확인할 수 있다.

 

 

이제 :wq!를 입력해서 파일을 저장하고 종료하겠다.