박봉달의 개발생활
[프로그래밍:서버] UNIX #5 : vi 에디터 개요와 활용 / 명령어 본문
안녕하세요!
박봉달입니다!
유닉스는 특히 서버에 많이 쓰이는 운영체제입니다
우리가 많이 쓰는 윈도우와는 다른 방식으로 구성되어있는데요,
오늘은 유닉스(Unix) vi 에디터 개요와 활용 에 대해서 알아보도록 하겠습니다!
1. 유닉스 텍스트 에디터
* 유닉스 편집기
- 텍스트 파일의 작성, 편집 및 저장에 필요한 유틸리티 프로그램
- GUI 환경인 그놈에서 제공하는 gedit 으로 간단하게 문서 작성 가능
* 특징
- 커서와 화면 이동이 자유로움
- 파일의 편집 위치가 자유로움
- 편집기능이 다양
- vi에서 다루는 모든 자료는 일시적인 작업 할 수 있도록 버퍼에 파일의 사본을 만드므로 반드시 저장!
구분 |
종류 |
행 단위 편집 |
ed, ex, sed |
화면 단위 편집 |
vi, emacs |
GUI 편집기 |
gedit |
* 행단위 편집
- ed : 유닉스 초기의 편집기, 사용 안함
- ex : 행 단위 편집기지만 vi 에디터에 연결하여 다양한 기능 제공
- sed : 스트림 편집기, 지시된 명령에 따라 파일의 내용을 일괄적으로 바꿔 출력
* 화면 단위 편집
- vi : 리눅스에서 일반적으로 사용하는 편집기
- emacs : 제공하는 기능이 다양하지만 사용법이 어렵고 복잡하여 전문가들이 애용
2. vi 에디터 사용법
* 시작과 종료
* vi 시작하고 종료 : vi 시작
- 파일을 지정할 경우 : 파일의 내용이 보이고 없는 파일이면 빈 파일
- 파일을 지정하지 않을 경우 : 빈 파일이 열림
* vi 종료
- 명령 모드나 마지막 행 모드에서 저장하고 종료 가능 (모드 변경 : esc)
- vi의 저장과 종료 명령 키
모드 |
명령 키 |
기능 |
마지막 행 모드 |
:q |
vi 에 작업한 것이 없을 때 그냥 종료 |
:q! |
작업한 내용을 저장하지 않고 그냥 종료 |
|
:w, :w! 파일명 |
작업한 내용을 저장만 하며, 파일 명을 지정하면 새 파일로 저장 |
|
:wq, :wq! |
작업한 내용을 저장하고 vi를 종료 |
|
명령 모드 |
ZZ |
작업한 내용을 저장하고 vi를 종료 |
* vi 명령 형식 : vi [옵션] [파일]
옵션 |
설명 |
-R |
읽기 전용으로 파일 열기 |
-$ |
파일의 마지막 행으로 커서를 이동시키고 파일 열기 |
-n |
n으로 지정된 행으로 커서를 이동시키고 파일 열기 |
-r |
손상된 파일(작업 중 정전 등)을 복구시 이용 |
* vi 입력모드 전환
- 모든 입력이 끝나고 esc 누르면 명령모드로 바뀜
명령키 |
설명 |
i |
- 커서 앞에 입력 - 현재 커서 자리에 입력 |
a |
- 커서 뒤에 입력 - 현재 커서 다음 자리에 입력 |
o |
커서가 위치한 행의 다음 행에 입력 |
I (대문자 i) |
커서가 위치한 행의 다음 컬럼으로 이동해 입력 |
A |
커서가 위치한 행의 마지막 컬럼으로 이동해 입력 |
O |
커서가 위치한 행의 이전 행으로 이동해 입력 |
* 커서 행 이동
명령키 |
설명 |
k |
커서를 한 행 위로 이동 |
j |
커서를 한 행 아래로 이동 |
l |
커서를 한 문자 오른쪽로 이동 |
h |
커서를 한 문자 왼쪽로 이동 |
^ 또는 0 |
커서를 현재 행의 처음으로 이동 |
$ |
커서를 현재 행의 마지막으로 이동 |
- |
커서를 이전 행의 처음으로 이동 |
+ 또는 [Enter] |
커서를 다음 행의 처음으로 이동 |
H |
커서를 화면의 맨 위 행으로 이동 |
M |
커서를 화면의 중간 행으로 이동 |
L |
커서를 화면의 맨 아래 행으로 이동 |
w |
커서를 다음 단어의 첫글자 위치로 이동 |
b |
커서를 앞 단어의 첫글자 위치로 이동 |
e |
커서를 다음 단어의 마지막 위치로 이동 |
* 커서 화면 이동
- ^표시는 Ctrl 키를 의미
명령키 |
설명 |
^u(Ctrl+u) |
반 화면 위로 이동 |
^d |
반 화면 아래로 이동 |
^b |
한 화면 위로 이동 |
^f |
한 화면 아래로 이동 |
^y |
화면을 한 행만 위로 이동 |
^e |
화면을 한 행만 아래로 이동 |
* 내용 수정
명령키 |
설명 |
r |
커서가 위치한 문자를 다른 문자로 수정 |
cw, #cw |
- 커서 위치부터 현재 단어 끝까지 수정 - # : 수정할 단어 수 지정 (3cw는 커서의 위치부터 3단어 수정) |
s, #s |
- 커서의 위치부터 esc키를 입력할 때까지 수정 - 5s는 커서 위치부터 5글자 수정 |
cc |
커서가 위치한 행의 내용 모두 수정 |
c |
커서의 위치부터 행의 끝까지 수정 |
* 내용 삭제/취소
명령키 |
설명 |
x, #x |
커서가 위치한 문자를 삭제 |
dw, #dw |
커서가 위치한 단어를 삭제 |
dd, #dd |
커서가 위치한 행를 삭제 |
u |
방금 수행한 명령 취소 |
U |
해당 행에서 수행한 모든 명령 취소 |
:e! |
마지막으로 저장한 내용 이후의 것을 버리고 새로 작업 |
* 내용 편집
명령키 |
설명 |
yy, #yy |
커서가 위치한 행 복사 |
p |
커서가 위치한 행 아래쪽에 붙임 |
P |
커서가 위치한 행 위쪽에 붙임 |
dd. #dd |
커서가 위치한 행을 자름 |
3. vi 환경설정
* 모드형 편집기와 비모드형 편집기
* 모드형
- 입력 모드 : 텍스트를 입력할 수 있는 모드
- 명령 모드 : 텍스트를 수정하고 삭제하고, 복사와 붙이기 등 편집하는 모드
- esc : 입력모드 -> 명령모드
- 같은 글자라도 입력 모드에서는 텍스트로 처리하여 입력되고, 명령 모드에서는 편집 명령으로 사용
* 비모드형
- 입력 모드와 명령모드가 구분되어있지 않음
- 편집 기능을 Ctrl이나 Alt같은 특수키와 사용
- 한글과 워드는 비모드형 편집기
* 모드형과 비모드형 편집기 비교
구분 |
모드형(vi) |
비모드형(메모장) |
|
입력모드 |
텍스트 입력 |
||
명령 모드예 |
복사 |
yy |
Ctrl + c |
붙이기 |
p |
Ctrl + v |
|
저장 |
:wq, ZZ |
Ctrl + s |
|
모드 전환 |
i, a, o |
해당 없음 |
* vi 환경 설정하기
- 사용자 홈 디렉터리에 .exrc 파일로 저장
- vim 편집기에는 ~/.vimrc이 추가되었으며, ~/.exrc와 함께 제공됨
- vi의 마지막 행 모드에서 명령으로 실행
* vi 환경 설정 명령 (set)
명령키 |
설명 |
set nu |
파일 내용의 각 행에 행 번호 표시 |
set nonu |
파일 내용의 각 행에 행 번호 감춤 |
set list |
눈에 보이지 않는 특수문자 표시 |
set nolist |
특수문자 감춤 |
set showmode |
현재 모드 표시 |
set noshowmode |
현재 모드 감춤 |
set |
set으로 설정한 모든 vi 환경설정 값 출력 |
set all |
모든 vi 환경 변수와 현재 값 출력 |
* 사용자별 환경 설정
- 유닉스는 처음 설치하면 기본적으로 /bin/sh와 /bin/csh가 깔림
- /bin/sh :
솔라리스 터미널에서 -> TERM=sun
모든 사용자에게 환경을 적용시키고 싶다면 -> /etc/profile
개인적으로 설정하고 싶다면 -> $HOME/.profile
- /bin/csh :
모든 사용자에게 환경을 적용시키고 싶다면 -> /etc/profile , /etc/cshrc
개인적으로 설정하고 싶다면 -> $HOME/.cshrc
* [/bin/bash]
- bash는 따로 설치해주어야 사용 가능
- 환경설정 시 -> export
- 설정된 환경 볼 때 -> set
export PATH=$PATH:/usr/bin:/usr/share/bin:/sbin:/usr/sbin
export TERM=xterm
- 모든 사용자에게 환경을 적용시키고 싶다면
/etc/profile
/etc/bashrc
- 개인적으로 설정하고 싶다면
$HOME/.bashrc
오늘은 vi 에디터에 대해서 알아보았습니다.
Linux 와 Unix에서 많이 사용되는 에디터이니 꼭 이해해야겠습니다.
이상으로 유닉스 포스팅을 마칩니다!
정리한 내용이 나중에 쓰이길 바라며 포스트를 마칩니다 :)
'IT > UNIX' 카테고리의 다른 글
[프로그래밍:서버] UNIX #7 : 쉘 스크립트와 쉘 변수, 예약 변수 (0) | 2021.01.25 |
---|---|
[프로그래밍:서버] UNIX #6 : 유닉스 셸의 종류와 기능, 환경 변수 (0) | 2021.01.16 |
[프로그래밍:서버] UNIX #4: 디렉토리 생성/삭제 (0) | 2021.01.05 |
[프로그래밍:서버] UNIX #3 : 유닉스 디렉토리의 개요 (0) | 2021.01.04 |
[프로그래밍:서버] UNIX #2 : 퍼미션/소유자 관리 (0) | 2020.12.30 |