
리눅스 상에서 사용되는 에디터들 중에서 가장 기본적인 에디터인 vi.
명령어들을 정리해 보았습니다.
출처 : http://gyuha.tistory.com/157
|
명령어 |
설명 |
|
:w |
저장 |
|
:w file.txt |
file.txt 파일로 저장 |
|
:w ≫ file.txt |
file.tx파일에 덧붙여서 저장 |
|
:q |
vi 종료 |
|
:q! |
vi 강제 종료 |
|
ZZ |
저장 후 종료 |
|
:wq! |
강제 저장 후 종료 |
|
:e file.txt |
file.txt파일을 불러옴 |
|
:e |
현재 파일을 불러옴 |
|
:e# |
바로 이전에 열었던 파일을 불러 옴 |
|
a |
커서 위치 다음칸부터 입력 |
A |
커서 행의 맨 마지막부터 입력 |
|
i |
커서의 위치에 입력 |
I |
커서 행의 맨 앞에서 부터 입력 |
|
o |
커서의 다음행에 입력 |
O |
커서의 이전 행에 입력 |
|
s |
커서 위치의 한글자를 지우고 입력 |
cc |
커서위치의 한 행을 지우고 입력 |
|
h |
왼쪽으로 이동 |
l |
오른쪽으로 이동 |
|
j |
아래행으로 이동 |
k |
위 행으로 이동 |
|
w 또는 W |
다음 단어의 첫 글자로 이동 |
b 또는 B |
이전 단어의 첫 글자로 이동 |
|
e 또는 E |
단어의 마지막 글자로 이동 |
<CR> |
다음행 첫 첫 글자로 이동 |
|
^ |
그행의 첫 글자로 이동 |
$ |
그 행의 마지막 글자로 이동 |
|
+ |
다음 행의 첫 글자로 이동 |
– |
위 행의 첫 글자로 이동 |
|
( |
이전 문장의 첫 글자로 이동 |
) |
다음 문장의 첫 글자로 이동 |
|
{ |
이전 문단으로 이동 |
} |
다음 문단으로 이동 |
|
H |
커서를 화면 맨 위로 이동 |
z<CR> |
현재 행을 화면의 맨우로 이동 |
|
M |
커서를 화면 중안으로 이동 |
z. |
현재 행을 화면의 중앙으로 이동 |
|
L |
커서를 화면 최하단으로 이동 |
z- |
현재 행의 화면의 최하단으로 이동 |
|
[n]H |
커서를 위에서 n행으로 이동 |
[n]L |
커서를 아래에서 n행으로 이동 |
|
ctrl+u |
반 화면 위로 스크롤 |
ctrl+d |
반 화면 아래로 스크롤 |
|
ctrl+b |
한 화면 위로 스크롤 |
ctrl+f |
한 화면 아래 스크롤 |
|
gg 또는 1G |
문서의 맨 처음으로 이동 |
G |
문서의 맨 마지막 행으로 이동 |
|
[n]G 또는 :[n] |
n행으로 이동 |
||
|
x 또는 dl |
커서 위치의 글자 삭제 |
|
X 또는 dh |
커서 바로 앞의 글자 삭제 |
|
dw |
현재 위치부터 스페이스 까지 삭제 |
|
diw |
현재 위치에 있는 단어 삭제 |
|
dd |
커서가 있는 행을 삭제 |
|
[n]dd |
현재 커서 부터 아래 n번째 줄까지 삭제 |
|
dj |
현재 커서와 아래 줄 삭제 |
|
[n]dj |
현재 커서 부터 아래 n+1번째 줄까지 삭제 |
|
dk |
현재 커서와 윗로 n+1번째 줄까지 삭제 |
|
[n]dk |
현재 커서와 윗 줄 삭제 |
|
D 또는 d$ |
현재 커서가 있는 위치부터 행 끝까지 삭제 |
|
d0 또는 d^ |
현재 커서가 있는 위치부터 행 시작 까지 삭제 |
|
yy 또는 Y |
커서가 있는 한 행 복사 |
|
p |
현재 커서에 붙여 넣기, 행 복사 일 경우 아래 줄에 붙여넣음. |
|
P |
현재 커서위치의 앞행에 붙여 넣기, 행 복사일 경우에는 윗 줄에 붙여 넣음 |
|
[n]yy 또는 [n]Y |
커서가 위치한 이후로 n행 복사 |
|
[n]p |
n번 만큼 붙여넣기 반복 |
|
v |
블록 지정 |
|
V |
줄단위 블록 지정 |
|
ctrl+v(윈도우에서는 ctrl+q) |
비쥬얼 블록 지정 |
|
블록 지정 중 명령 |
|
|
y |
블록 복사 하기 |
|
r |
치환 |
|
d |
지정 블록 지우기 |
|
U |
대문자로 바꾸기 |
|
u |
소문자로 바꾸기 |
|
~ |
대소문자 전환 |
|
J |
행 합침 |
|
: |
선택 영역에 대하여 ex명령 |
|
< |
행 앞에 탭 제거 |
|
> |
행 앞에 탭 삽입 |
|
/[문자열] |
문자열 탐색 |
|
:s/old/new |
현재 행의 처음 old를 new로 교체 |
|
:s/old/new/g |
현재 행의 모든 old를 new로 교체 |
|
:10,20s/old/new/g |
10행부터 20행까지 모든 old를 new로 교체 |
|
[블록지정중]:s/old/new/g |
지정 블록 내에서 모든 old를 new로 교체 |
|
:-3,+4s/old/new/g |
현재 커서 위치에서 위로 3행 아래로 4행까지의 old를 new로 교체 |
|
:%s/old/new/g |
문서 전체에서 old를 new로 교체 |
|
:%s/old/new/gc |
문서 전체에서 old를 new로 확인하며 교체 |
|
:g/pattern/s/old/new/g |
pattern이 있는 모든 행의 old를 new로 교체 |
|
^ |
행의 첫 문자([]안에서는 not의 의미) |
|
$ |
행의 끝 |
|
. |
아무 문자나 한 문자 의미 |
|
\| |
or의 의미 |
|
[ ] |
[]사이의 문자 중 하나 |
|
\{min,max\} |
min이상 max이하 반복됨 |
|
* |
앞의 내용이 0번 이상 반복됨 |
|
\+ |
앞의 내용이 1번 이상 반복됨 |
|
\< |
단어의 시작 |
|
\> |
단어의 끝 |
|
\n |
새 행 문자 |
|
\t |
탭 문자 |
|
\i |
변수 지정에 사용되는 문자들 [0-9A-Za-z] |
|
\I |
\i와 같지만 숫자는 제외 |
|
\k |
keyword로 사용하는 문자 [_\.\-0-9A0Za-z] |
|
\f |
파일 이름으로 사용하는 문자 |
|
\p |
프린트 가능한 문자 |
|
\P |
\p와 같지만 숫자는 제외 |
|
\s |
whitespace character(공백과 탭) |
|
\S |
non-whitespace character |
|
\d |
숫자 [0-9] |
|
\D |
숫자가 아닌 문자 [^0-9] |
|
\x |
16진수 숫자 [0-9A-Fa-f] |
|
\X |
16진수 숫자가 아닌 문자 [^0-9A-Fa-f] |
|
\o |
8진수 숫자 [0-7] |
|
\O |
8진수 숫자가 아닌 문자 [^0-7] |
|
\w |
영문 단어의 시작에 사용되는 문자 [0-9A-Za-z-] |
|
\W |
영문 단어에서 사용되지 않는 문자 [^0-9A-Za-z-] |
|
\h |
영문 단어의 시작에 사용되는 문자 [A-Za-z-] |
|
\H |
영문 단어의 시작에 사용 되지 않는 문자 [^A-Za-z-] |
|
\a |
모든 알파벳 [A-Za-z] |
|
\A |
알파벳이 아닌 문자 [^A-Za-z] |
|
\l |
소문자 [a-z] |
|
\L |
소문자가 아닌 문자 [a-z] |
|
\u |
대문자 [A-Z] |
|
\U |
대문자가 아닌 문자 [^A-Z] |
|
\e |
Esc |
|
\t |
Tab |
|
\r |
캐리지 리턴 |
|
\b |
백스페이스 |
|
\n |
새 행 |
|
문자 클래스 |
내용 |
|
[:alnum:] |
알파벳과 숫자 [A-Za-z0-9] |
|
[:alpha:] |
알파벳 [A-Za-z] |
|
[:cntrl:] |
제어 문자 |
|
[:blank:] |
탭과 공백 문자 |
|
[:digit:] |
숫자 [0-9] |
|
[:graph:] |
제어문자와 공백 문자를 제외한 문자 |
|
[:lower:] |
소문자 [a-z] |
|
[:upper:] |
대문자 [A-Z] |
|
[:print:] |
제어문자를 제외한 문자, 즉 프린터 할 수 있는 문자 |
|
[:punct:] |
[:graph:]문자 중 [:alnum:]을 제외한 문자. ex)!,@,#,$,%,^…. |
|
[:space:] |
화이트스페이스 ex)공백, 탭, 케리지 리턴, 새행, 수직탭, 폼필드 |
|
[:xdigit:] |
16진수 |
|
:files 또는 :ls 또는 :buffers |
버퍼 목록 나열 |
|
:b[n] |
n번 버퍼로 이동 |
|
:bd[n] 또는 :bw[n] |
n번 버퍼를 삭제 (n이 없으면 현재의 버퍼를 삭제) |
|
:bp[n] |
이전 버퍼로 이동,n을 붙이면 n번만큼 이전 버퍼로 이동 |
|
:bn[n] |
이후 버퍼로 이동,n을 붙이면 n번만큼 이후 버퍼로 이동 |
|
:sb[n] |
창을 수평분할 하여 n번 버퍼를 로드 |
|
:bf |
첫 번째 버퍼로 이동 |
|
:bl |
마지막 버퍼로 이동 |
Vim 7.0부터 추가된 기능
|
:tabnew |
새로운 탭을 열기 |
|
:tabnew b.txt |
b.txt가 존재하면 열고, 없으면 새로 만들어서 연다 |
|
:tabf b.txt |
b.txt가 존재하면 열고, 없으면 에러 발생 |
|
:tabn[n] |
다음 탭을 열기,n을 붙이면 n번 만큼 이동 |
|
:tabp[n] |
이전 탭을 열기,n을 붙이면 n번 만큼 이동 |
|
:tabs |
탭 목록 보기 |
|
:tabclose |
탭을 닫기 |
|
:tabfirst |
첫번째 탭을 열기 |
|
:tablast |
마지만 탭을 열기 |
|
:tabdo %s/old/new/g |
모든 탭에 적용을 원할 때 (예 모든탭에서 old를 new로 변경) |
|
명령모드 |
ex모드 |
결과 |
|
창생성 |
||
|
CTRL-W s |
:[N]sp[plit] |
현재 파일을 두 개의 수평 창으로 나눔 |
|
CTRL-W v |
:[N]vs[plit] |
현재 파일을 두 개의 수직 창으로 나눔 |
|
CTRL-W n |
:new |
새로운 수평 창 생성 |
|
CTRL-W ^ 또는 CTRL-W CTRL-^ |
수평 창으로 나누고 이전 파일의 오픈 |
|
|
CTRL-W f |
창을 수평으로 나누고 커서 위치의 파일 오픈 |
|
|
CTRL-W i |
커서 위치의 단어가 정의된 파일을 오픈 |
|
|
창삭제 |
||
|
CTRL-W q |
:q[uit]! |
현재 커서의 창을 종료 |
|
CTRL-W c |
:close |
현재 커서의 창 닫기 |
|
CTRL-W o |
:on[ly] |
현재 커서의 창만 남기고 모든 창 삭제 |
|
창이동 |
||
|
CTRL-W h |
왼쪽 창으로 커서 이동 |
|
|
CTRL-W j |
아래쪽 창으로 커서 이동 |
|
|
CTRL-W k |
위쪽 창으로 커서 이동 |
|
|
CTRL-W l |
오른쪽 창으로 커서 이동 |
|
|
CTRL-W w |
창을 순차적으로 이동 |
|
|
CTRL-W p |
가장 최근에 이동한 방향으로 이동 |
|
|
CTRL-W t |
최상위 창으로 이동 |
|
|
CTRL-W b |
최하위 창으로 이동 |
|
|
창이동 |
||
|
CTRL-W r |
순착으로 창의 위치를 순환 |
|
|
CTRL-W x |
이전 창과 위치를 바꿈 |
|
|
CTRL-W H |
<st1:personname w:st=”on” style=”margin: 0px; padding: 0px; border: 0px; line-height: 1.5;”>현재창</st1:personname>을 왼쪽 큰화면으로 이동 |
|
|
CTRL-W J |
<st1:personname w:st=”on” style=”margin: 0px; padding: 0px; border: 0px; line-height: 1.5;”>현재창</st1:personname>을 아래쪽 큰화면으로 이동 |
|
|
CTRL-W K |
<st1:personname w:st=”on” style=”margin: 0px; padding: 0px; border: 0px; line-height: 1.5;”>현재창</st1:personname>을 위쪽 큰화면으로 이동 |
|
|
CTRL-W L |
<st1:personname w:st=”on” style=”margin: 0px; padding: 0px; border: 0px; line-height: 1.5;”>현재창</st1:personname>을 오른쪽 큰화면으로 이동 |
|
|
창 크기 조정 |
||
|
CTRL-W = |
창의 크기를 모두 균등하게 함 |
|
|
CTRL-W _ |
수평 분할에서 창의 크기를 최대화 |
|
|
CTRL-W | |
수직 분할에서 창의 크기를 최대화 |
|
|
CTRL-W [N]+ |
:res[ize] +N |
창의 크기를 N행 만큼 증가 |
|
CTRL-W [N]- |
:res[ize] -N |
창의 크기를 N행 만큼 감소 |
|
CTRL-W [N]> |
창의 크기를 오른쪽으로 N칸 만큼 증가 |
|
|
CTRL-W [N]< |
창의 크기를 오른쪽으로 N칸 만큼 감소 |
|
다중창 사용의 경우 대부분 붙여서 사용하는 명령어는 CTRL을 같이 눌러도 똑같은 역활을 하는 경우가 많다.
예) CTRL-W j 는 CTRL-W CTRL-J와 같다.
|
m[a-z0-9] |
파일내에서 마킹, 현재 버퍼내에서만 이동 함 예)ma |
|
m[A-Z] |
전체영역에서 마킹, 다른 파일로도 이동 함. |
|
`[A-Za-z0-9] |
마킹된 위치로 돌아감 예)`a |
|
’[A-Za-z0-9] |
마킹된 행의 처으으로 이동함. 예)‘a |
|
” |
직전에 커서가 위치하던 행의 처음 |
|
“ |
직전의 커서 위치로 이동 |
|
’” |
이전에 vim으로 현재 파일을 닫았을 때 커서가 있던 행의 처음으로 이동 |
|
`” |
이전에 vim으로 현재 파일을 닫았을 때 커서가 있던 위치로 이동 |