vi 명령어
삽입 명령 |
a |
커서 뒤에 입력 |
A |
라인 끝에 입력 |
i |
커서 앞에 입력 |
I |
라인시작 부분에 입력 |
o |
커서 있는 라인 밑에 입력 |
O |
커서가 있는 라인 위에 입력 |
커서 이동 명령 |
h |
왼쪽으로 커서 한 칸 이동 |
H |
화면의 처음으로 이동 |
L |
오른쪽으로 한 칸 이동 |
L |
화면 끝으로 이동 |
e |
다음 단어의 마지막으로 이동 |
E |
커서를 공백으로 구분된 다음 단어 끝으로 이동 |
b |
한 단어 뒤로 이동 |
B |
커서를 공백으로 구분된 이전 단어로 이동 |
w |
커서를 한 단어 뒤로 이동 |
W |
커서를 공백으로 구분된 다음 단어로 이동 |
k |
커서를 한 라인 위로 이동 |
j |
커서를 한 라인 아래로 이동 |
O |
커서를 라인의 시작으로 이동 |
$ |
커서를 라인의 끝으로 이동 |
Enter |
커서를 다음 라인 시작으로 이동 |
- |
커서를 전 라인의 시작으로 이동 |
Ctrl + F |
다음 화면으로 이동 |
Ctrl + D |
화면의 반만 앞으로 이동 |
Ctrl + B |
전 화면으로 이동 |
Ctrl + U |
화면의 반만 뒤로 이동 |
G |
커서를 텍스트 마지막 라인으로 이동 |
숫자G |
커서를 숫자 라인만큼 이동 |
M |
커서를 화면 중간 라인으로 이동 |
“ |
커서를 전 위치로 이동 |
( |
문장의 시작으로 이동 |
{ |
문단의 시작으로 이동 |
) |
문장 끝으로 이동하여 다음 단어의 시작으로 커서 이동 |
} |
문단 끝으로 이동 |
삭제 명령 |
x |
커서가 있는 문자 삭제 |
X |
커서가 있는 문자 앞에 있는 문자 삭제 |
dw |
커서가 있는 단어 삭제 |
db |
커서가 앞에 있는 단어 삭제 |
dW |
공백으로 구분된 뒷 단어 삭제 |
dB |
공백으로 구분된 앞 단어 삭제 |
dd |
커서가 있는 라인 삭제 |
D |
커서가 있는 라인의 나머지 삭제 |
d) |
문장의 나머지 삭제 |
d} |
문단의 나머지 삭제 |
dG |
파일의 나머지 삭제 |
dH |
화면의 시작까지 삭제 |
dL |
화면의 나머지 삭제 |
J |
커서와 다음 단어의 공백을 모두 삭제 |
바꾸기 명령 |
r |
커서에 있는 문자 대치 |
R |
입력 모드로 한 문자씩 덮어씀 |
s |
커서가 있는 문자 삭제 후 입력 모드로 전환 |
S |
커서가 있는 줄을 삭제 후 입력 모드로 전환 |
cb |
커서가 있는 앞 문자 삭제 후 입력 모드 |
cW |
공백으로 구분된 뒷 단어를 삭제 후에 입력 모드 |
cB |
공백으로 구분된 앞 단어 삭제 후 입력 모드 |
cc |
커서가 있는 라인을 삭제하고 입력 모드 |
C |
커서가 있는 라인의 나머지를 삭제하고 입력 모드로 전환 |
cO |
커서에서부터 라인의 시작까지 텍스트 바꾸기 |
c |
특정 텍스트 바꾸기 |
c) |
문장의 나머지 바꾸기 |
c} |
문단의 나머지 바꾸기 |
cG |
파일의 나머지 바꾸기 |
cm |
표시까지 모든 것 바꾸기 |
cL |
화면의 나머지 바꾸기 |
ch |
화면의 시작까지 바꾸기 |
이동 |
p |
삭제나 복사된 텍스트를 커서가 있는 문자나 라인 뒤에 삽입 |
P |
삭제나 복사된 텍스트를 커서가 잇는 문자나 라인 앞에 삽입 |
dw p |
커서가 있는 단어를 삭제한 후 이를변경한 커서가 있는 것 뒤에 삽입 |
dw P |
커서가 잇는 단어를 삭제 후 이를 변경한 커서 있는 곳 앞으로 삽입 |
d p |
지정한 다음 텍스트로 삭제한 후 커서가 가리키는 곳으로 이동 |
d) P |
문장의 나머지로 이동 |
d} p |
문단의 나머지로 이동 |
dG P |
파일의 나머지로 이동 |
dH p |
회면 시작 부분으로 이동 |
dL P |
화면의 나머지를 이동 |
복사 |
yw |
커서가 있는 단어를 복사 |
yb |
커서가 있는 앞 단어를 복사 |
yW |
공백으로 구분된 뒷 단어 복사 |
yB |
공백으로 구분된 앞 단어를 복사 |
y |
특정한 다음 텍스트 복사 |
yy |
커서가 있는 라인을 복사, 커서가 가리키는 곳으로 라인을 이동 |
y) |
문자의 나머지 복사 |
y} |
문단의 나머지 복사 |
yG |
파일의 나머지 복사 |
yH |
화면의 시작까지 복사 |
yL |
화면의 나머지 복사 |
검색 |
/patter
n |
텍스트에서 앞으로 패턴 검색 |
>patter |
텍스트에서 뒤로 패턴 검색 |
n |
앞 또는 뒤로 이전 검색 반복 |
N |
반대 방향으로 이전 검색 반복 |
/ |
전 검색을 앞으로 반복 |
? |
전 검색을 뒤로 반복 |
vi 에디터 종료 마치기 명령 |
|
:q |
그대로 종료하기 |
|
:q! |
변경된 내용을 저장하지 않고 강제로 종료하기 |
|
:wq |
변경된 내용을 저장하고 종료하기 |
|
:x |
:wq와 동일한 명령 |
|
ZZ |
:wq와 동일한 명령 |
|
삽입 명령 |
|
a |
커서 뒤에 입력 |
A |
라인 끝에 입력 |
|
I |
커서 앞에 입력 |
I |
라인시작 부분에 입력 |
|
o |
커서 있는 라인 밑에 입력 |
O |
커서가 있는 라인 위에 입력 |
|
방향키를 이용한 커서 이동 명령 |
|
<-,Del |
왼쪽으로 커서 한 칸 이동 |
PageUp |
화면 위로 이동 |
|
->
SpaceBar |
오른쪽으로 한 칸 이동 |
PageDown |
화면 아래로 이동 |
|
↑ |
윗 줄로 커서 이동 |
Enter |
다음 줄 첫 칸으로 이동 |
|
↓ |
아래 줄로 커서 이동 |
Esc |
다음 줄 첫 칸으로 이동 |
|
Home |
줄 처음 칸으로 이동 |
|
다른 키를 이용한 커서 이동 명령 |
|
H |
왼쪽으로 커서 한 칸 이동 |
k |
윗 쪽으로 커서 이동 |
|
l |
오른쪽으로 한 칸 이동 |
j |
아래쪽으로 커서 이동 |
|
e |
다음 단어의 마지막 칸으로 이동 |
E |
공백으로 구분된 뒷 단어의 마지막 칸으로 이동 |
|
b |
앞 단어의 앞 칸으로 이동 |
B |
공백으로 구분된 앞 단어의 앞 칸으로 이동 |
|
W |
다음 단어의 앞 칸으로 이동 |
W |
공백으로 구분된 뒷 단어의 앞 칸으로 이동 |
|
그 외의 키를 이용한 커서 이동 명령 |
|
Ctrl + F |
다음 화면으로 이동 |
Ctrl + D |
반 화면 위로 이동 |
|
Ctrl + B |
전(앞) 화면으로 이동 |
Ctrl + L |
반 화면 아래로 이동 |
|
O |
줄이 시작되는 첫 칸으로 이동 |
- |
이전 줄의 시작 부분으로 이동 |
|
$ |
줄이 끝나는 마지막 칸으로 이동 |
+ |
다음 줄의 시작 부분으로 이동 |
|
( |
문장의 시작으로 이동 |
{ |
문단의 시작으로 이동 |
|
) |
문장의 끝으로 이동하여 다음 단어의 시작 첫 칸으로 커서 이동 |
} |
문단의 끝으로 이동 |
|
G |
문서의 마지막 줄로 이동 |
“ |
이전의 커서 위로 이동 |
|
nG |
n번째 줄로 이동 |
M |
화면 중간 줄에 커서 이동 |
|
삭제 명령 |
|
x |
커서가 있는 문자 삭제 |
X |
커서가 있는 문자 앞에 있는 문자 삭제 |
|
dw |
커서가 있는 단어 삭제 |
db |
커서 앞에 있는 단어 삭제 |
|
dW |
공백으로 구분된 뒷 단어 삭제 |
dB |
공백을 구분된 앞 단어 삭제 |
|
dd |
커서가 있는 라인 삭제 |
D |
커서가 있는 라인의 나머지 삭제 |
|
d) |
문장의 나머지 삭제 |
d} |
문단의 나머지 삭제 |
|
dG |
파일의 나머지 삭제 |
dH |
화면의 시작까지 삭제 |
|
dL |
화면의 나머지 삭제 |
J |
커서와 다음 단어 사이의 모든 공백 삭제 |
|
바꾸기 명령 |
|
R |
커서에 잇는 문자 대치 |
R |
입력 모드로 한 문자식 덮어 씀 |
|
s |
커서가 있는 문자 삭제 후 입력 모드로 전환 |
D |
커서가 있는 줄을 삭제한 후 입력 모드로 전환 |
|
cb |
커서가 있는 앞 문자 삭제 후 입력 모드 |
cW |
공백으로 구분된 뒷 단어를 삭제한 후 입력 모드 |
|
cB |
공백으로 구분된 앞 단어 삭제 후 입력 모드 |
cc |
커서가 있는 라인을 삭제하고 입력 모드 |
|
C |
커서가 있는 라인의 나머지를 삭제하고 입력 모드로 전환 |
cO |
커서에서부터 라인의 시작까지 텍스트 바꾸기 |
|
c |
특정 텍스트 바꾸기 |
c) |
문장의 나머지 바꾸기 |
|
c} |
문단의 나머지 바꾸기 |
cG |
파일의 나머지 바꾸기 |
|
cH |
화면의 시작까지 바꾸기 |
cL |
화면의 나머지 바꾸기 |
|
텍스트 이동 |
|
p |
삭제나 복사된 텍스트를 커서가 있는 문자나 라인 뒤에 삽입 |
P |
삭제나 복사된 텍스트를 커서가 있는 문자나 라인 앞에 삽입 |
|
dw p |
커서가 있는 단어를 삭제한 후 이를 원하는 곳 커서 뒤로 삽입 |
dw P |
커서가 있는 단어를 삭제한 후 이를 변경한 커서가 있는 곳으로 삽입 |
|
d p |
지정한 다음 텍스트로 삭제한 후 커서가 가리키는 곳으로 이동 |
d) P |
문장의 나머지로 이동 |
|
d} p |
문단의 나머지로 이동 |
dG P |
파일의 나머지로 이동 |
|
dH P |
화면 시작 부분으로 이동 |
dL P |
화면의 나머지를 이동 |
|
복사 |
|
yw |
커서가 있는 단어를 복사 |
yb |
커서가 잇는 앞 단어를 복사 |
|
yW |
공백으로 구분된 뒷 단어 복사 |
yB |
공백으로 구분된 앞 단어를 복사 |
|
y |
특정한 다음 텍스트 복사 |
yy |
커서가 있는 라인을 복사, 커서가 가리키는 곳으로 라인을 이동 |
|
y) |
문자의 나머지 복사 |
y} |
문단의 나머지 복사 |
|
yG |
파일의 나머지 복사 |
yH |
화면 시작까지 복사 |
|
yL |
화면의 나머지 복사 |
|
검색 |
|
/pattern |
텍스트에서 앞으로 패턴 검색 |
>pattern |
텍스트에서 뒤로 패턴 검색 |
|
n |
앞 또는 뒤로 이전 검색 반복 |
N |
반대 방향으로 이전 검색 반복 |
|
/ |
전 검색을 앞으로 반복 |
? |
전 검색을 뒤로 반복 |
|
옵션 |
옵션약어 |
기능 |
디폴트 |
autoindent |
ai |
들여 쓰기 가능, 탭으로 들여 쓰기 범위 지정 |
off |
autoprint |
ap |
줄이 바뀔 때 현재 줄을 화면상에서 출력 |
on |
errobells |
ed |
명령 에러가 발생시 삑 소리나게 함 |
off |
number |
nu |
줄 번호를 나타나게 함 |
off |
report |
report |
편집시 메시지를 보낼 편집 변화 크기 지정 |
5 |
showmatch |
sm |
가로 닫기 괄호를 사용할 때 일치하는 가로 열기 괄호를 보여줌 |
off |
wam |
wam |
저장하지 않고vi 종료할 때 경고 메시지를 뿌려 줌 |
on |
ignorecase |
ic |
검색 패턴에 사용되는 대소문자 구별하지 않음 |
on |
tabstopp=n |
ts=n |
탭 공백을n 수만큼 지정 |
8 |
wrapmargin=n |
wm=n |
텍스트 오른쪽 여백을n 수만큼 지정 |
0 |
|
|
|
|
|
|
|
|
삽입
I: 줄의 제일 앞에서 입력
A: 줄의 제일 끝에서 입력
콤보command
4w: 4단어 skip후 이동
4b: 4단어 skip후 이동
4j,h,k,l: 커서이동시 지정한 수만큼 건너뛰므로 이동을 좀 더 빨리 할 수 있다.
줄의 결합(J)
2줄이 있고, 2째줄을 1째줄 끝에 붙이고 싶다면, 1째줄에서 J를 입력하면 된다.
커서이동
0: 줄의 처음
^: 줄의 처음(글자가 시작되는 처음)
$: 줄의 끝
w: 단어단위 이동
e: w와 같으나 단어의 끝으로 이동
b: w의 반대방향으로 이동
H, M, L: 커서를 화면 상,중,하로 이동
검색(/후 검색할 단어입력)
n: 뒤로 검색
N: 앞으로 검색
매크로
ab aa aaaa: aa를 입력하면 aaaa로 자동변환
치환
s/pattern/replace: 현재줄의 첫번째 matching pattern치환
s/pattern/replace/g: 현재줄의 모든 matching pattern치환
%s/pattern/replace/g: 모든 줄의 치환
line,lines/pattern/replace: 해당 범위의 치환
저장
w>> file: 지정한 파일에 추가
윈도 split
vi내에서 위아래로 윈도가 분활되면서 2개의 파일을 동시에 open/편집할 수 있다.
ex-mode(:프롬프트상태)에서 'sp 파일이름'
윈도우가 전환은 Ctrl+ww
기타
1. d의 경우 command모드로 계속 남아 있으나 c는 삭제후 insert모드로 변환한다.
cc, c$, cw등은 유용하게 사용될 수 있다.
2. .은 마지막 명령을 되풀이한다.
visual모드
윈도의 텍스트 에디터와 같이 선택부분이 반전되면서 복사,삭제등을 할 수 있다.
v로 visual모드로 집입하여 커서키를 사용해 원하는 부분을 선택한다.
복사는 y, 삭제/잘라내기는 d로 할 수 있다.
vi설정(vim설정)
자신의 홈디렉토리에 .vimrc를 생성하고 다음과 같이 할 수 있다.
set ai
set ts=4
set nu
각각 auto-indent, tab stop, numbering
윈도에서 작업중 vi에 붙여넣기시 계단현상발생 방지
:set paste
위치기억(UltraEdit의 ALT-F2, F2와 동일한 기능)
m{a-z}: 현재위치를 {a-z}로 북마크함
`{a-z}: 기억해둔 {a-z}로 이동. 보통 한개만 등록했다면 그냥 ``를 사용하면 된다.
레코딩
설정파일의 주석추가/삭제시 유용하게 사용할 수 있다.(이미 vi에 매크로기능이 있지만, 레코딩이
UltraEdit의 매크로기능과 유사하다.)
q{a-z}: {a-z}로 레코딩 시작. {a-z}만 가능한게 아니고 실제 {0-9a-zA-Z"}를 적기 번거로워 이렇게
표시만 한 것이다.
q: 레코딩 종료
@{a-z}: 레코딩 내용 적용(@@를 하면 바로 이전의 레코딩내용을 적용, N@@은 N으로 지정한
숫자만큼 적용)
명령) :marks
설명) 원래는 a-z,A-Z,0-9까지의 마크를 각각의 문서에 대해 할수 있는기능
그냥 marks라고 하면 기본적으로 vim이 저장하는 최근 10개 문서(0-9마크)를 보여줍니다.
이동은 `0 또는 `3
명령) :args
설명) 명령행 인자로 여러개의 파일을 열었을 경우, 이들을 보여주고, 문서간 이동시 편리
저는 F8키를 :args로 맵핑,F9키를 :prev 로 맵핑, F10키를 :ne로 맵핑해서
F8로 현재 열려진 문서들을 확인하고, F9나 F10으로 빠른이동
명령) :ts my_function
설명) my_function이란 태그를 찾을때
Ctrl+]로 이동하는 것만큼이나 자주 쓰게 되죠.
명령) :tn
설명) 매칭되는 태그가 여러개일 경우 다음 매칭되는 태그로의 이동
vim은 자체적으로 매칭되는 태그들에 대해서 우선순위별로 보여주는데
가끔은 찾고자 하는 태그가 바로 안나오는 경우가 있죠... 이때 편리
명령) Ctrl+^
설명) 직전편집문서로 이동
:e#과 동일합니다. 둘중편한것 이용하시면 되죠.
명령) :ls
설명) 현재 열려있는 버퍼들을 확인
편집중에 다른 화일들을 여러개 연경우, 이미 열린화일을 찾기 쉽게 하죠.
이동은 :buffer 1 또는 :buffer 3 등으로.
명령) vim .
설명) 디렉토리 자체를 열고, 화일삭제나, 이름변경등 파일매니저로
vim을 쓸때 편합니다. vim이 디렉토리를 편집할때는 또다른 명령셋을
?로 확인하실수 있어요.
명령) :sp
설명) 화면을 위아래로 분할해서 두개의 윈도우로 작업하는 기능
평소에는 가뜩이나 작은25행 을 분할할 필요까지야 없지만, 위에서 처럼
디렉토리에 대해 작업할때는 윗창은 디렉토리 이동창으로 아래창은 파일 미리보기
창(파일미리보기는 p)으로 쓰면 편리합니다. 높은 해상도로 콘솔을 셋팅하신분들이나
x-window에서 조그만 글씨로 작업하시는분들한테도 소스비교하면서 작업할때도 편리.
위아래 창간의 이동은 Ctrl+ww 로.... |