(1) 시작 |
vi 파일 : vi를 시작하여 지정한 파일을 편집한다. vi -R 파일 : 지정한 파일을 읽기 전용으로 불러들인다. |
(2) 종료 |
:wq : 데이터를 저장하고 종료한다. :q! : 데이터를 저장하지 않고 종료한다. |
(3) 이동 |
h : 커서를 한 칸 왼쪽으로 이동한다.
j : 커서를 한 줄 아래로 이동한다.
k : 커서를 한 줄 위로 이동한다.
l : 커서를 한 칸 오른쪽으로 이동한다.
: 커서를 한 칸 왼쪽으로 이동한다.
: 커서를 한 칸 오른쪽으로 이동한다.
- : 커서를 이전 줄의 처음으로 이동한다.
+ : 커서를 다음 줄의 처음으로 이동한다.
: 커서를 다음 줄의 처음으로 이동한다.
0 : 커서를 현재 줄의 맨 앞으로 이동한다.
$ : 커서를 현재 줄의 맨 끝으로 이동한다.
^ : 커서를 현재 줄의 공백이나 탭이 아닌 첫 글자로 이동한다.
w, W : 커서를 다음 단어의 첫 글자로 이동한다.
e, E : 커서를 다음 단어의 끝 글자로 이동한다.
b, B : 커서를 이전 단어의 첫 글자로 이동한다.
( : 다음 문장의 처음으로 이동한다.
) : 이전 문장의 처음으로 이동한다.
{ : 다음 문단의 처음으로 이동한다.
} : 이전 문단의 처음으로 이동한다.
H : 커서를 화면 맨 위로 이동한다.
M : 커서를 화면 중간으로 이동한다.
L : 커서를 맨 아래로 이동한다.
^F : 한 화면 아래로 이동한다.
^B : 한 화면 위로 이동한다.
n^F : n화면 아래로 이동한다.
n^B : n화면 위로 이동한다.
^D : 반화면 아래로 이동한다.
^U : 반화면 위로 이동한다.
n^D : n줄만큼 아래로 이동한다.
n^U : n줄만큼 위로 이동한다. |
(4) 입력 |
i : 입력 모드로 전환, 커서 위치 앞에서 글을 입력한다.
a : 입력 모드로 전환, 커서 위치 뒤에서 글을 입력한다.
I : 입력 모드로 전환, 현재 줄의 앞에 글을 입력한다.
A : 입력 모드로 전환, 현재 줄의 끝에 글을 입력한다.
o : 입력 모드로 전환, 현재 줄의 아래에 글을 입력한다.
O : 입력 모드로 전환, 현재 줄의 위에 글을 입력한다. |
(5) 삭제 |
x : 커서가 있는 문자를 삭제한다.
X : 커서의 왼쪽 문자를 삭제한다.
D : 커서부터 줄의 끝까지 삭제한다.
dd : 현재 줄 전체를 삭제한다.
dG : 커서부터 파일의 끝까지 삭제한다.
d1G : 커서부터 파일의 맨 앞까지 삭제한다.
:nd : n번째 줄을 삭제한다.
:n, md : n번째 줄부터 m번째 줄까지 삭제한다. |
(6) 고치기 |
r : 입력모드로 바뀌지 않고 한 글자만 변경한다.
R : 입력하는 대로 겹쳐 써서 변경한다.
s : 커서가 있는 위치의 한 글자를 지우고 거기서부터 글을 입력한다.
S : 커서가 있는 행을 지우고 글을 입력한다.
C : 커서의 위치로부터 줄 끝까지 지우고 거기서부터 글을 입력한다.
cc : 커서가 있는 행을 지우고 글을 입력한다.
~ : 대, 소문자를 서로 바꾼다.
u : 수정했던 마지막 명령을 취소한다.
U : 현재 줄을 저장한다.
. : 수정했던 마지막 명령을 반복한다. |
(7) 붙이기 |
p : 마지막으로 지워진 내용을 커서의 뒤, 아래에 삽입한다.
P : 마지막으로 지워진 내용을 커서의 앞, 위에 삽입한다.
xp : 두 문자를 바꾼다.
deep : 두 단어를 바꾼다.
ddp : 두 줄을 바꿈 |
(8) 복사와 이동 |
:ncom : n줄을 m줄 밑에 복사해서 붙인다.
:n, mcol : n줄부터 m줄까지 한 줄 밑에 복사해서 붙인다.
nyy, nY : 커서에서 n줄을 복사한다.
nyw : 커서에서 n단어만큼 복사한다. |
(9) 치환 |
:s/원래내용/고칠내용/ : 현재 줄에서 원래 내용을 고칠 내용으로 치환한다.
:ns/원래내용/고칠내용/ : n줄에서 원래 내용을 고칠 내용으로 치환한다.
:n,ms/원래내용/고칠내용/ : n줄에서 m줄까지 원래 내용을 고칠 내용으로 치환한다.
:%s/원래내용/고칠내용/ : 모든 줄의 원래 내용을 고칠 내용으로 치환한다. |
(10) 검색 |
/단어 : 지정된 단어를 현재 위치에서 아래로 찾는다.
/ : 이전의 패턴에 대해 아래로 검색을 반복한다.
?단어 : 지정된 단어를 현재 위치에서 위로 찾는다.
? : 이전의 패턴에 대해 위로 검색을 반복한다.
n : /나 ?명령에 대해 같은 방향으로 검색을 반복한다.
N : /나 ?명령에 대해 반대 방향으로 검색을 반복한다. |
(11) 약어사용 |
:ab short long : short를 long에 대한 약어로 변경한다.
:ab : 현재 지정되어 있는 약어 목록을 표시한다.
:una short : short를 약어에서 해제한다. |
(12) 줄의 병합, 분리 |
r : 문자를 새로운 줄로 변경한다.
J : 커서를 중심으로 앞줄과 뒷줄을 한 줄로 합친다.
:set wm=n : 오른쪽으로 n문자 위치에서 자동적으로 줄을 나눈다. |
(13) 데이터 읽기 |
:nr 파일 : 파일의 내용을 n줄 다음에 삽입한다.
:r 파일 : 파일의 내용을 현재의 줄 다음에 삽입한다.
:nr !명령어 : 명령어의 결과를 n줄 다음에 삽입한다.
:r !명령어 : 명령어의 결과를 현재의 줄 다음에 삽입한다. |
(14) 줄번호 |
nG : 줄번호 n으로 바로 간다.
1G : 첫 줄로 간다.
G : 파일의 마지막 줄로 간다.
:map g lG : g가 lG와 같도록 매크로를 정의한다. |
(15) 파일 바꾸기 |
:e 파일 : 현재 작성하고 있던 파일에서 지정한 파일로 바꾼다.(작성하고 있던 파일이 저장되어 있지 않으면 바뀌지 않음)
:e! 파일 : 현재 작성하고 있던 파일이 저장이 되지 않았더라도 지정한 파일로 바꾼다. |
(16) 저장 |
:w : 데이터를 저장한다.
:w 파일 : 지정한 파일로 데이터를 저장한다.
:w >> 파일 : 지정한 파일에 데이터를 추가한다.
:w! : 읽기 전용일 경우 데이터를 강제로 저장한다.
:w %.bak : 현재 파일 이름에 .bak를 붙여서 새로운 파일로 저장한다.
:10,$ w 파일 : 10줄부터 끝까지 파일 이름으로 저장한다.
:.,50 w 파일 : 현재 줄부터 50줄까지 파일 이름으로 저장한다. |
(17) 정규표현식을 사용하기 위한 특수기호 |
. : 새로운 줄을 제외한 모든 단일 문자와 대응한다.
* : 0 또는 그 이상의 선행 문자와 대응한다.
^ : 줄의 시작과 대응한다.
$ : 줄의 끝과 대응한다.
\< : 단어의 시작과 대응한다.
\> : 단어의 끝과 대응한다.
[ ] : 묶여진 문자중의 하나와 대응한다.
[^ ] : 묶여진 문자를 제외한 아무것하고나 대응한다.
\ : 이어지는 기호를 문자 그대로 해석한다. |
(18) 셸 명령 실행 |
:!명령어 : vi를 중단하고 지정한 셸 명령을 실행한다.
:!! : vi를 중단하고 이전의 셸 명령을 실행한다.
:sh : vi를 중단하고 셸을 실행한다.
:!csh : vi를 중단하고 새로운 C셸을 실행한다. |
(19) 데이터를 처리하기 위한 셸명령의 사용 |
n!!명령어 : n번 줄에서 명령어를 실행한다.
!m 명령어 : 커서부터 m까지 명령어를 실행한다.
!m fmt : 커서부터 m까지 줄들을 형식에 맞춘다. |
(20) 시스템이 다운되었을 경우 되살리기 |
vi -r : 되살릴 수 있는 모든 파일 이름을 보여준다.
vi -r 파일 : vi를 시작하여 지정한 파일을 되살린다. |
(21) 화면보기 |
^l : 화면을 다시 뿌려준다.(= ^L)
:set nu : 줄 번호를 표시해 준다.(= :set number)
:set nonu : 줄 번호를 표시하지 않는다.(= :set nonumber)
:set list : 탭은 ^I로 줄의 끝은 $로 표시한다.
:set nolist : list 값을 취소한다.
:set tabstop=n : 탭의 크기를 n으로 지정한다. 기본은 8이다. |