linux 터미널에서 설정 파일의 편집등의 작업을 할때가 많은데, 주로 vi 를 사용합니다. 요즘은 X 윈도우상에서 Windows 에서처럼 텍스트를 에디터를 사용하는 경우도 있지만 vi 사용법도 알아 두면 편리합니다.
vi는 일반적인 텍스트 에디터와는 다르게 입력 모드(input mode)와 제어 모드 (control mode)의 두 가지 모드가 있습니다. 입력 모드에서는 명령을 입력하고 Enter 키를 눌러 명령을 실행합니다. 제어 모드 에서는 제어 문자를 입력해서 편집을 수행합니다. 예전 vi 에서는 제어 문자를 사용한 편집만 가능했는데, 요즘 개선된 vi 인 VIM 에서는 화살표 키를 사용해서 이동하면서 편집하는것도 가능해 졌습니다.
CentOS 7 을 최소 설치를 하면 vi 명령어가 기본 설치되는데 이것은 실제로 VIM 입니다.
※ 간단히 실행하고 빠져나오는 것을 해보겠습니다. 아무런 파라미터 없이 vi 를 실행 합니다.
[root@localhost ~]# vi |
- 이렇게 처음 들어오면 상태가 제어 모드 입니다.
- 키보드에 i 키를 입력합니다. i 는 현재 자리에서 부터 입력한다는 명령 입니다.
- 화면 하단에 -- INSERT -- 표시가 나옵니다.
- 이제 부터 키를 입력하면 글자가 입력이 됩니다.
- Enter키를 누르면 다음 라인으로 이동하여 글자를 입력할 수 있습니다.
- 화살표 키를 이용하여 이미 입력했던 내용 사이를 이동 할 수 있습니다.
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 까지 알면 중급 사용자 입니다.
'프로그래밍 > 운영체제, 서버' 카테고리의 다른 글
VirtualBox로 Linux 서버 만들기 2 - CentOS7 설치하기 (8) | 2018.04.02 |
---|---|
Windows.old 폴더 삭제하기 (2) | 2018.04.02 |
VirtualBox로 Linux 서버 만들기 1 - 설치 및 가상머신 생성 (0) | 2018.04.02 |
CPU 가상화 지원여부 확인하기 (2) | 2018.04.02 |
foobar2000 설정 - WASAPI(Windows Audio Session API) (0) | 2018.04.01 |