1. command mode
이 중에서 가장 먼저 vi를 시작하면 command mode로 시작이 되는데, 이 상태에서는 여러가지 명령을 할 수 있다. 명령어를 나열하면 다음과 같다.
- cursor movement
h : prompt를 좌측으로 한 칸 움직인다. 물론 아무런 내용이 없는 상태에서 는 prompt는 움직이지 않게 된다. ^^
j : prompt를 한 행 아래로 내린다. 물론 다음 행에 아무런 내용이 없다면 움직이지 않게 된다.
k : prompt를 한 행 위로 올린다.
l : prompt를 우측으로 한 칸 움직인다.
0 : 현재 prompt가 있는 행의 가장 처음으로 간다.
$ : 현재 prompt사 있는 행의 가장 마지막으로 간다.
G : 마지막 줄로 이동
nG: n번째 줄로 이동
b : 앞의 단어나 구두점까지 이동
B : 구두점 무시하고 앞의 단어까지 이동
^f : 한 page 다음으로 넘긴다.
^b : 한 page 전으로 넘긴다.
^l : refresh ; 화면을 깨끗히 보고 싶을 때, 다시 화면을 정돈해서 보여준다.
( 여기 까지가 대충 커서를 움직이는 명령들입니다.)
- insert command
a : append ; 즉, 현재 prompt가 있는 곳의 다음에 덧붙이는 명령이다. 이 명령은 edit mode로 전환된다. (즉, 글을 편집할 수 있다.)
i : insert ; 즉, 현재 prompt가 있는 곳부터 삽입하는 것이다. 이 역시 edit mode로 전환된다.
o : open line ; 즉, 새로운 행을 여는 개행 명령이다. 현재 prompt가 있는 위치에서 바로 다음 행을 열고 edit mode로 바꿔 준다.
O : 커서 윗줄로 이동하고 삽입 상태
s : substitute ; 즉, 현재 prompt가 있는 위치에 문자와 교환한다. edit mode로 바꿔 준다.
r : 한 문자를 바꿈
R : 문자열을 지우고 그자리에 다시 씀
cw : ? ; 위의 substitute에서 한 단어를 substitute하는 명령이다. 즉, 현재 prompt의 위치부터 한 단어를 교환할 수 있도록 한다. 이 역시 edit mode로 바꿔 준다.
(여기까지를 보면 vi에서 edit mode로 갈 수 있는 기본 명령임을 알 수 있다.)
- delete & etc.
x : ? ^^; ; 한 char를 지우는 것이다. delete명령이라고 할 수 있다.
dd : delete ; 한 line을 삭제하는 것이다. 위의 x 명령이 한 char임에 반해서 한 줄을 지운다.
D : 커서가 위치하고 있는 행부터 마지막 행까지 지움.
Y : yank ; yank는 당기다는 뜻인데, 잡아두는 것이다. 즉 copy해서 버퍼에 기억하고 있다. ( 나중에 paste하는데 사용할 수 있다.)
p : paste ; 붙이는 것인데 buffer에 있는 내용을 현재 prompt가 있는 위치의 다음에 append하거나(buffer의 내용이 한 행의 일부분일 때) 또는 다음 행 에 붙인다.(buffer의 내용이 한 행 또는 그 이상일 때)
p : Change buffer에 저장되어 있는 것을 아랫줄에 삽입
J : 현재 커서가 위치한 줄과 다음줄을 연결
# : 여기서 #은 실제 자판의 '#'이 아니고 숫자를 말한다. 이는 명령의 반복 회수를 나타낸다. 예를 들면 다음과 같다.
5dd : 5행을 지운다.
5x : 5개의 char를 지운다.
3Y : 3행을 buffer에 저장한다.
2. edit mode
이 모드는 command mode에서 들어 와서는 txt를 편집할 수 있다. esc를 하면 이 모드를 빠져나올 수 있다. 나오면 command모드 이다.
3. last line command mode
command mode에서 last line command mode로 변경하려면 : 를 입력.ZZ : file이 변경된 경우에는 변경된 내용을 저장한 후 종료하고 변경사항이 없을 경우 그냥 종료
w : 변경된 내용을 기록
w! : 쓰기가 금지된 경우 강제로 저장
w filename : buffer의 내용을 모두 file에 저장
e! : 수정한 것과 관계없이 다시 edit상태로 돌아감
q : 종료
q! : 저장을 묻지도 않고 그냥 종료
# : #th 행으로 prompt를 이동
4. extra skill
last line command에서 할 수 있는 몇 가지 명령들
- substitute
예):1,$s/acasia/영이/g
위의 명령은 첫 번째 줄부터 마지막 줄까지 acasia를 '영이'로 바꾸는 것이다.
s가 substitute 명령이구 g는 globally의 의미로 모든 acasia를 바꾸라는 의미 이다.
- delete
예):.,$d현재 줄 부터 해서 마지막까지 지우라는 의미
d가 delete 의 의미이다. .은 현재 줄의 의미
- undo
예):u실행 취소
5. search
/[검색어] : /를 하면 마지막 line으로 가고 그 상태에서 검색어를 치면 원하는 검색어의 위치로 prompt가 바뀐다.