[VI/VIM] 자주 쓰는 Key 메모
by Choi HyeSun
VI 모드
-
command line → 명령
-
normal mode → 기본모드
-
edit mode → 수정모드
-
visual mode → 비쥬얼모드
이동키
normal mode / edit mode | normal mode | |
---|---|---|
← | h | 좌로 커서 이동 |
↓ | j | 아래로 커서 이동 |
↑ | k | 위로 커서 이동 |
→ | l | 우로 커서 이동 |
Page Up | <CTRL> + U | 화면에 비례하여 커서 위로 이동 |
Page Down | <CTRL> + D | 화면에 비례하여 커서 아래로 이동 |
- | <CTRL> + B | Ctrl + U와 비슷 |
- | <CTRL> + F | Ctrl + D와 비슷 |
(마우스 휠스크롤 down) | <CTRL> + E | 커서는 움직이지 않고 스크롤 내리기 |
(마우스 휠스크롤 up) | <CTRL> + Y | 커서는 움직이지 않고 스크롤 올리기 |
-
vim 명령어는 대소문자를 구분하므로 유의
-
글자가 없는 (~)곳으로는 커서 이동 불가
normal mode에서 사용
키 | 의미 |
---|---|
i | 커서가 있는 곳에서 edit mode 진입 |
I | 커서가 있는 줄 맨 앞에서 edit mode 진입 |
a | 커서가 있는 곳 바로 뒤 (한글자 뒤)에서 edit mode 진입 |
A | 커서가 있는 줄 맨 뒤에서 edit mode 진입 |
o | 커서가 있는 곳 바로 아래에 한 줄을 삽입하며 edit mode 진입 |
O | 커서가 있는 곳 바로 위에 한 줄을 삽입하며 edit mode 진입 |
x | 커서 뒷자리 문자 한 개 제거 |
X | 커서 앞자리 문자 한 개 제거 |
u | 실행취소(ctrl+z와 같은 기능) [undo] |
<CTRL> + r | 실행취소 되돌리기 [Redo] |
yy | 현재 커서가 위치한 한 줄 복사 [yank] |
p | yy로 복사한 줄 커서 아래 붙여넣기(=삽입) [put] |
[num]p ex)10p |
num 숫자만큼 yy로 복사한 줄 커서 아래 붙여넣기(=삽입) [put] ex) yy로 복사한 줄 10줄 붙여넣기 |
^ | 해당 줄(라인) 처음(시작점)으로 커서 이동 |
$ | 해당 줄(라인) 끝 바로 앞(한 문자 앞)으로 커서 이동 |
w | 다음 단어의 제일 앞으로 커서 이동 - 공백(띄어쓰기, 줄바꿈) 및 특수문자 기준으로 단어 인식 |
W | 다음 단어의 제일 앞으로 커서 이동 - 공백(띄어쓰기, 줄바꿈) 기준으로 단어 인식 |
e | 해당 단어 끝 바로 앞(한 문자 앞)으로 커서 이동 - 공백(띄어쓰기, 줄바꿈) 및 특수문자 기준으로 단어 인식 |
E | 해당 단어 끝 바로 앞(한 문자 앞)으로 커서 이동 - 공백(띄어쓰기, 줄바꿈) 기준으로 단어 인식 |
b | 이전 단어의 제일 앞으로 커서 이동 - 공백(띄어쓰기, 줄바꿈) 및 특수문자 기준으로 단어 인식 |
B | 이전 단어의 제일 앞으로 커서 이동 - 공백(띄어쓰기, 줄바꿈) 기준으로 단어 인식 |
gg | 해당 vi 문서의 맨 첫 줄 맨 앞으로 커서 이동 |
G | 해당 vi 문서의 맨 끝 줄 맨 앞으로 커서 이동 |
d d+(?) |
삭제 (visual mode에서도 가능) - 뒤에 범위 지정을 하게 되면 범위까지 삭제 ex) d, ^, $, 방향키, gg, G … etc |
dd | 해당 커서가 있는 줄 삭제 |
d$ | 커서가 있는 곳부터 해당 줄 끝까지 제거 |
D | 해당 커서가 있는 곳부터 해당 줄 끝까지 제거 |
c c+(?) |
d와 동일한 기능 후 edit 모드 진입 |
C | D와 동일한 기능 후 edit 모드 진입 |
r | 다음 한 글자를 새로 입력받는 문자로 덮어씌우기(Insert 수정과 같은 역할) |
* | 현재 커서가 포함되어있는 단어(문자열) 검색 - 공백(띄어쓰기, 줄바꿈) 및 특수문자 기준으로 단어 인식 |
to normal mode
키 | 의미 |
---|---|
<ESC> | 모든 mode에서 normal mode로 변경시 사용 |
Command line
키 | 의미 |
---|---|
:, ?, /, ! | Command line 진입 (/, ? = serach command) |
:cd<Enter> | 현재 수정하고있는 vi 파일 위치 (ex) :cd<Enter> → /home/sunny |
:cd 디렉토리경로<Enter> (ex1) :cd heyA<Enter> (ex2) :cd /home/sunny/heyB<Enter> |
현재 수정하고있는 vi 파일이 저장될 위치를 변경함 (ex1) 상대경로(heyA)로 이동 (현재경로/heyA) (ex2) 절대경로(/home/sunny/heyB)로 이동 → 저장시 이름 지정 필요, 기존 파일이 옮겨가는 것이 아닌 새로 저장의 개념 |
:w<ENTER> | 저장 |
:w (파일경로/)파일명<Enter> (ex1) :w myFile.txt<Enter> → 현재경로 (ex2) :w heyB/myFile.txt<Enter> → 상대경로 (ex3) :w /home/sunny/myFile.txt<Enter> → 절대경로 |
파일명(및 경로)으로 현재 수정중인 파일 저장하기 (ex1) 현재경로에 myFile.txt를 저장 (ex2) 상대경로(현재경로/heyB/)에 myFile.txt를 저장 (ex3) 절대경로(/home/sunny/)에 myFile.txt를 저장 |
:o (파일경로/)파일명<Enter> (ex1) :o myFile.txt<Enter> → 현재경로 (ex2) :o heyB/myFile.txt<Enter> → 상대경로 (ex3) :o /home/sunny/myFile.txt |
파일 불러오기 (ex1) 현재경로의 myFile.txt를 불러옴 (ex2) 상대경로(현재경로/heyB/)의 myFile.txt를 불러옴 (ex3) 절대경로(/home/sunny/)의 myFile.txt를 불러옴 |
:q<Enter> | 나가기 |
:wq<Enter> ZZ [normal mode] (ex1) :wq<Enter> (ex2) ZZ (ex3) :wq (파일경로/)파일명<Enter> |
저장하고 나가기 (ex1) 현재 파일에 저장하고 vim 종료 (ex2) normal mode에서 입력하면 :wq<Enter>와 동일한 기능 (ex3) 파일경로/파일명을 지정하여 저장하고 vim 종료 |
! 옵션 :w! (파일경로/)파일명<Enter> :o! (파일경로/)파일명<Enter> :q!<Enter> |
강제실행 :w와 사용 → 기존에 동일이름 파일있을 경우 강제 덮어쓰기 :o와 사용 → 현재 수정중인 파일 저장여부 무시하고 열기 :q와 사용 → 현재 수정중인 파일 저장여부 무시하고 나가기 |
/, ? n N |
search command (정방향 / 역방향) 다음 찾기 [next] 이전 찾기 [backward] |
/ /[찾을문자열]<ENTER> (ex1) /abc<ENTER> /[찾을문자열을위한정규식]<ENTER> (ex2) /ab.<ENTER> |
정방향 search command /[찾을문자열]<ENTER>하면 일치하는 문자열 정방향 검색 /[찾을문자열을위한정규식]<ENTER>하면 정규식에 해당되는 문자열 정방향 검색 n : 다음찾기(정방향) / N : 이전찾기(역방향) |
? ?[찾을문자열]<ENTER> (ex1) ?abc<ENTER> ?[찾을문자열을위한정규식]<ENTER> (ex2) ?ab.<ENTER> |
역방향 search command ?[찾을문자열]<ENTER>하면 일치하는 문자열 역방향 검색 ?[찾을문자열을위한정규식]<ENTER>하면 정규식에 해당되는 문자열 역방향 검색 n : 다음찾기(역방향) / N : 이전찾기(정방향) |
:nohl | 검색을 하면 검색된 문자열이 하이라이트(음영)처리 되는데, 해당 하이라이트 처리 제외 |
:[number] (ex) :21 |
해당 number에 해당하는 줄로 번호 이동 (ex) 21번째 줄로 이동 |
:se nu :se nonu! :se number :se nonumber! :set nu :set nonu! :set number :set nonumber! |
좌측에 줄 번호가 보이도록 설정 |
:se nu! :se nonu :se number! :se nonumber :set nu! :set nonu :set number! :set nonumber |
좌측에 줄 번호가 보이지 않도록 설정 |
<TAB> ex) :set nu<TAB> |
자동완성 ex) set nu로 시작하는 명령들을 보여준다. <TAB> 누르면 다음 명령으로 이동됨(글자순으로..) |
:his :history |
Command line history 확인 |
:<CTRL>+F | Command line history 편집 및 실행 (방향키로 움직이고 실행은 <ENTER>) |
/<CTRL>+F | Search history 편집 및 실행 (방향키로 움직이고 실행은 <Enter>) |
Visual mode
키 | 의미 |
---|---|
v | visual mode |
V | visual line (줄 단위) |
<CTRL> + V <CTRL> + Q |
visual bloc (블럭 단위 → 열 단위) <CTRL> + V가 되지 않는 일부 윈도우 Vim에서는 Q를 대체 사용 |
<SHIFT> + i | visual bloc에서 설정한 열 영역 일괄 문자 입력(수정) |
y | 선택 영역 복사 |
p | 선택 영역 붙여넣기 [삽입] |
P | 선택 영역 붙여넣기(단, 커서는 움직이지 않음) [추가] |
화면분할
키 | 의미 |
---|---|
<CTRL> + W + (?) | 모든 화면(윈도우) 명령은 <CTRL> + W + (?)로 구성 - normal mode에서 실행 |
<CTRL> + W + n | 화면 분할 + 새 창 (창 나가기는 :q 동일) |
<CTRL> + W + <방향키> | 화면 분할 창끼리 이동 |
<CTRL> + W + <+> | 창 크기 확대 |
<CTRL> + W + <-> | 창 크기 축소 |
<CTRL> + W + <=> | 창 크기 동일하게 |
기타생략 |
도움말
키 | 의미 |
---|---|
:help (대상) | 대상에 대한 도움말이 나타남 |
<CTRL> + ] | 커서 위의 태그(도움말 링크..?)로 이동 |
<CTRL> + T | 태그 이동 전 태그로 이동 |
:tags | 이동한 태그들을 보여줌(트리) |
Subscribe via RSS