▶ VI 명령어 모드 3가지 ◀
1) ESC 모드
2) 편집모드
3) 콜론모드(ex모드)
1. 시작
vi file : vi를 시작하여 지정한 파일 편집
vi -R file : 읽기 전용(read- only) 편집기로서 vi를 시작하여 지정한 파일 편집
view file : 읽기 전용(read- only) 편집기로서 vi를 시작하여 지정한 파일 편집
2. 종료 및 저장
:wq : 데이터를 저장하고 종료
:q! : 데이터를 저장하지 않고 종료
:w : 원래의 파일로 데이터를 저장
:w file : 지정한 파일로 데이터를 저장
:w>> file : 지정한 파일에 데이터를 추가
3. 커서 움직이기
3.1 커서 이동 h<Left> : 커서를 한 칸 왼쪽으로 이동
j<Down> : 커서를 한 줄 아래로 이동
k<Up> : 커서를 한 줄 위로 이동
l<Right> : 커서를 한 칸 오른쪽으로 이동
<Backspace> : 커서를 한 칸 왼쪽으로 이동
<Space> : 커서를 한 칸 오른쪽으로 이동
- : 커서를 이전 줄의 처음으로 이동
+ : 커서를 다음 줄의 처음으로 이동
<Return> : 커서를 다음 줄의 처음으로 이동
0 : 커서를 현재 줄의 맨 앞으로 이동
$ : 커서를 현재 줄의 맨 끝으로 이동
^ : 커서를 현재 줄의 첫글자(공백이나 탭이 아닌)로 이동
w : 커서를 다음 단어의 첫 글자로 이동
e : 커서를 다음 단어의 끝 글자로 이동
b : 커서를 이전 단어의 첫 글자로 이동
W : w와 같음(문장 부호 무시)
E : e와 같음(문장 부호 무시)
B : b와 같음(문장 부호 무시)
( : 다음 문장의 처음으로 이동
) : 이전 문장의 처음으로 이동
{ : 다음 문단의 처음으로 이동
} : 이전 문단의 처음으로 이동
H : 커서를 화면 맨 위로 이동
M : 커서를 중간으로 이동
L : 커서를 맨 아래로 이동
3.2 화면단위 이동 Ctrl + F(orward) : 한화면 밑으로 이동.
Ctrl + B(ackward) : 한화면 위로 이동.
Ctrl + D(own) : 반쪽화면 밑으로 이동.
Ctrl + U(pon) : 반쪽화면 위로 이동.
Ctrl + E : 커서는 현재위치 그대로 화면만 한줄씩 위로 이동
Ctrl + Y : 커서는 현재위치 그대로 화면만 한줄씩 아래로 이동
z : 커서의 위치와 함께, 화면상의 맨위로
nz : n번 라인을 화면상의 맨위로
z. : 커서의 위치와 함께, 화면상의 중간으로
z- : 커서의 위치와 함께, 화면상의 맨아래로
## Control G : 현재 편집문서의 정보 보여주기
## Control L : 화면 재표시 (글자가 깨졌을 경우)
## Control R(edraw) : 화면 재표시 (글자가 깨졌을 경우)
4. ★ VI 명령어의 간단한 문법 (주의점) ★
' (반복횟수)(편집명령)(반복횟수)(커서이동명령) '
현재의 위치에서 커서 이동명령의 내용대로 문서의 임의 위치로 이동하는 순간, 편집명령어의 내용이 수행된다.
5. 편집하기
5.1 편집하기 d : (Delete) 지우기
dd : 한줄지우기
2dd : 두줄지우기
ndd : n줄지우기 (n 은 임의의숫자)
dw : 한단어 지우기
d2w : 두단어 지우기
d$ : 그 줄 끝까지 지우기
d0(d^) : 그줄 처음까지 지우기
dG : 문서 끝까지 지우기
D : 그줄 끝까지 지우기 (d$ 와 동일)
x : 커서가 있는 문자 삭제
X : 커서의 왼쪽 문자 삭제
u : 한번 복구하기
2u : 두번 복구하기
cc : 한줄 바꾸기
2cc : 두줄 바꾸기
ncc : 여러줄 바꾸기 (n 은 임의의숫자)
cw : 한 단어 바꾸기
ce : 한 단어 바꾸기 (공백 제외)
c2w : 두 단어 바꾸기
c$ : 그 줄 끝까지 바꾸기
c0(c^) : 문서 끝까지 바꾸기
C : 그 줄 끝까지 바꾸기 (c$ 와 동일)
r : 한 글자 바꾸기
2r : 두 글자 바꾸기
5.2 복사, 붙이기, 합치기 (Go to top) y : (Yank) 복사하기
yy : 한줄복사
2yy : 두줄복사
nyy : n줄 복사 (n 은 임의의숫자)
yw : 한단어 복사
y2w : 두단어 복사
y$ : 그 줄 끝까지 복사
y0(y^) : 그줄 처음까지 복사
yG : 문서의 끝까지 복사
Y : 한줄복사 (yy 와 동일)
5.3 여러 줄의 복사와 이동 :linecotarget : 지정한 줄을 복사하여 target 줄 밑에 삽입
:line, linecotarget : 지정한 범위를 복사하여 target 줄 밑에 삽입
:linemtarget : 지정한 줄로 이동하여 target 줄 밑에 삽입
:line, linemtarget : 지정한 범위로 이동하여target 줄 밑에 삽입
5.4 마지막 명령어의 반복 . : 마지막에 수행한 명령어를 반복한다.
2. : 명령어를 2번 반복한다.
P : 위로(왼쪽으로) 붙이기
p : 아래로(오른쪽으로) 붙이기
2p : 아래로(오른쪽으로) 두번 붙이기
5.5 편집모드 지정하기 i : insert 현재커서위치
10i* : * 문자를 10개 집어넣기
25i=- : =- 를 25개 반복하기
I : 현재커서가 위치한 줄의 맨처음에
a : append 현재커서위치 바로 다음에
A : 현재커서가 위치한 줄의 맨끝에
o : open 현재커서위치 바로 아래줄에
O : Open 현재커서위치 바로 윗줄에
5.6 삽입 i : 입력 모드로 전환, 커서 위치 앞에서 삽입
a : 입력 모드로 전환, 커서 위치 뒤에서 삽입
I : 입력 모드로 전환, 현재 줄의 앞에 삽입
A : 입력 모드로 전환, 현재 줄의 끝에 삽입
o : 입력 모드로 전환, 현재 줄의 아래에 전개
O : 입력 모드로 전환, 현재 줄의 위에 전개
5.7 편집하고 있는 파일을 바꾸기 :e file : 지정한 파일의 편집
:e! file : 지정한 파일의 편집, 자동 점검의 생략
6. 찾기( Search ) (Go to top)
/pattern pattern 이라는 단어 찾기 - 위에서 아래로
?pattern scully 이라는 단어 찾기 - 아래에서 위로
/ : 찾기반복 - 위에서 아래로
n : 찾기반복 - 위에서 아래로
? : 찾기반복 - 아래에서 위로
N : 찾기반복 - 아래에서 위로
fx : 현재줄에서 x문자 찾기 - x 는 한개의 글자 -
Fx : 현재줄에서 반대방향으로 x문자 찾기 - x 는 한개의 글자 -
tx : 현재줄에서 x문자를 찾아서 바로전에 커서놓기
Tx : 현재줄에서 반대방향으로 x문자를 찾아서 바로후에 커서놓기
; : 현재줄에서 한글자 찾기반복
' : 현재줄에서 한글자 찾기반복 - 반대방향으로 -
7. ESC 모드에서 사용되는 몇가지 기호 (Go to top)
G : 화일의 맨끝
^ : 현재줄의 맨앞 (빈칸무시)
0 : 현재줄의 맨앞
$ : 현재줄의 맨뒤
% : 짝을 이루는 기호 확인하기
w : 다음 단어
b : 이전 단어
e : 현재 단어의 끝 글자
8. 줄 번호 (Go to top)
nG : 줄번호 n으로 건너뛰기
1G : 편집 버퍼의 첫 줄로 건너뛰기
G : 편집 버퍼의 마지막 줄로 건너뛰기
:map g lG : g가 lG와 같도록 매크로 정의
9. 여러가지 특수한 기호들
. : 한글자를 대표하는 기호 (dos 의 ? 와 동일)
* : 여러개의 문자를 동시에 대표하는 기호
^ : 줄의 처음시작.
$ : 줄의 맨끝.
% : 처음줄부터 끝줄까지
\ : 특수한 기호들이 가지는 뜻을 없앨때 사용.
[] : 일정한 제한을 두어 글자를 대표하고자 하는 기호.
[a-z] : a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z 를 대표
[A-Z] : A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z 를 대표
[AB] : A 또는 B
p[aeiou]t : pat, pet, pit, pot, put 를 대표
[0-9] : 0,1,2,3,4,5,6,7,8,9 를 대표
10. 약어의 사용 (Go to top)
:ab short long : short를 long에 대한 약어로 변경
:ab : 현재 약어 목록을 표시
:una short : 약어 short를 표시
11. 셸 명령 실행
:!command : vi를 중단하고 지정한 셸 명령을 실행
n!!command : n번 줄에서 command의 실행
!move command : 커서부터 move까지 command 실행
!move fmt : 커서부터 move까지 줄들을 형식 맞추기
:!! : vi를 중단하고 이전의 셸 명령을 실행
:sh : vi를 중단하고 셸을 실행
!csh : vi를 중단하고 새로운 C-셸을 실행
12. 디스플레이 제어하기
^L : 현재 화면을 다시 디스플레이하기
:set number : 내부 줄 번호 디스플레이
:set nonumber : 배부 줄 번호 디스플레이 않기
13. 위치 기억하기
mx : mark 현재의 커서위치를 x 라는 문자로 기억
`x : 기억된 x 위치로 이동
`` : 이동하기 전의 위치로 (제자리)
'x : 기억된 x 위치의 맨 앞으로 이동
'' : 이동하기 전 위치의 맨앞으로 이동
14. 버퍼 이용하기
"xyy : x 라는 이름의 버퍼에 한줄 복사 하기
"xp : x 라는 이름의 버퍼에 저장된 내용을 붙이기
: : 현재 줄번호 보여주기
:/pattern/ : pattern 이 위치한 줄번호 보여주기
15. 패턴 검색
/rexp : 지정된 정규 표현식에 대해 앞으로 이동
/ : 이전의 패턴에 대해 앞으로 검색을 반복
?rexp : 지정된 정규 표현식에 대해 뒤로 이동
? : 이전의 패턴에 대해 뒤로 검색을 반복
n : /나 ?명령에 대해 같은 방향으로 반복
N : /나 ?명령에 대해 반대 방향으로 반복
16. 시스템이 다운된 후에 되살리기
vi -r : 되살릴 수 있는 모든 파일 이름 보여주기
vi -r file : vi를 시작하여 지정한 파일 되살리기
17. EX 명령어 익히기 - 기본형식
17.1 ex 명령어의 기본형식 (Go to top) k,l command m
(범위지정) (명령어) (명령이 수행될 위치)
ex)
:1,10 co 50 : 1 줄 부터 10 줄 까지를 50 줄 이후로 복사.
:34,50 d : 34 줄 부터 50 줄 까지 삭제.
:100,150 m 10 : 100 줄 부터 150 줄까지를 10 줄 이후로 옮김.
:.,$ d : 현재줄부터 끝까지 지우기
:.,+20 co -4 : 현재줄부터 20줄을, 4줄 위에 복사하기
:-,+ t 0 : 위, 아래로 한줄(총 3줄)씩을, 문서 맨위에 복사하기
:/pattern/ d : pattern 이 들어있는 줄 지우기
:/pattern/ -nd : pattern 이 들어있는 줄로부터 n 번째 윗줄 지우기
:/pattern/ +nd : pattern 이 들어있는 줄로부터 n 번째 아랫줄 지우기
:/pattern1/,/pattern2/ d : pattern1 이 들어있는 줄부터, pattern2 가 들어있는 줄까지 지우기
:.,/pattern/ m 23 : 현재줄부터 pattern 이 들어있는 줄까지, 23번줄 이후로 옮기기
17.2 g 옵션 붙이기
:g/pattern : 화일전체에서 마지막으로 pattern 이 쓰여진 줄로 가기
:g/pattern/ p : 화일전체에서 pattern 이 있는줄 보여주기
:g/pattern/ nu : 화일전체에서 patterm 이 있는줄을 번호와 함께 보여주기
:60,124 g/pattern/ p : 60,124 줄 사이에서 pattern 이 들어있는줄 보여주기
17.3 외부파일 읽어 들이기
:r[ead] filename : 현재위치에 filename 읽어들이기
:r /usr/local/data : 현재위치에 /usr/local/data 읽어들이기
:185 r /usr/local/data : 185줄 이후에 /usr/local/data 읽어들이기
:$ r /usr/local/data : 맨끝줄 이후에 /usr/local/data 읽어들이기
:0 r /usr/local/data : 맨윗줄에 /usr/local/data 읽어들이기
:/pattern/ r /usr/local/data : pattern 이 존재하는 줄에 /usr/local/data 읽어들이기
17.4 다중편집하기
vi [file1] [file2] [file3]
:args 편집중인 화일목록 보여주기
:n[ext] 다음 화일로 넘어가기
:prev[ious] 이전화일로 돌아가기
▶ 편집중인 화일이 저장되지 않으면 다음 화일로 넘어갈수 없다 ◀
※ 새로운 화일 편집하기 ※
:e[dit] file_name 새로운 file_name 편집하기.
:e! 현재의 편집중인 내용을 무시하고 가장 최근에 편집한 내용을 다시편집하기
17.5 g 옵션과 바꾸기 (Go to top)
:m,n s/old/new/g
:g/pattern/ s/old/new/g
:1,30 s/his/the/gc 1 줄부터 30 줄까지 his 를 the 로 바꾸면서 확인하기.
:g/BX/ s/Esc/ESC/g BX가 있는줄만 찾아서 Esc 를 ESC 로 바꾸기.
:% s/editer/editor/g 처음줄부터 마지막줄까지, editer 를 editor 로 바꾸기
:g/editer/ s//editor/g 위와 동일("s/" 다음에 인자가 없어서 윗줄과 같은효과)
개식빵,서버호스팅,클라우드호스팅,코로케이션,하이퍼바이저,IDC서버호스팅,해외서버호스팅,VPN,,가상서버,VPS,PC방장비,게임서버,DDos,디도스공격,디도스공격방어