개발 업무를 진행하면서 vi editor 를 사용하는 일은 너무 당연한 일이 되었습니다. 서버에 따라서 명령어나 사용법에 조금씩 차이가 있으나 서버 작업을 하는 데 있어서 가장 많이 사용하는 vi editor 의 사용법에 대해서 몇 가지를 기록합니다.

vi editor 는 경우에 따라서 vim 이라고 부르기도 합니다. vi editor 가 vim 의 기능들을 품고 있는 것으로 알고 있지만, 최근에는 크게 구분하지 않고 사용하기 때문에 그대로 vi editor 라고 부르겠습니다. 서버 OS별로 조금씩 상이하나 지금 글을 적는 내용에서는 크게 차이나는 부분은 없어 보입니다.

기본적으로 linux 기반 시스템에서는 vi editor를 사용합니다. vim 을 명시적으로 사용하기도 하지만 대부분 vi 를 vim 으로 맵핑해 두고 사용하기도 합니다. 왜냐하면 vi 라고 입력해도 vim 이 실행되게 되어있고, vim 이라고 입력해도 vim 이 실행됩니다. 참고자료

on premise 환경에서 개발을 하던, cloud 상에서 개발을 하던 상관없이, linux 명령어는 아주 빈번하게 사용됩니다. 더불어 개발자의 PC가 Windows이건, MacOS 이건 결국 서버에 호출하는 명령어 역시 동일합니다. 최근에는 Windows 환경에서도 WSL 이라고 하여 Linux 기반의 OS를 가상화하는 기술이 활성화되었고, 우리가 흔히 서버 라고 부르는 영역은 거의 대부분 Windows Server가 아닌 linux 기반의 서버가 되었습니다.

점유율상의 논의를 하기 보다는 쉽게 접하고 사용하는 것 기준으로는 linux 기반 환경이 더욱 많아진 것이 사실입니다. UI를 필요로 하지 않고, UI에 들어가는 resource를 온전히 서버 측 프로그램에 할당하여 사용할 수 있다는 점에서 장점일 수 있을 뿐더러, 최근 나오는 여러 프로그램, WAS, Database 등이 linux 기반 환경에서 잘 동작하도록 개발/설계 되어 있습니다. 이러한 분위기는 개발 환경에도 영향을 주었기 때문에 개발 환경 역시 이러한 환경으로 조금씩 옮겨가는 것 같습니다.

학습 겸 메모 용도로 남겨두는 용도이니, 이 글을 보시는 분들 중 잘못된 부분을 알고 계시면 지적해 주셔도 됩니다.

기본 사용법

파일 수정 시작

아래와 같은 문법으로 파일을 editing mode 로 진입합니다.

vi test.sh

이렇게 진입한 화면은 메모장보다도 못한 UI를 보여주지만, UI라기 보다는 terminal 상에서 file editing이 가능하게 해주는 부분이라고 보시면 됩니다. 문자들의 집합인 terminal 에 약간의 눈속임을 써서 file을 수정하는 화면 같은 느낌을 주게 되는 것입니다.

vi editor르 진입하면 처음 보여지는 부분을 명령 모드(command mode) 라고 부릅니다. vi editor에는 무수히 많은 명령어들이 있습니다. 당연하게도 마우스나 메뉴 같은 것들을 전혀 사용하지 못하는 상황이기 떄문에 이러한 명령어를 이용해서 작업을 하게 해 둔것 같습니다.

여기서 이야기하는 명령어는 한줄 지우기복사 같은 기능이라고 볼 수 있습니다. terminal 에 접속하기 위해서 사용하는 putty 나 MobaXterm같은 windows용 프로그램이나 맥의 터미널, 혹은 iterm2같은 프로그램들에서, 마우스로 문자열을 드래그해서 선택하는 것은 곧 복사(Ctrl+C, Command+C) 명령어를 품고 있습니다. 여기서는 그런 의미가 아닌, vi editor 고유의 기능들입니다. 아래에서 조금 더 설명하도록 하겠습니다.

editor 종료

vi editor를 사용하는 터미널 환경에서는 마우스를 지원하지 않기 때문에, 화면이 있는 프로그램에서와 같이 어떤 명령을 내리기 위해서는 콜론(:) 을 입력하고 다음 내용을 입력합니다. 콜론(:)을 입력하면 화면의 맨 아래에 : 이 나타나고, 명령을 입력할 수 있게 됩니다.

