VI 에디터를 쓸때마다 자주쓰는 명령어를 제외하고는 상황에 따라 필요한 명령어들을
늘 검색해서 사용했었는데, 잘 정리되어 있는 글이있어서 가져왔습니다.
(출처는 본문하단 참조)
VIM 명령어 정리
1. 저장 및 종료
명령어 | 설명 |
:w | 저장 |
:w file.txt | file.txt 파일로 저장 |
:w » file.txt | file.tx파일에 덧붙여서 저장 |
:q | vi 종료 |
:q! | vi 강제 종료 |
ZZ | 저장 후 종료 |
:wq! | 강제 저장 후 종료 |
:e file.txt | file.txt파일을 불러옴 |
:e | 현재 파일을 불러옴 |
:e# | 바로 이전에 열었던 파일을 불러 옴 |
2. 입력모드 전환
a | 커서 위치 다음칸부터 입력 | A | 커서 행의 맨 마지막부터 입력 |
i | 커서의 위치에 입력 | I | 커서 행의 맨 앞에서 부터 입력 |
o | 커서의 다음행에 입력 | O | 커서의 이전 행에 입력 |
s | 커서 위치의 한글자를 지우고 입력 | cc | 커서위치의 한 행을 지우고 입력 |
3. 이동
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행으로 이동 |
4. 삭제
x 또는 dl | 커서 위치의 글자 삭제 |
X 또는 dh | 커서 바로 앞의 글자 삭제 |
dw | 현재 위치부터 스페이스 까지 삭제 |
diw | 현재 위치에 있는 단어 삭제 |
dd | 커서가 있는 행을 삭제 |
[n]dd | 현재 커서 부터 아래 n번째 줄까지 삭제 |
dj | 현재 커서와 아래 줄 삭제 |
[n]dj | 현재 커서 부터 아래 n+1번째 줄까지 삭제 |
dk | 현재 커서와 윗로 n+1번째 줄까지 삭제 |
[n]dk | 현재 커서와 윗 줄 삭제 |
D 또는 d$ | 현재 커서가 있는 위치부터 행 끝까지 삭제 |
d0 또는 d^ | 현재 커서가 있는 위치부터 행 시작 까지 삭제 |
5. 복사 & 붙여넣기
yy 또는 Y | 커서가 있는 한 행 복사 |
p | 현재 커서에 붙여 넣기, 행 복사 일 경우 아래 줄에 붙여넣음. |
P | 현재 커서위치의 앞행에 붙여 넣기, 행 복사일 경우에는 윗 줄에 붙여 넣음 |
[n]yy 또는 [n]Y | 커서가 위치한 이후로 n행 복사 |
[n]p | n번 만큼 붙여넣기 반복 |
6. 블록 지정
v | 블록 지정 |
V | 줄단위 블록 지정 |
ctrl+v(윈도우에서는 ctrl+q) | 비쥬얼 블록 지정 |
블록 지정 중 명령 | |
y | 블록 복사 하기 |
r | 치환 |
d | 지정 블록 지우기 |
U | 대문자로 바꾸기 |
u | 소문자로 바꾸기 |
~ | 대소문자 전환 |
J | 행 합침 |
: | 선택 영역에 대하여 ex명령 |
< | 행 앞에 탭 제거 |
> | 행 앞에 탭 삽입 |
7. 문자열 탐색 및 치환
/[문자열] | 문자열 탐색 |
: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로 교체 |
8. vim 정규 표현식
^ | 행의 첫 문자([]안에서는 not의 의미) |
$ | 행의 끝 |
. | 아무 문자나 한 문자 의미 |
\| | or의 의미 |
[ ] | []사이의 문자 중 하나 |
\{min,max\} | min이상 max이하 반복됨 |
* | 앞의 내용이 0번 이상 반복됨 |
\+ | 앞의 내용이 1번 이상 반복됨 |
\< | 단어의 시작 |
\> | 단어의 끝 |
\n | 새 행 문자 |
\t | 탭 문자 |
9. vim 확장 정규 표현 문자열
\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 | 새 행 |
10. POSIX 문자 클래스
문자 클래스 | 내용 |
[: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진수 |
11. 파일 버퍼
: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 | 마지막 버퍼로 이동 |
: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로 변경) |
13. 다중 창 관련 명령
명령모드 | 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 |
| |
CTRL-W J |
| |
CTRL-W K |
| |
CTRL-W L |
| |
창 크기 조정 | ||
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-W j 는 CTRL-W CTRL-J와 같다.
14. 마킹 및 마킹위치로 이동
m[a-z0-9] | 파일내에서 마킹, 현재 버퍼내에서만 이동 함 예)ma |
m[A-Z] | 전체영역에서 마킹, 다른 파일로도 이동 함. |
`[A-Za-z0-9] | 마킹된 위치로 돌아감 예)`a |
’[A-Za-z0-9] | 마킹된 행의 처으으로 이동함. 예)‘a |
” | 직전에 커서가 위치하던 행의 처음 |
`` | 직전의 커서 위치로 이동 |
’” | 이전에 vim으로 현재 파일을 닫았을 때 커서가 있던 행의 처음으로 이동 |
`" | 이전에 vim으로 현재 파일을 닫았을 때 커서가 있던 위치로 이동 |
출처:http://gyuha.tistory.com/157
'Gift > Linux' 카테고리의 다른 글
VMware에 칼리리눅스 설치하기 (0) | 2017.10.25 |
---|---|
CentOS Yum 설치 안될때(2) (1) | 2017.10.01 |
CentOS yum 설치시 에러 해결법 (0) | 2017.09.18 |
리눅스 파일시스템 복구 명령어 e2fsck 사용법 (0) | 2017.09.11 |
윈도우 및 리눅스 서비스 기본포트 정리 (0) | 2017.09.08 |