vi 에디터

호기성세균·2023년 6월 10일
0

cs

목록 보기
17/30

vi 에디터는 명령 모드와 입력 모드가 있다.
vi 명령은, 화살표 키, function key, delete, alt 등 특수키를 거의 사용하지 않고 평범한 알파벳 키들로 이루어져 있다.
vi 에디터가 개발될 당시는 표준 키보드 규격이 없어서 키보드마다 특수 키가 조금씩 달랐다.
그래서 널리 사용될 수 있는 범용 에디터를 개발하기 위해, 특수키를 사용하지 않고 명령을 입력할 수 있게 개발되었다.

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번 누르는 것과 같다

copy, cut, paste

p 클립보드의 내용을 현재 커서 위치에서 한 칸 오른쪽에 붙여넣는다
yy 현재 커서가 위치한 줄이 클립보드에 복사된다
삭제 명령이 또한 잘라내기 명령이기도 하다
3yy 현재 커서가 위치한 줄부터 3 줄이 클립보드에 복사된다
y이동명령 현재 커서 위치부터 이동 명령에 의해 이동할 위치까지 클립보드에 복사(copy)된다.
d이동명령 현재 커서 위치부터 이동 명령에 의해 이동할 위치까지 클립보드에 잘라내기(cut)된다.

mark & goto

ma 현재 커서가 위치한 곳에 a 마크를 단다
mb 현재 커서가 위치한 곳에 b 마크를 단다
`a a 마크 위치로 커서를 이동한다
`b b 마크 위치로 커서를 이동한다

응용
임의의 영역을 클립보드에 복사하거나 잘라내려면
1. 영역의 시작 위치에서 ma 명령을 실행한다.
2. 영역의 끝 위치에서 d`a 명령을 실행한다. (잘라내기)
y
`a 명령을 실행한다. (복사하기)
3. 붙여 넣을 위치 한 칸 왼쪽에서 p 키를 누른다. (붙여넣기)

profile
공부...열심히...

0개의 댓글