09. VI 편집기
목표
1. vi 편집기 실행
2. vi 편집기 모드 변경
■ 현재 많이 사용되는 편집기 종류
vi 편집기 (Visual Editor)
- 유닉스 계열에서 가장 많이 사용되는 편집기이다.
vim (vi improved)
- vi 편집기와 호환되면서 다양한 기능을 추가하여 만든 편집기이다.
emacs 편집기 (Editor Macros)
- 매크로 기능이 있는 텍스트 교정 및 편집기이다.
1. vi편집기 실행
▷ vi
- emacs와 함께 유닉스 환경에서 가장 많이 쓰이는 문서 편집기이다.
- 이름에서 알 수 있듯이 줄단위 편집기가 아닌 한 화면을 편집하는 비주얼 에디터 이다.
- 버퍼에서 작업이 이루어 지며 저장 시키는 명령어를 입력해야 디스크 상에 파일의 내용으로 저장된다.
- 명령어 형식
# vi : 새 파일을 편집할 수 있는 화면이 나온다.
# vi filename : filename 이름을 가진 파일이 존재하는 경우 해당 파일을 편집하고 없으면 새 파일을 편집할 수 있는 화면이 나온다.
# vi -R filename : 파일을 Readonly 상태로 열어준다.
# vi -r filename : 이전 vi 편집 작업 중 비정상적으로 작업이 끝난 경우 편집하던 파일 복구시에 사용된다.
# vi -L : 이전 vi 편집 작업 중 비정상적으로 작업이 끝난 경우 복구할 파일들에 대한 전체 목록을 볼 수 있다.
# vi +38 filename : 편집 작업에 들어갈 때 38번째 라인부터 시작
2. vi 편집기 모드 변경 (각 모드 별로 명령어를 외우고 있어야 빠른 편집기 사용이 가능하다.)
▷ 명령 모드(Edit Mode)
- 편집기 실행시 기본 모드이다.
- <ESC>를 누르면 명령 모드로 간다.
- 이동
좌우 이동 : (h, l), (w, b), (0(^), $)
상하 이동 : (j, k), (<CTRL + F>, <CTRL + B>), (H, L), (G, nG, 1G)
h : 한 문자 왼쪽으로 이동(←)
l : 한 문자 오른쪽으로 이동(→)
w : 한 단어 오른쪽으로 이동
b : 한 단어 왼쪽으로 이동
0(^) : 라인의 처음 문자(라인의 처음)으로 이동
$ : 라인의 마지막으로 이동
j : 한 문자 아래로 이동(↓), 다음 라인으로 이동
k : 한 문자 위로 이동(↑), 이전 라인으로 이동
<CTRL + F> : 다음 페이지로 이동
<CTRL + B> : 이전 페이지로 이동
H : 현재 페이지의 가장 첫번째 줄로 이동
L : 현재 페이지의 가장 마지막 줄로 이동
1G : 문서의 첫 번째 라인으로 이동
G : 문서의 마지막 라인으로 이동
- 삭제
좌우 삭제: x, dw, (d0, d$), dd
상하 삭제: dd, 3dd, (:1,3d), (dG, d1G)
x : 현재 커서 한 글자 삭제
dw : 현재 커서 한 단어 삭제
d0 : 현재 커서부터 라인의 처음까지 삭제
d$ : 현재 커서부터 라인의 마지막까지 삭제
dd : 현재 라인 삭제
3dd : 현재 커서 라인을 포함해서 아래로 3개 라인 삭제
:1,3d : 1번째 라인부터 3번째 라인까지 삭제
dG : 현재 커서 라인부터 문서 마지막까지 삭제
d1G : 현재 커서 라인부터 문서 처음까지 삭제
- Undo
u : 바로 이전에 상태로 되돌림
U : 라인 전체에 대해 이전 상태로 되돌림
- Join Line
J : 현재라인에 아래 라인 붙이기
- Replace
r : 현재 글자를 대치
R : <ESC>키를 누르기 전까지 현재 글자 대치
- 검색/바꾸기(Search & Replace)
:%s/<찾을문자열>/<바꿀문자열>/g
ex) 5, 10s/Old/New/g /* 5번째 라인에서 10번째 라인까지 Old문자열을 New문자열로 바꾼다.*/
※ 유용하게 사용되는 것들
5,10s/^/#/ /* 5번째 라인에서 10번째 라인까지 주석처리(Comment) */
5,10s/^#// /* 5번째 라인에서 10번째 라인까지 주석해제(Uncomment) */
5,10s/^/ / (4 blank character) /* 5번째 라인에서 10번째 라인까지 들여쓰기 */
5,10s/^ // /* 5번째 라인에서 10번째 라인까지 내어쓰기 */
▷ 입력 모드(Insert Mode)
- 키 입력을 파일에 입력
- 편집기 실행시 기본 모드는 명령행 보드이다. 명령행 모드에서 입력을 하기 위해서는 입력행 모드로 전환 해야한다.
- 편집기에 뭔가를 입력하려면 입력행 모드로 전환하고 입력해야한다.
- a, A, i, I, o, O
- 입력(Insert)
i : 현재 커서 위치로부터 입력한다.
I : 현재 커서가 있는 행의 처음부터 입력한다.
- 첨부(Append)
a : 현재 커서 위치 이후부터 입력한다.
A : 현재 커서가 있는 행의 마지막부터 입력한다.
- Open Line
o : 현재 커서가 있는 아래행부터 입력한다.
O : 현재 커서가 있는 위행부터 입력한다.
▷ 최하위행(라인) 모드 (Last Line Mode)
- 복사/붙이기(Copy/Yank & Paste)
yy : 현재 라인 복사(Yank)
3yy : 현재 커서 라인 포함해서 하위의 3개의 라인 복사
:1,3 co 5 : 첫 번째 라인부터 3번째 라인까지 복사하여 5번째 라인 아래에 붙이기
:1,3 m 5 : 첫 번째 라인부터 3번째 라인까지 5번째 라인 아래에 이동하기
p : 현재 커서 아래에 붙이기
P : 현재 커서 위에 붙이기
- 검색(Search)
/New : 현재 커서 라인부터 찾을려는 문자열(예: New) 검색
?New : 문서의 마지막 라인부터 찾을려는 문자열(예: New) 검색
n : n(Next), 정방향다음번째 검색
N : N(Next), 역방향으로 다음번째 검색
- 저장 & 종료 (Save & Quit)
:w /* w(write), 현재 파일에 저장 하기 */
:w filename /* 다른 이름으로 저장 하기 */
:w!(root use) /* 현재 파일에 강제적으로 저장 하기 */
:w! file /* 현재까지의 변경사항을 file로 저장 */
:3,10w file /* 3번째 라인부터 10번째 라인까지 file로 저장 */
:q /* q(quit), 편집기 종료 */
:q! /* 저장 안하고 편집기 종료 */
:wq /* 저장하고 편집기 종료 */
:wq!(root Use) /* 현재 파일에 강제적으로 저장하고 편집기 종료 */
:r file /* file의 내용을 현재 커서 위치에서 읽어 들임 */
:!CMD /* vi 편집기를 빠져나가지 않은 상태에서 쉘 명령어를 수행 */
※ 저장하고 빠져나가기 여러가지 방법
:x
:wq
ZZ
①번이 명령행 모드 ② 입력행 모드 ③ 최하위행 모드
① 명령행 모드는 vi를 실행했을때 처음 기본모드
② 입력행 모드로 전환됬을때 하단에 insert가 나온다.
③ 최하위행 모드는 최하단에 명령어를 입력하고 있는것이 보일 것이다.
※ VI 편집기 환경 설정
- 동작하는 기능을 변경하기 위해서는 set 명령어를 사용한다.
- set 명령어 다음에 all을 사용하면 현재 편집기에서 사용가능한 모든 기능변수들에 대한 현재 설정값을 표시한다.
- 최하위행 모드에서 사용한다.
: set all (Last Line Mode)
: set number (: set nu) /*라인 번호 달기*/
: set nonumber (: set nonu) /*라인 번호 지우기*/
: set tapstop = 4 (: set ts=4) /*탭간격 4칸 들여쓰기*/
: set noshowmode /*상태표시행에 모드를 표시하거나 표시하지 않거나를 설정*/
: set directory=/tmp /*지정된 기능 변경*/