vi 에디터는 명령 모드와 입력 모드가 있다.
vi 명령은, 화살표 키, function key, delete, alt 등 특수키를 거의 사용하지 않고 평범한 알파벳 키들로 이루어져 있다.
vi 에디터가 개발될 당시는 표준 키보드 규격이 없어서 키보드마다 특수 키가 조금씩 달랐다.
그래서 널리 사용될 수 있는 범용 에디터를 개발하기 위해, 특수키를 사용하지 않고 명령을 입력할 수 있게 개발되었다.
vi 에디터는 명령 모드에서 시작한다.
h 왼쪽으로 한 칸 이동
j 아래로 한 칸 이동
k 위로 한 칸 이동
l 오른쪽으로 한 칸 이동
$ 줄 끝으로 이동
0 줄 선두로 이동
^ 줄 선두의 공백이 아닌 첫 문자로 이동
w 다음 단어로 이동
b 이전 단어로 이동
1G 줄1로 이동
3G 줄3으로 이동
24G 줄24로 이동
G 마지막 줄로 이동
ctr+f 한 페이지 아래로 이동
ctr+b 한 페이지 위로 이동
:q!(엔터) 저장하지 않고 vi를 종료한다.
:wq(엔터) 저장하고 vi를 종료한다.
ZZ 저장하고 vi를 종료한다.
:w(엔터) 파일을 저장한다.
:w 새파일명(엔터) 새파일명으로 파일을 저장한다.
x 키를 누르는 것과 같다.
X 키를 누르는 것과 같다.
dw 커서 위치부터 단어 끝까지 삭제
d$ 커서 위치에서 줄 끝까지 삭제
D 커서 위치에서 줄 끝까지 삭제
dd 커서 위치의 한 줄 삭제
J 커서가 위치한 줄 끝의 줄바꿈 문자를 삭제한다. 그래서 아래 줄이 현재 줄 끝에 결합된다.
d이동명령 현재 커서 위치부터, 이동명령에 의해 이동할 위치까지, 삭제한다
i 현재 커서 위치에서 입력 모드 시작
a 현재 커서 위치의 한 칸 오른쪽에서 입력 모드 시작
A 현재 커서 위치의 줄 끝에서 입력 모드 시작
o 현재 커서 위치의 한 줄 아래에 빈 줄을 삽입하고, 그 빈 줄에서 입력 모드 시작
/정규식(엔터) 아래 방향으로 정규식에 일치하는 문자열을 찾는다.
?정규식(엔터) 윗 방향으로 정규식에 일치하는 문자열을 찾는다.
n 직전 찾기를 아래 방향으로 계속한다.
N 직전 찾기를 윗 방향으로 계속한다.
/(엔터) 직전 찾기를 아래 방향으로 계속한다.
?(엔터) 직전 찾기를 윗 방향으로 계속한다.
:%s/정규식/바꿀문자열/g 파일 전체에서 정규식에 일치하는 문자열을 찾아서, 바꿀문자열로 치환한다
:%s/정규식/바꿀문자열/gc 위 명령과 같은데, 하나씩 치환할 때 마다 y/n을 묻는다
u undo
Ctrl+r redo
ctrl+g 현재 커서 위치의 줄 번호를 화면 아래 쪽에 출력한다.
. 직전 명령을 한번 더 실행한다
숫자를 입력하고 명령을 입력하면 그 숫자만큼 명령이 반복된다.
3j 3 줄 아래로 커서가 이동한다.
6w 6 번째 다음 단어로 커서가 이동한다.
3ctrl+f 3 화면 아래로 이동한다.
4dd 현재 커서 위치에서 4줄을 삭제한다.
5x delete 키를 5번 누르는 것과 같다
p 클립보드의 내용을 현재 커서 위치에서 한 칸 오른쪽에 붙여넣는다
yy 현재 커서가 위치한 줄이 클립보드에 복사된다
삭제 명령이 또한 잘라내기 명령이기도 하다
3yy 현재 커서가 위치한 줄부터 3 줄이 클립보드에 복사된다
y이동명령 현재 커서 위치부터 이동 명령에 의해 이동할 위치까지 클립보드에 복사(copy)된다.
d이동명령 현재 커서 위치부터 이동 명령에 의해 이동할 위치까지 클립보드에 잘라내기(cut)된다.
ma 현재 커서가 위치한 곳에 a 마크를 단다
mb 현재 커서가 위치한 곳에 b 마크를 단다
`a a 마크 위치로 커서를 이동한다
`b b 마크 위치로 커서를 이동한다
응용
임의의 영역을 클립보드에 복사하거나 잘라내려면
1. 영역의 시작 위치에서 ma 명령을 실행한다.
2. 영역의 끝 위치에서 d`a 명령을 실행한다. (잘라내기)
y`a 명령을 실행한다. (복사하기)
3. 붙여 넣을 위치 한 칸 왼쪽에서 p 키를 누른다. (붙여넣기)