[Linux] 리눅스 vi 편집기 사용법 및 명령어 총정리, vi 초기 설정하기

vi 편집기(vi editor)란?

vi 편집기는 리눅스에서 기본으로 제공하는 문서 편집기이다. 다양한 명령어와 단축키를 지원하기 때문에 제대로 익힌다면 문서 작업의 효율성을 높일 수 있다. 

 

vi 편집기를 업그레이드 한 vim(vi improved) 에디터가 있는데, 근래 리눅스에서는 기본으로 vim 에디터를 적용하고 있다. 따라서 vi 명령어를 실행하면 기본적으로 vim 에디터를 실행하므로 vi와 vim 편집기를 구분하지 않고 vi라고 부르겠다.

 

 

vi 초기 설정하기

vi는 편리한 도구이지만 그대로 사용하기에는 불편한 부분이 많다. 

따라서 초기설정을 해주는 게 좋다.

 

.vimrc 파일
[그림 1] .vimrc 파일

 

vi의 설정은 홈디렉토리(~)에서 .vimrc 파일을 변경하여 진행할 수 있다. 

하지만 처음에는 .vimrc 라는 파일이 없기 때문에 만들어서 진행해 주면 된다.

 

[그림 1]과 같이 cd 명령어를 통해 홈 디렉터리로 이동해 vi 명령어로 .vimrc 파일을 만들어주면 된다.

 

vi 명령 모드
[그림 2] vi 명령 모드

 

 

아래에서 자세히 알아보겠지만, vi 첫 화면은 명령 모드로써 문서를 편집할 수 없다.

vi 편집기에서 문서(혹은 코드)를 작성하려면 기본 상태에서 i나 a 키를 누르면 아래 창에 INSERT 문구가 나오고 편집 모드로 들어간다.

 

이후 아래 추천하는 설정 중 원하는 설정을 입력하면 된다.

 

vi 추천 설정
[그림 3] vi 추천 설정

 

  • set number : 편집기에 줄 번호를 출력해 준다. 나는 이미 적용해서 [그림 3]처럼 줄번호가 나오지만 처음엔 줄번호가 없다.
  • set smartindent : 자동으로 들여 쓰기를 해준다. cindent 로 옵션을 주면 c 스타일의 들여 쓰기를 해준다.
  • set sts=4 : tab 키를 눌렀을 때 space 4칸을 입력한다.
  • set ts=4 : \t를 출력할 때 space 4칸을 출력한다.
  • set shiftwidth=4 : 자동 들여쓰기를 space 4칸으로 지정한다.
  • set wmnu : tab을 눌렀을 때 자동완성이 가능한 목록을 보여준다.
  • set hlsearch : 검색 시 하이라이트를 적용한다.
  • set nocompatible : 오리지널 vi와 호환하지 않는다. 이 옵션을 주면 방향키로 이동이 가능해진다.
  • set ruler : 상태 표시줄에 커서의 위치를 표시해 준다.
  • ser mouse=a : 마우스로 커서 이동을 가능하게 해 준다.
  • set showmatch : 매칭되는 괄호를 보여준다. 
  • if has("syntax") syntax on endif : 문법 하이라이트를 적용한다. 코딩하는 사람들에게 편리한 설정이다.

 

이외에도 다양한 설정이 있으므로 본인 입맛에 맞게 vi 편집기 설정을 적용할 수 있으니 필요하다면 더 찾아보자.

 

vi 저장하는 법
[그림 4] vi 저장하는 법

 

 

이제 ESC 키를 한 번 누른 다음, 콜론(:) 키를 입력하고 wq를 입력한 뒤 엔터를 누르면 설정 파일이 저장된다.

 

 

vi 모드

vi 모드
[그림 5] vi 모드

 

vi 편집기는 명령 모드, 입력 모드, 콜론 모드 총 3가지의 모드가 있다. 

 

명령 모드

vi 명령 모드
[그림 6] vi 명령 모드

 

vi [파일명] 명령어를 통해 파일을 편집할 수 있다. 이때 파일이 존재하면 파일을 수정하게 되고, 파일이 없다면 파일을 생성하게 된다.

 

vi 명령어를 입력하고 맨 처음 만나는 화면은 명령 모드이다. 여기서는 다양한 명령어를 사용하거나, 입력 모드 혹은 콜론

모드로 모드를 전환할 수 있다.

 

 

 

모드 전환하는 법

