vi 명령어
vi에디터는 세가지 모드가 존재하며, 입력(input), 명령(command), ex(last line)모드이다. 이에 우선 명령어 모드는 파일의 편집작업을 하는 것으로 글자를 지우고, 바꾸고, 복사하고, 다른 곳으로 옮기는 등의 작업을 할 수 있다. 이러한 명령어 모드의 명령어들은 영어단어의 첫글자로 만들어졌으며 대소문자를 구분한다. 입력모드의 경우에는 에디터 상에서 글을 입력하는 모드이다. 삽입 모드가 아닌 경우에는 입력이 불가하며, vi에디터는 명령어 모드로 시작된다. 마지막으로 ex모드의 경우에는 명령어 모드의 확장이라고 볼 수도 있는데, 마지막에 정리를 하거나, 저장을 하기 위해 사용되는 모드로 대체적으로 :나 /, ? 이 사용된다.
그럼 구체적인 명령어를 살펴보면,
command line 명령어 |
내 용 |
vi file |
vi를 시작하여 지정한 파일 편집 |
vi -r file |
읽기 전용(read- only) 편집기로서 vi를 시작하여 지정한 파일 편집 |
view file |
읽기 전용(read- only) 편집기로서 vi를 시작하여 지정한 파일 편집 |
vi -r |
되살릴 수 있는 모든 파일 이름 보여주기 |
vi -r file |
vi를 시작하여 지정한 파일 되살리기 |
편 집 명 령 |
내 용 |
i |
입력 모드로 전환, 커서 위치 앞에서 삽입 |
a |
입력 모드로 전환, 커서 위치 뒤에서 삽입 |
I |
입력 모드로 전환, 현재 줄의 앞에 삽입 |
A |
입력 모드로 전환, 현재 줄의 끝에 삽입 |
o |
입력 모드로 전환, 현재 줄의 아래에 전개 |
O |
입력 모드로 전환, 현재 줄의 위에 전개 |
:e file |
지정한 파일의 편집 |
:e! file |
지정한 파일의 편집, 자동 점검의 생략 |
r |
단지 한 글자만 변경(입력 모드로 바뀌지 않음) |
R |
입력하는 대로 겹쳐 써서 변경 |
s |
삽입에 의해 한 단어의 변경 |
C |
커서의 위치로부터 줄 끝까지 삽입에 의한 변경 |
cc |
전체 줄을 삽입에 의한 변경 |
S |
전체 줄을 삽입에 의한 변경 |
cmove |
커서부터 move까지 삽입에 의해 변경 |
~ |
대,소문자 바꾸기 |
u |
편집 버퍼를 수정했던 마지막 명령을 취소 |
U |
현재 줄을 저장 |
. |
편집 버퍼를 수정했던 마지막 명령 반복 |
x |
커서가 있는 문자 삭제 |
X |
커서의 왼쪽 문자 삭제 |
D |
커서부터 줄의 끝까지 삭제 |
dd |
현재 줄의 전체 삭제 |
dmove |
커서부터 move까지 삭제 |
dG |
커서부터 편집 버퍼의 끝까지 삭제 |
d1G |
커서부터 편집 버퍼의 맨 앞까지 삭제 |
:<line>d |
지정한 줄의 삭제 |
:<line>,<line>d |
지정한 범위의 삭제 |
:<line>co<target> |
지정한 줄을 복사하여 target 줄 밑에 삽입 |
:<line>, <line>co<target> |
지정한 범위를 복사하여 target 줄 밑에 삽입 |
:<line>m<target? |
지정한 줄로 이동하여 target 줄 밑에 삽입 |
:<line>, <line>m<target> |
지정한 범위로 이동하여target 줄 밑에 삽입 |
<n>!!command |
n번 줄에서 command의 실행 |
!move command |
커서부터 move까지 command 실행 |
!move fmt |
커서부터 move까지 줄들을 형식 맞추기 |
:w |
원래의 파일로 데이터를 저장 |
:w file |
지정한 파일로 데이터를 저장 |
:w>> file |
지정한 파일에 데이터를 추가 |
:wq |
데이터를 저장하고 종료 |
:q! |
데이터를 저장하지 않고 종료 |
:set number |
내부 줄 번호 디스플레이 |
:set nonumber |
내부 줄 번호 디스플레이 않기 |
p |
마지막으로 지워진 것을 커서의 뒤/아래에 삽입 |
P |
마지막으로 지워진 것을 커서의 앞/위에 삽입 |
xp |
두 문자를 바꿈 |
deep |
두 단어를 바꿈 |
ddp |
두 줄을 바꿈 |
/rexp |
지정된 정규 표현식에 대해 앞으로 이동 |
/ |
이전의 패턴에 대해 앞으로 검색을 반복 |
?rexp |
지정된 정규 표현식에 대해 뒤로 이동 |
? |
이전의 패턴에 대해 뒤로 검색을 반복 |
n |
/나 ?명령에 대해 같은 방향으로 반복 |
N |
/나 ?명령에 대해 반대 방향으로 반복 |
:ab short long |
short를 long에 대한 약어로 변경 |
:ab |
현재 약어 목록을 표시 |
:una short |
약어 short를 표시 |
r<Return> |
문자를 뉴라인으로 변경 |
J |
아래 line을 현재 line과 합치기 |
:set wm=n |
오른쪽으로 n문자 위치에서 자동적으로 줄 나눔 |
h or <Left key> |
커서를 한 칸 왼쪽으로 이동 |
j or <Down key> |
커서를 한 줄 아래로 이동 |
k or <Up key> |
커서를 한 줄 위로 이동 |
l or <Right key> |
커서를 한 칸 오른쪽으로 이동 |
<Backspace> |
커서를 한 칸 왼쪽으로 이동 |
<Space> |
커서를 한 칸 오른쪽으로 이동 |
- |
커서를 이전 줄의 처음으로 이동 |
+ |
커서를 다음 줄의 처음으로 이동 |
<Return> |
커서를 다음 줄의 처음으로 이동 |
0 |
커서를 현재 줄의 맨 앞으로 이동 |
$ |
커서를 현재 줄의 맨 끝으로 이동 |
^ |
커서를 현재 줄의 첫글자(공백이나 탭이 아닌)로 이동 |
w |
커서를 다음 단어의 첫 글자로 이동 |
e |
커서를 다음 단어의 끝 글자로 이동 |
b |
커서를 이전 단어의 첫 글자로 이동 |
W |
w와 같음(문장 부호 무시) |
E |
e와 같음(문장 부호 무시) |
B |
b와 같음(문장 부호 무시) |
( |
다음 문장의 처음으로 이동 |
) |
이전 문장의 처음으로 이동 |
{ |
다음 문단의 처음으로 이동 |
} |
이전 문단의 처음으로 이동 |
H |
커서를 화면 맨 위로 이동 |
M |
커서를 중간으로 이동 |
L |
커서를 맨 아래로 이동 |
^f |
한 화면 아래로 이동 |
^b |
화면 위로 이동 |
^d |
반 화면 아래로 이동 |
^u |
반 화면 위로 이동 |
n^d |
n줄만큼 아래로 이동 |
n^u |
n줄만큼 위로 이동 |
:!command |
vi를 중단하고 지정한 셸 명령을 실행 |
:!! |
vi를 중단하고 이전의 셸 명령을 실행 |
:sh |
vi를 중단하고 셸을 실행 |
:!csh |
vi를 중단하고 새로운 C-셸을 실행 |
:s/<pattern>/<replace>/ |
현재 줄의 치환 |
:<line>s/<pattern>/<replace>/ |
지정한 줄의 치환 |
:<line>,<line>s/<pattern>/<replace>/ |
정한 범위의 치환 |
:%s/<pattern>/<replace>/ |
모든 줄의 치환 |
:<line>r file |
file의 내용을 지정한 줄 다음에 삽입 |
:r file |
file의 내용을 현재의 줄 다음에 삽입 |
:<line>r !command |
command의 결과를 지정한 줄 다음에 삽입 |
:r !command |
command의 결과를 현재의 줄 다음에 삽입 |
:r !look pattern |
지정한 pattern으로 시작된 단어 삽입 |
. |
뉴라인을 제외한 모든 단일 문자와 대응 |
* |
영 또는 그 이상의 선행 문자와 대응 |
^ |
줄의 시작과 대응 |
$ |
줄의 끝과 대응 |
\< |
단어의 시작과 대응 |
\> |
단어의 끝과 대응 |
[ ] |
묶여진 문자중의 하나와 대응 |
[^ ] |
묶여진 문자를 제외한 아무것하고나 대응 |
\ |
이어지는 기호를 문자 그대로 해석 |
<n>G |
줄번호 n으로 건너뛰기 |
1G |
편집 버퍼의 첫 줄로 건너뛰기 |
G |
편집 버퍼의 마지막 줄로 건너뛰기 |
:map g lG |
g가 lG와 같도록 매크로 정의 |
|
[출처] [System] Vi 명령어vi 명령어|작성자 리즈