터미널 환경을 처음 접하는 경우에 가장 적응하지 못하는 것 중 하나가 마우스 부분입니다. 터미널을 아주 특수한 경우를 제외하고서는 마우스를 지원하지 않습니다. (드래그-copy 기능 제외) 따라서 방향키로 위치를 이동해야 하는데, 과거에는 이조차도 키보드의 영문키 부분으로 이동해야 했지만 최근에는 거의 대부분의 시스템에서 화살표키(arrow-key)를 지원합니다.

종료를 하고 싶은 경우에는 콜론(:)을 누른 뒤, q(quit)!를 입력합니다. (간혹 설정 파일을 이리저리 수정하다가 꼬여버려서 엉망진창 되었을 때에는 이렇게 하면 저장하지 않고 빠져나옵니다.) vi editor 에 진입하기 전 그 상태로 되돌아갑니다.

: q!

현재까지 수정한 사항을 저장하고 종료하려면 w(write, 저장)q(quit) 를 입력합니다. 반드시 이 명령어를 입력하고 빠져나오는 것을 습관화 합니다. 그리고 이 명령어를 치고 엔터(return)키를 치기 전에는 잠시 쉬어 제대로 수정했는지도 확인하는 습관을 들입니다.

: wq

내용 입력하기

vi editor 에 진입하면 기본적으로는 수정 모드가 아닌, 보기 모드입니다. 이 상태에서 i(insert)를 입력하면 수정모드가 됩니다.

수정 모드에서 빠져나와 다시 보기 모드로 돌아가려면 esc 키를 누르면 됩니다.

대개의 경우 화면 아래쪽에 -INSERT- 와 같은 표시가 나타나므로 이를 잘 보면서 진행하면 됩니다

추가 사용법

기본 사용법만을 가지고도 파일을 수정하고 저장할 수 있습니다. 여기부터는 조금 더 편리한 기능들을 소개합니다. 워낙 vi editor 에 대한 기능들이나 단축키 등등이 많아 이 마저도 거의 기본기능이라고 할 수 있습니다.

delete

키보드의 del 키와 동일한 동작을 하는 것은 x 를 입력하면 됩니다. 수정 모드에서는 x를 입력하면 문자열 ‘x’가 입력되기 때문에 당연히 보기 모드에서 눌러야 동작합니다.

특정 부분을 조작하는 경우, xi 를 눌러가면서 어떤 부분을 지우고 내용을 채워넣는 것을 진행할 수 있습니다.

설정 파일등을 수정하는 데 있어서 x 키와 i 를 번갈아 가면서 자주 사용하게 되는 것 같습니다.

줄의 맨 끝에 입력

앞서 설명한 i(insert) 를 줄의 맨 끝에서 입력하면, 마지막 글자의 앞에 ‘삽입’되는 형태로 편집이 이루어집니다. 해당 줄의 마지막에 입력을 하고 싶을 때에는 shift + a 를 눌러 주면 커서가 위치한 줄의 맨 뒤에 입력을 할 수 있게 됩니다.

줄 복사 / 삭제

yaml, properties 등의 파일을 수정할 때에 가장 많이 사용하는 기능이 아닐까 싶습니다. 어떤 줄을 복사하여 아래에 붙여넣고 싶을 때, 해당 줄을 드래그하고 붙여넣기 하는 것은 번거롭습니다.

복사하고 싶은 줄에서 y + y 를 누르고 붙여넣기 하고 싶은 줄에서 p 를 누르면 줄 복사가 됩니다.

보통은 바로 아래에 붙여넣는 때에 빠르게 yyp를 입력함으로써 해당 기능을 유용하게 사용하고 있습니다.

만약 특정 line 을 삭제하고 싶다면 해당 줄에서 d + d 를 입력하면 됩니다.

찾아바꾸기

이 기능 정말 많이 사용하는 기능입니다. 설정 파일이든 뭐든, 찾아서 바꾸기를 하는 것이 vi 에서는 눈에 잘 들어오지도 않고 커서 이동도 힘든 편인데, 아래와 같이 입력해서 간단히 해결이 가능합니다.

:%s/<찾을 문자열>/<바꿀 문자열>

예를 들어 aaa를 찾아 bbb로 바꾸고자 한다면,

:%s/aaa/bbb

를 입력하면 됩니다.

출처 및 참고자료

추가적인 단축키들이 많이 있으며, google 에 검색만 하더라도 많은 정보들을 수집할 수 있습니다. 아래 제가 찾았던 문서 하나를 공유드립니다. 더 찾아보면 유용한 정보들이 많이 있을겁니다.


Leave a comment