본문 바로가기
프로그래밍/운영체제, 서버

vi 간단 사용법

by pentode 2018. 4. 1.

linux 터미널에서 설정 파일의 편집등의 작업을 할때가 많은데, 주로 vi 를 사용합니다. 요즘은 X 윈도우상에서 Windows 에서처럼 텍스트를 에디터를 사용하는 경우도 있지만 vi 사용법도 알아 두면 편리합니다.


vi는 일반적인 텍스트 에디터와는 다르게 입력 모드(input mode)와 제어 모드 (control mode)의 두 가지 모드가 있습니다. 입력 모드에서는 명령을 입력하고 Enter 키를 눌러 명령을 실행합니다. 제어 모드 에서는 제어 문자를 입력해서 편집을 수행합니다. 예전 vi 에서는 제어 문자를 사용한 편집만 가능했는데, 요즘 개선된 vi 인 VIM 에서는 화살표 키를 사용해서 이동하면서 편집하는것도 가능해 졌습니다.

 

CentOS 7 을 최소 설치를 하면 vi 명령어가 기본 설치되는데 이것은 실제로 VIM 입니다.

 

VIM 실행화면

 

 

간단히 실행하고 빠져나오는 것을 해보겠습니다. 아무런 파라미터 없이 vi 를 실행 합니다.

 

[root@localhost ~]# vi

 

- 이렇게 처음 들어오면 상태가 제어 모드 입니다.
- 키보드에 i 키를 입력합니다. i 는 현재 자리에서 부터 입력한다는 명령 입니다.
- 화면 하단에 -- INSERT -- 표시가 나옵니다.
- 이제 부터 키를 입력하면 글자가 입력이 됩니다.
- Enter키를 누르면 다음 라인으로 이동하여 글자를 입력할 수 있습니다.
- 화살표 키를 이용하여 이미 입력했던 내용 사이를 이동 할 수 있습니다.


 

vi 글수정 화면

 

 

ESC 키를 누릅니다. 다시 명령 문자를 입력할 수 있는 상태가 됩니다.  하단의 --INSERT-- 가 사라졌습니다. 이상태에서 Shift + ;(:) 키를 누릅니다. 화면 제일 하단에 콜론(:) 문자가 나오고 그뒤에 커서가 위치합니다. 이제 입력 모드로 들어 온 것입니다. 여기에서 wq test.txt 라고 입력하고 Enter 키를 누릅니다.

 

:wq test.txt

 

현재 내용을 test.txt 파일에 쓰고(write), vi 를 빠져나오라는(quit) 명입니다. ls 명령으로 파일 목록을 보면 test.txt 파일이 생성되어 있습니다.

 

[root@localhost ~]# vi test.txt

 

명령을 내리면 vi 가 test.txt 파일 을 열면서 시작됩니다.

 

이제 간단 간단한 제어 모드 명령을 알아 보겠습니다. 파일명을 입력해서 파일을  열었으므로 그 파일의 내용이 화면에 보일것입니다. 파일 내용안을 이동하려면 화살표 키를 사용하면 되는데, 화살표 키를 사용할 수  없을 경우도 있습니다. 원래 이동명령은 다음과 같습니다.

 

h - 왼쪽으로 커서 이동
j - 아래로 커서 이동
l(L의 소문자) - 오른쪽으로 커서 이동
k - 위로 커서 이동

w - 오른쪽으로 한단어 씩 이동
b - 왼쪽으로 한단어 씩 이동

0 - 행의 처음으로 이동
^ - 행에서 공백이 아닌 첫 문자로 이동
$ - 행의 마지막으로 이동

 

h, j, l, k, w, b 는 숫자를 입력하고 입력하면 숫자만큼 이동합니다.

 


이동 명령을 알아봤습니다. 앞에는 i 를 입력한 후 글자 입력을 시작했었습니다.  이러한 텍스트를 입력하는 명령을 알아 봅시다.

 

i - 현재 커서가 있는 자리에서 부터 글자를 입력합니다. 원래 있던 글자는 뒤로 밀려납니다.
a - 현재 커서가 있는 자리 뒤에서 부터 글자를 입력합니다. 원래 있던 글자는 뒤로 밀려납니다.
o - 현재 커서 아래에 빈 행을 삽입하고 입력을 시작합니다.
O - 현재 커서 위에 빈 행을 삽입하고 입력을 시작합니다.

I(i의 대문자) - 행의 맨 왼쪽에서 부터 글자를 입력합니다.
A - 행의 끝에서부터 글자를 입력합니다.
R - 현재 부터 글자를 덮어씁니다.

 

이제 삭제 명령을 알아 봅시다. 삭제 명령도 수십가지가 있지만, 가장 많이 사용하는 것을 두, 세가지만 알면 어떻게든 수정을 할 수 있습니다.

 

x - 현재 자리에 한자를 지웁니다. 뒤의 글자를 앞으로 당겨집니다.
X - 현재 자리에서 한자씩 앞으로 지워들어 갑니다.
dd - 한줄을 지웁니다.

D - 현재 커서부터 행 끝까지 삭제
db - 왼쪽으로 한단어 삭제
dw - 오른쪽으로 한단어 삭제