명령키 설명
i 현재 커서 앞에서 입력모드 전환
a 현재 커서 뒤에서 입력모드 전환
o 현재 커서의 다음 행에서 입력모드 전환
I(대문자 i) 현재 커서 행의 첫 컬럼에서 입력모드 전환
A 현재 커서 행의 마지막 컬럼에서 입력모드 전환
: 콜론 모드로 전환
ZZ 작업 내용을 저장하고 종료

 

주로 i키를 이용해서 입력모드로 전환하고, 콜론(:) 키를 이용해서 콜론 모드로 전환한다.

대문자 Z를 두 번 입력하면 파일 내용을 저장하고 종료한다.

 

 

 

 

자주 사용하는 명령

 

명령 모드에서는 다양한 명령을 사용할 수 있지만, 자주 사용하는 명령만 정리해 보자면 다음과 같다.

 

명령키 설명
h(↑) 커서를 위로 이동
j(↓) 커서를 아래로 이동
k(←) 커서를 왼쪽으로 이동
l(→) 커서를 오른쪽으로 이동
Ctrl + b / Page Up 한 페이지 위로 이동
Ctrl + f / Page Down 한 페이지 아래로 이동
v v키를 누르고 화살표를 누르면 블럭을 설정할 수 있다.  블럭을 통해 삭제 혹은 잘라내기, 복사 등을 할 수 있다.
x / [삭제할 글자 수] x 커서가 위치한 글자 삭제 / 글자 수 만큼 삭제
dd / [삭제할 행 수] dd 커서가 위치한 행 삭제 / 행 수 만큼 삭제
dw 커서가 위치한 단어 삭제
u 명령 취소 (윈도우의 Ctrl + Z)
y 블럭을 복사
yy / [복사할 행 수] yy 커서가 위치한 행 복사 / 행 수 만큼 복사
dd / [잘라내기할 행 수] dd 커서가 위치한 행 잘라내기 / 행 수 만큼 잘라내기
p 커서가 위치한 행의 아래 쪽에 붙여넣기
P 커서가 위치한 행의 위쪽에 붙여넣기
/문자열 아래 방향으로 문자열 검색
?문자열 위 방향으로 문자열 검색
n 탐색 방향으로 다음 문자열 검색 ( ex : /문자열로 문자 검색 시 아래로 탐색)
N 탐색 반대 방향으로 다음 문자열 검색

 

커서 이동은 vi 설정을 통해 마우스로 할 수 있기 때문에 나는 잘 쓰지 않는다. 하지만 단축키를 잘 사용하면 마우스 이동보다 훨씬 빠르니 익숙해지는 것도 좋을 것 같다.

 

 

입력 모드

vi 입력 모드
[그림 7] 입력 모드

 

명령 모드에서 i나 a 키 등을 눌러 입력 모드로 전환하면 왼쪽 아래에 -- INSERT -- 라는 문구가 보인다.

 

입력 모드에서는 문서를 편집할 수 있다. 설정을 따로 하지 않으면 입력 모드 상태에서는 화살표로 커서를 이동할 수 없다.

 

 

콜론 모드

vi 콜론 모드
[그림 8] 콜론 모드

 

명령 모드에서 콜론(:)을 입력하면 콜론 모드로 전환된다.

입력 모드에서 콜론을 입력하면 문서에 콜론이 써질 뿐이니 ESC키를 눌러 명령 모드로 전환한 뒤 콜론을 입력하도록 하자.

 

 

콜론 모드에서는 파일을 저장하거나 종료할 수 있다. 아래와 같은 명령을 입력하면 된다.

 

명령키 설명
:q vi를 종료한다. 작업 내용이 없을 때만 가능하다.
:q! 작업 내용을 저장하지 않고 강제 종료한다.
:w [파일명] 작업 내용을 [파일명]으로 저장한다. 파일명을 지정하지 않으면 기본 이름으로 저장된다.
:wq 작업 내용을 저장하고 종료한다.
:e! 마지막 저장 내용 이후의 수정 건들을 모두 취소하고 원상태로 저장한다.

 

보통 wq를 통해 저장하고 종료하지만, 가끔 에러가 나서 q! 를 이용하기도 한다.

 

 

 

 

 


참고

 

 

1. https://man7.org/linux/man-pages/man1/vi.1p.html

2. https://www.redhat.com/sysadmin/introduction-vi-editor

3. https://coding-factory.tistory.com/505

 

반응형

댓글

Designed by JB FACTORY