vi > 개발자팁

개발자팁

개발과 관련된 유용한 정보를 공유하세요.
질문은 QA에서 해주시기 바랍니다.

vi 정보

JavaScript vi

본문

vi

9.1 미리 알아두어야 할것들
9.1.1 VI 명령어 모드 3 가지
1) ESC 모드
2) 편집모드
3) 콜론모드(ex모드)

9.1.2 VI 명령어의 간단한 문법
(반복횟수)(편집명령)(반복횟수)(커서이동명령)
현재의 위치에서 커서 이동명령의 내용대로 문서의 임의위치로 이동하는 순간, 편집명령어의 내용이 수행된다.

9.1.3 ESC 모드에서 사용되는 몇 가지 기호
G :  화일의 맨끝
^ :  현재줄의 맨앞 (빈칸무시)
0 :  현재줄의 맨앞
$ :  현재줄의 맨뒤
% :  짝을 이루는 기호 확인하기
w :  다음 단어
b :  이전 단어
e :  현재 단어의 끝 글자

9.1.4 여러가지 특수한 기호들
. :  한글자를 대표하는 기호 (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 를 대표

9.2 커서 움직이기
9. 2.1 글자 단위 이동
위쪽으로

                    k                   사선을 옆으로 그어 놓은 이유는 보통
                                          초보자들이 h, l 은 잘 구별하는 반면
  왼쪽으로 h       \      l  오른쪽으로     k, j 를 항상 혼동하기 때문이다
             
                    j              항상 h,j \ k,l 로 기억해두면 잊지않게 된다.
              아래쪽으로

9.2.2 줄 단위 이동
^ :   줄의 맨앞으로 (빈칸무시)
0 :   줄의 맨앞으로
$ :   줄의 맨뒤로
% :   짝을 이루는 기호 확인하기
+ :   다음줄의 첫번째 글자로
- :   윗줄의   첫번째 글자로
n| :   현재줄의 n 번째 열로 (n은 임의의 숫자)
H :   화면상에 처음줄로
M :   화면상의 중간줄로
L :   화면상의 마지막줄로
nH :   화면상의 처음줄로부터 n 줄 밑으로
nL :   화면상의 마지막줄로부터 n 줄 위로
G :   맨 마지막줄로 (go)
nG :   n 번째줄로
gg :   맨 마지막줄로
ngg :   n 번째줄로
:n :   n 번째줄로

9.2.3 단어 단위 이동
w :   한단어 오른쪽으로 (word)
b :   한단어 왼쪽으로 (back)
e :   현재 단어의 끝으로 이동 (end)
E :   현재 단어의 끝으로 이동 (구두점 무시 - 영문자에 해당 - ? . !.)
) :   다음 문장의 시작으로
( :   이전 문장의 시작으로
} :   다음 문단의 시작으로
{ :   이전 문단의 시작으로
]] :   다음 섹션의 시작으로
[[ :   이전 섹션의 시작으로

9.2.4 화면단위 이동
Control - F(orward)   한화면   밑으로 이동.
Control - B(ackward)  한화면   위로   이동.
Control - D(own)      반쪽화면 밑으로 이동.
Control - U(pon)      반쪽화면 위로   이동.
Control - E           커서는 현재위치 그대로 화면만 한줄씩 위로   이동
Control - Y           커서는 현재위치 그대로 화면만 한줄씩 아래로 이동
z                     커서의 위치와 함께, 화면상의 맨위로
nz                    n번 라인을 화면상의 맨위로
z.                    커서의 위치와 함께, 화면상의 중간으로
z-                    커서의 위치와 함께, 화면상의 맨아래로

 


Control - G        현재 편집문서의 정보 보여주기
Control - L        화면 재표시 (글자가 깨졌을경우)
Control - R(edraw) 화면 재표시 (글자가 깨졌을경우)

9.3 편집하기
9.3.1  복사, 붙이기, 합치기
y       :   (Yank) 복사하기
            yy 한줄복사
            2yy 두줄복사
            nyy n줄 복사 (n 은 임의의숫자)
            yw 한단어 복사
            y2w 두단어 복사
            y$ 그줄 끝까지 복사
            y0(y^) 그줄 처음까지 복사
            yG 문서의 끝까지 복사
            Y 한줄복사 (yy 와 동일)

마지막 명령어의 반복
.       :   마지막에 수행한 명령어를 반복한다.
           2.  명령어를 2번 반복한다.
p       :   (Put or Paste) 붙이기
           p  아래로(오른쪽으로) 붙이기
           2p 아래로(오른쪽으로) 두번 붙이기
           P  위로(왼쪽으로) 붙이기
           2P 위로(왼쪽으로) 두번 붙이기
J       :   (Join) 두줄 합치기
           J  현재줄을 윗줄에 붙이기 (두줄 합치기)
           3J 세줄합치기

9.3.2 지우기, 복구하기, 바꾸기
d       :   (Delete)  지우기
           dd 한줄지우기

 


           2dd 두줄지우기
           ndd n줄지우기 (n 은 임의의숫자)
           dw 한단어 지우기
           d2w 두단어 지우기
           d$ 그줄 끝까지 지우기
           d0(d^) 그줄 처음까지 지우기
           dG 문서 끝까지 지우기
           D  그줄 끝까지 지우기 (d$ 와 동일)
u       :   (Undo) 복구하기
           u  한번복구하기
           2u 두번복구하기
c       :   (Change) 바꾸기
           cc 한줄바꾸기
           2cc 두줄바꾸기
           ncc 여러줄 바꾸기 (n 은 임의의숫자)
           cw 한단어 바꾸기
           ce 한단어 바꾸기 (공백 제외)
           c2w 두단어 바꾸기
           c$ 그줄 끝까지 바꾸기
           c0(c^) 문서 끝까지 바꾸기
           C  그줄 끝까지 바꾸기 (c$ 와 동일)
r       :   (Replace) 한글자 바꾸기
           r  한글자 바꾸기
          2r  두글자 바꾸기
## r 명령어는 insert 모드로 바뀌지 않는다. ##

R : 바꾸면서 덮어 쓰기
S : 한글자 지우고 insert 모드로 - cl 와 동일 -
S : 한줄지우고 insert 모드로 - cc 와 동일 -
~ : 대문자 <-> 소문자 바꾸기 - 영문자에만 해당 -
## 지우기와 바꾸기의 차이점은 바꾸기 명령어 후에 vi 편집모드로 바뀐다. ##

 

 

9.3.3 block 지정하기
v :  block을 지정한다.
(화면 밑에 -visual-이라고 나오면 커서를 이동해서 block지정한다.)
y :  block을 copy한다.
x :  block을 잘라두기 한다.
p :  copy된 것을 커서가 위치한 다음 column에 붙여쓰기 한다.
yy :  커서가 위치한 라인을 copy한다.

9.4 찾기
/pattern pattern이라는 단어 찾기 - 위에서 아래로
?pattern pattern라는 단어찾기 - 아래에서 위로
/ : 찾기 반복 - 위에서 아래로
n : 찾기 반복 - 위에서 아래로
? : 찾기 반복 - 아래에서 위로
N : 찾기 반복 - 아래에서 위로

fx : 현재 줄에서 x문자 찾기, x는 한 개의 글자
Fx : 현재 줄에서 반대방향으로 x문자 찾기, x는 한 개의 글자
tx : 현재 줄에서 x문자를 찾아서 바로 전에 커서 놓기
Tx : 현재 줄에서 반대방향으로 x문자를 찾아서 바로 후에 커서 놓기

; : 현재 줄에서 한글자 찾기 반복
' : 현재 줄에서 한글자 찾기 반복, 반대방향으로

## 찾기와 편집 명령의 응용 ##
d/simple simple 이라는 단어가 나올 때까지 지우기
d/^scully 줄의 맨 앞에 scully 라는 단어가 나올 때까지 지우기
y/yahoo yahoo라는 단어가 나올 때까지 복사하기

9.5 편집모드 지정하기
i : insert    현재커서위치
10i*      * 문자를 10개 집어넣기

 


25i=-     =- 를 25개 반복하기
I : 현재커서가 위치한 줄의 맨 처음에
a : append    현재커서위치 바로 다음에
A : 현재커서가 위치한 줄의 맨 끝에
o : open      현재커서위치 바로 아래 줄에
O   : Open      현재커서위치 바로 윗 줄에

9.6 위치 기억하기
mx : mark      현재의 커서위치를 x 라는 문자로 기억         
`x : 기억된 x 위치로 이동
`` : 이동하기 전의 위치로 (제자리)
'x : 기억된 x 위치의 맨 앞으로 이동
'' : 이동하기 전 위치의 맨앞으로 이동

9.7 버퍼 이용하기
"xyy : x 라는 이름의 버퍼에 한 줄 복사 하기
"xp : x 라는 이름의 버퍼에 저장된 내용을 붙이기

## 잠시 쉬었다 가기 ##
:=  현재 줄 번호 보여주기
:/pattern/ = pattern이 위치한 줄 번호 보여주기

9.8 ex 명령어 익히기
9.8.1 ex 명령어의 기본형식
:k,l command m
(범위지정) (명령어) (명령이 수행될 위치)

예)
: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번줄 이후로 옮기기

9.8.2 g 옵션 붙이기
:g/pattern  파일전체에서 마지막으로 pattern이 쓰여진 줄로 가기
:g/pattern/ p  파일전체에서 pattern이 있는 줄 보여주기
:g/pattern/ nu 파일전체에서 patterm이 있는 줄을 번호와 함께 보여주기
:60,124 g/pattern/p   60,124줄 사이에서 pattern이 들어있는 줄 보여주기

9.8.3 저장 및 종료하기
:w   저장하기 (write)
:q    종료하기 (quit)
:wq   저장하고 종료하기
:x   저장하고 종료하기 (:wq 와 동일)
:w!   강제로 저장하기 (read-only로 열었을 경우)
:q!   편집한 내용을 저장하지 않고 종료하기
:w new_file_name 새로운 파일이름으로 저장하기
:w %.new  현재 파일 이름에 .new를 붙여서 새로운 파일로 저장.
:230,$ w file_name 230 줄부터 끝 줄까지 file_name으로 저장하기
:.,600 w file_name 현재 줄부터 600줄까지 file_name으로 저장하기
:1,10 w new_file 1줄부터 10줄까지 new_file로 저장하기
:340,$ w >> new_file 340줄부터 끝 줄까지 new_file에 추가하기

 

 


9.8.4 읽기
: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 읽어 들이기

9.8.5  다중편집하기
#vi file1 file2 file3

:args 편집중인 파일목록 보여주기
:n[ext] 다음 파일로 넘어가기
:prev[ious] 이전 파일로 돌아가기

## 편집중인 파일이 저장되지 않으면 다음 파일로 넘어갈 수 없다. ##

새로운 화일 편집하기
:e[dit] file_name 새로운 file_name 편집하기.
기존에 편집하던 파일을 저장해야 한다.
        
:e!  현재의 편집중인 내용을 무시하고 가장 최근에 편집한 내용을
다시 편집하기
:new file_name      새로운 window로 파일을 연다.
Ctrl+w+w  window간 이동

9.8.6 g 옵션과 바꾸기
: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/" 다음에 인자가 없어서 윗 줄과 같은 효과)

9.9 vi 편집기 설정
#vi ~/.exrc
#vi ~/.vimrc

set autoindent :  자동 들여쓰기
set cindent  :  C 언어 형식에 맞춰 들여쓰기
set ruler  :  화면의 오른쪽 아래에 커서의 위치를 표시
set binary  :  이진 파일 편집
syntax on  :  여러 파일의 형식에 맞춰서 해당 문법을 파싱한 다음에
각 토큰이나 아규먼트를 색색으로 구분해 보여준다.
프로그래밍을 한다거나, html을 편집할 때에 편리한 기능
ls의 앨리어스에서 '--color=auto 설정 여부
set background=dark 
fe=korea  :  한글 입력

9.10 vi -r filename

9.11 vi 환경변수 값 설정
set all  :  설정된 값들을 보여준다.
set number  :  line 번호를 보여준다.
set nonumber  :  표시된 line 번호를 제거한다.
set tabstop=4 :  tap의 크기를 4 column으로 한다.

9.12 Homepage 예제
http는 html문서를 클라이언트에게 전달하는 protocol이다.
web server에 html 문서를 만들어 놓고 클라이언트에서 요구할 때 그 문서를 전달한다.

 


클라이언트는 웹 브라우져가 된다.
브라우져의 주소 부분에 http://edu00.net을 입력하면 www.edu00.net 호스트 시스템의 특정 디렉토리 안에 있는 index.html을 보여주게 된다.
먼저 각 계정 사용자들은 다음 위치에 파일을 만든다.
/home/linux00(계정)/public_html
클라이언트가 http://edu00.net/~linux/라고 입력하면 위의 디렉토리 밑에 있는 index.html을 브라우져에서 볼 수 있다.
1) #mkdir /home/linux00/public_html
2) #cd ~/public_html
3) #chmod 711 /home/linux00/public_html
4) #chmod 755 /home/linux00/public_html/index.html
5) #vi index.html
<

[이 게시물은 관리자님에 의해 2011-10-31 17:32:05 Linux에서 이동 됨]
추천
0
  • 복사

댓글 0개

© SIRSOFT
현재 페이지 제일 처음으로