dh - 왼쪽으로 한문자 삭제
dl - 오른쪽으로 한 문자 삭제
d$ - 현재에서 끝까지 삭제
d0 - 현재에서 처음까지 삭제

 


삭제를 해 봤습니다. 삭제한 내용을 완전히 없어지는 것이 아니라 삭제버퍼에 저장됩니다. 그래서 이 버퍼를 이용해서 삭제 취소가 가능합니다. 삭제 취소 명령을 u 입니다. u 를 반복해서 누르면 계속 이전 작업을 취소 합니다. 삭제 버퍼의 내용은 되돌리기 외에 다른곳에 붙여 넣을 수 있습니다. 잘라내서 붙이는게 됩니다.

 

붙여넣는 명령어는 p와 P 입니다. 한 행을 삭제한 경우 p는 현재 커서 아래에 붙여넣고, P 는 위에 붙여넣습니다. 단어를 삭제한 경우 p 는 오른쪽에 P 는 왼쪽에 붙여 넣습니다.


앞에서 삭제를 잘라내기 처럼 사용했습니다. 그러면 복사/붙여넣기도 있을것 같습니다. 네, 있습니다. 복사는 d를 이용한 삭제 명령에서 d 대신에 y 를 사용하면 복사가 됩니다. 지우지 않고 삭제 버퍼에 내용을 넣기만 하는 것입니다.

 

한 행을 지우는 dd 대신에 yy 를 하면 한 행이 복사 됩니다. 붙여 넣기는 p와 P 입니다.


d 를 이용한 삭제 명령은 d 다음에 숫자를 사용해서 숫자 만큼 반복 할 수 있습니다. d3h 명령은 왼쪽으로 세자를 지웁니다. p를 누르면 지워진 세자가 붙여넣기가 됩니다.


 

문서 내에서 원하는 단어를 찾아가는 방법을 알아 봅시다.

현재 위치에서 아래로 찾기는 / 를 누릅니다. 화면 하단에 / 가 보입니다.
찾을 단어를 입력하고  Enter 를 누릅니다. /누른 다음에 바로 Enter 를 누르면 마지막 찾기 반복 입니다.

현재 위치에서 위로 찾기는 ? 를 누르고 단어를 입력합니다. 역시 ?에 바로 Enter 키는 마지막 위로 찾기 반복 입니다.

 

 

이제 입력모드에서 사용할 수 있는 명령어를 알아 봅시다. 입력모드로 들어가기 위해서는 Shift + ;(:) 입니다. 화면 하단에 : 와 커서가 보입니다.

 

- 지정한 행으로 이동하는 명령입니다. :뒤에 숫자를 입력하고 Enter 를 누르면 숫자 번째 행으로 이동합니다.

 

:3 - 세 번째 행으로 이동합니다.
:$ - 문서의 제일 끝으로 이동합니다.

 

- 많이 사용하는 것이 바꾸기 명령 입니다. 정규식을 사용해서 찾아서 바꿀 수 있습니다. 명령 형식은 다음과 같습니다.

 

:(시작줄),(끝줄)s/찾을패턴/바꿀문자열/옵션

 

시작줄과 끝은 숫자를 입력합니다. "." 은 현재 커서가 있는줄 "$" 는 문서의 마지막 줄을 뜻합니다. s 는 바꾸라는 명령입니다. 찾을 패턴은 정규식을 사용합니다. 바꿀 문자열은 그냥 문자열 입니다. 이 글자로 바뀝니다. 옵션은 g는 한행에 패턴이 여러번 나오면 모두 바꾸고, 없으면 한번만 바꿉니다. i 는 대소문자 구분을 하지 않습니다. c 는 바꿀 때 바꿀지 물어 봅니다.

 

:1,$s/This/That/gi

 

위 명령은 문서 전체에서 대, 소문자를 구분 하지 않고 This 를 That 로 바꿉니다.


많이 사용하는 예를 하나 더 보면 Windows와 Linux 는 개행문자가 다름 입니다. 그래서 ftp 로 Windows 에서 Linux 로 파일을 올릴 경우 보통 자동 변환이 되는데, 안 되는 경우에 행 끝에  ^M 문자가 보이는 경우가 있습니다. 이것을 모두 삭제하는 명령 입니다.

 

:%s/^M//g 또는 :1,$s/^M//g

 

% 는 문서 전체를 나타냅니다. ^M 을 입력할 때는 제어 문자 이므로 Ctrl + v, Ctrl + m 을 순서대로 입력해야 합니다. 보이는대로 문자를 입력하면 교환이되지 않습니다.


- 저장하고 빠져나가는 명령 입니다.

 

:w - 현재 내용을 저장합니다.
:wq - 현재 내용을 저장하고 빠져나갑니다.
:q - 변경된것이 없을때 저장하고 빠져 나갑니다.
:q! - 변경한것을 취소 하고 빠져 나갑니다.

 

이상으로 간단히 vi 를 사용하는 방법을 알아 봤습니다. 전혀 간단하지 않다구요. i, a, o, O, x, dd, u, :wq, :q! 만 알아도 간단한 설정 파일을 수정할 수 있습니다. db, dw, y, p, P 까지 알면 중급 사용자 입니다.

반응형