vi 필수 사용법 – vi 쉽게 배우기

vi 는 무엇인가?

vi는 1970년대에 개발되어 사용하기 시작한 Unix 계열 운영체제에 기본 유틸리티로 포함된 오픈소스 문서편집기다. 문서편집기라고 하지만 자체적인 문서파일의 포맷은 없고 그냥 text (ascii) 편집기일 뿐이다. 즉 Windows에서의 notepad 역할을 Unix와 Linux에서 수행하는 프로그램이 바로 vi다.

vi 라는 명칭은 요즘의 GUI 개념과 비교하면 전혀 어울리지 않는 “visual editor”에서 따온 것이라고 한다. 요즘의 Linux에서는 vi와 호환되는 vim 이라는 문서편집기가 설치되어 배포된다. 엄밀히 따지면 vim은 vi와는 다른 프로그램이지만 vi의 기능이 거의 모두 지원되기 때문에 vi와 vim이 같은 프로그램이라고 해도 무리가 없다.

vi 시작하기

vi는 Linux와 Unix에 ssh 또는 telnet 등으로 접속할 수 있는 모든 사용자가 쉘 프롬프트(# 또는 $)에서 vi 라는 명령을 입력하면 언제, 어디서나 실행이 된다. Windows의 Notepad와 같게 완전한 기본 유틸리티 프로그램이다.

vi 실행하기

위와 같이 vi 를 입력하고 엔터키를 누르면 다음과 같이 vi가 실행된다. 여기서 중요한 것을 이해해야 한다.

Vi 사용법속성 02

바로 vi를 실행하면 “커맨드(Command:명령) 모드”로 실행된다는 점이다.

vi의 커맨드 모드와 편집 모드

vi를 사용하려면 두 개의 모드를 이해해야 한다. 바로 “커맨드 모드”와 “편집 모드” 두 모드다.

커맨드 모드는 키보드의 입력이 문서에 입력되는 것이 아니라 명령으로 입력된다는 의미다. 예를 들면 소문자 “x” 를 입력하면 커서가 위치한 곳의 한 글자를 지우는 명령으로 동작한다. 또한 “dd” 즉 “d”를 두 번 연속으로 누르면 커서가 위치한 행(한줄)을 삭제한다. 그리고 h, j, k, l 키보드를 누르면 커서가 왼쪽,아래, 위, 오른쪽으로 이동한다. 커서키를 누르지 않고도 편집기에 있는 커서를 움직일 수 있는 것이다.

커맨드 모드로 바꾸기 위해서는 편집 모드 상태에서 키보드의 esc 키를 누르면 된다. 그리고 vi를 실행하면 첫 모드가 바로 커맨드 모드다. 만약 현재가 편집 모드인지 커맨드 모드인지 모르겠다면 그냥 esc 키를 누르면 된다. 여러번 다다다~눌러도 관계 없다.

편집 모드는 말 그대로 문서를 편집하는 모드다 모든 키보드의 입력이 문서에 텍스트로 입력된다. 그외 다른 설명이 필요없다. 커맨드 모드에서 편집 모드로 가기 위해서는 몇 가지 방법이 있는데 키보드에서 i 와 a와 o 를 누르는 것이다.

i 를 누르면 커서가 위치한 바로 앞 자리에 다음 키보드 입력부터 입력하게 되고 a 는 커서 바로 다음 자리에 다음 키보드 입력부터 입력하게 된다. o 를 누르면 커서가 위치한 라인의 다음에 빈 줄을 입력하고 빈 줄 맨 앞에서 부터 입력하게 된다.

커맨드 모드에서 편집 모드로 전환

앞의 vi가 처음 실행된 화면은 커맨드 모드다. 커맨드 모드에서 다음과 같이 i 또는 a를 누르면 — INSERT — 라는 메시지가 표시되면서 편집 모드로 바뀐다.

vi 편집 모드

편집 모드에서 a 에서부터 z 까지를 다음과 같이 입력했다

a 에서 z 까지 입력

z 까지 입력하게 되면 z 다음 자리에 커서가 위치하고 있다.

커맨드 모드로 전환

편집모드에서 키보드의 esc 키를 누르면 커서가 하나 앞으로 이동하면서 커맨드 모드로 바뀐다.

커맨드 모드 전환

커맨드 모드로 전환되면 키보드의 입력은 문서에 입력되지 않고 명령으로 인식된다.

커서 이동 후 입력하기

커맨드 모드에서 할 수 있는 대표적인 작업이 커서의 이동이다. 리눅스의 vim 에서는 편집모드에서 키보드의 커서키를 이용해 입력 커서의 이동이 가능하지만 유닉스의 커서키가 없는 vt100 등의 키보드에서는 편집 모드에서 입력커서를 이동할 수 없다. 때문에 커맨드 모드로 변경한 뒤 h, j, i, k 키보드를 이용해 커서를 이동한다. 아래 화면처럼 커맨드 모드에서 커서를 이동해본다.

커서 이동하기

vi를 사용한다면 키보드의 커서 이동키는 잊고 h, j, k, l 로 커서를 이동하는 습관을 들이는 것이 매우 중요하다. 훨씬 더 편리하고 빠르다.

커서 이동 후 i 키를 누르면 커서의 위치에서 편집 모드로 전환된다.

Vi 사용법속성 07

ABCDEF를 입력한다.

i를 눌러 편집모드 전환 후 입력

문자열 찾기

문서를 편집하다 보면 특정 문자열을 찾거나 찾은 문자열의 위치로 커서를 이동하고 싶을 때가 있다. 편집중인 문서에서 특정 문자열을 찾고자 할 때는 커맨드 모드에서 키보드의 ” / ” 키를 누르고 찾을 문자열을 입력하면 된다.

Vi 사용법속성 12

위 화면처럼 키보드의 esc 키를 눌러 커맨드 모드로 전환한 다음 키보드의 ” / ” 키를 누르고 “tu”를 입력하고 엔터키를 누르면 tu를 찾아 커서를 찾는 문자열의 첫문자 t로 이동시켜준다. 만약 다음에 나오는 “tu”를 더 찾고 싶다면 그 상태에서 키보드 n 을 누르면 된다. (next)

파일 저장하기

편집하던 파일을 저장할 때는 먼저 커맨드 모드로 전환해야 한다. 만약 커맨드 모드인지 편집 모드인지 헷갈린다면 그냥 esc 키를 누르면 된다. 어떤 상태에서든 esc 키를 누르면 무조건 커맨드 모드로 전환된다.

그 다음 키보드의 ” : 를 누른다.

Vi 사용법속성 09

그러면 화면의 맨 아래 라인에 : 가 표시되고 입력을 기다린다. 이 모드는 라인 모드(Line Mode)라고도 하는데 명령모드와 비슷하지만 보다 복잡한 명령을 수행할 수 있다.

다음과 같이 w [파일명] 을 입력한다.

w 명령으로 파일저장하기

이는 지금까지 편집한 문서를 test.txt에 저장하라는 의미다. 만약 이 파일이 test.txt 파일을 읽어들여 편집하던 것이라면 w 만 입력하고 엔터키를 누르면 기존에 열었던 test.txt 파일에 저장하게 된다. 즉 w 다음에 파일명을 입력하면 “새 파일로 저장하기”와 같은 뜻이라고 보면된다.

파일 읽기

다음은 파일 읽기를 해보자. 파일 쓰기와 비슷한데 w를 r로 바꿔주기만 하면 된다. 먼저 명령 모드로 전환하기 위해 esc 키보드를 누르고 키보드의 ” : “를 누른 다음 읽어올 파일명을 아래와 같이 입력한 후 엔터 키를 누르면 된다.

vi에서 파일 읽기

파일이 있다면 읽어올 것이고 없다면 파일을 열 수 없다는 에러메시지가 출력될 것이다. 파일명은 경로를 포함해도 되며 전체 경로와 파일명을 입력해도 된다.

그 외에도 vi는 복사하기, 붙여넣기, 문자열 바꾸기 등등 매우 다양한 기능을 제공한다.

그 전에 위에서 설명한 내용을 숙달해두는 것이 기본이다. 기본 기능에 숙달이 되면 하나씩 하나씩 필요한 기능의 사용법을 익혀나가면 된다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다