본문 바로가기

컴퓨터/프로그램,각종팁

[UNIX/LINUX] vi 편집기 사용법

vi 개론

    ex : vi 편집기가 이용되기 이전 유닉스의 기본 편집기 - ex는 라인 편집기라는 형식

         하이텔등의 vt모드에서 사용하는 기본 편집기와 비슷함

    vi : ex를 visual 하게 만들었다고 하여 이름이 vi라고 함

         기본 명령어들이 ex와 동일(ex 명령어라고 함)

         HP-UX 11.X등의 유닉스 버전에서는 VI와 ed , ex, view , e 등의 프로그램이 아예

         같은 프로그램 코드를 사용하여 하드 링크로 되어 있기도 함

        

     vim : 오리지널 버전의 vi보다 여러가지가 개선

            한글 처리 및 기타 상요자 인터페이스가 vi보다 향상

            사용자에 따라서는 vim이 추가적으로 제공하는 여러가지 멋진 기능을 활용하는데에

            취미를 붙이게 될 수 도 있음

 


      vi 기본 사용법

            vi 편집기

                 - 명령어 모드 : 입력한 글자는 모두 명령어로 인식하여 명령을 수행

                       - search 모드 : 문자열을 검색

                       - ex 모드 : 보다 자세한 명령할 수 있음

                 -  삽입 모드 : 입력한 글자는 문서 내용이 됨

             기본적으로 vi는 두가지의 구분된 모드하에서 동작

                - 명령어 모드 와 삽입모드

                - 최초로 vi를 실행시켰을 때의 모드는 명령어 모드

 


             vi 편집기의 시작

                 - 모드 전환

                    vi에는 명령어 모드와 삽입 모드가 있어 파일을 편집하다가 새로운 내용을 입력하려면

                    삽입 모드로 전환하여야 함.

                    입력을 끝내고 다시 편집하려면 명령어 모드로 전환해야 함

                    MS 윈도우의 워드나 아래 한글등의 문서 편집기에는 이런 모드 전환 없이 입력과

                    편집이 하나의 모드 안에서 이루어짐

 


             vi 개론

                     10dw - 10회 삭제 단어 현재 커서 위치로 부터 10개의 단어를 삭제하라

                     삽입 모드 i,l,A,o,O,c 알파벳의 공통점

                     명령어 모드 -> 삽입 모드

i : 현재 위치한 커서앞에 입력

a : 현재 위치한 커서 앞에 입력

l : 현재 라인의 첫 문자 앞에 입력

A : 현재 라인의 마지막 문자 뒤에 입력

o : 현재 라인 다음에 새로운 라인을 만듬

O : 현재 라인 이전에 새로운 라인을 만듬

 

삽입 모드에서 <ESC>를 누르기 전까지 입력한 글자는

<Backspace> 키로 지울 수 있지만, 삽입 모드로 들어오기 전에

입력한 글자는 <Backspace> 키로 지울 수 없습니다.

이럴 경우에는 다음에 설명되는 삭제 명령어를 사용하셔야 합니다.

 

                <삭제에 관련된 명령어>

                글자 혹은 라인을 삭제할 경우 삭제 명령어와 x와 d를 사용합니다.

                <문자 삭제>

                 x 현재 커서가 위치한 문자 삭제

                 X 현재 커서가 위치한 앞 문자 삭제

 


                 라인 삭제 : 라인을 지우는 명령어는 d

                                 이 명령어를 사용할 때는 d에 뒤이어 쓰는 문자들은 삭제의

                                 범위를 표현

       dd : 현재 커서 라인 전체를 지움

       dw : 현재 커서로 부터 다음 단어 처음까지를 지움

       d3l : 현재 커서로 부터 다음 세 글자를 지움

       d0 : 현재 커서로 부터 다음 라인의 시작까지를 지움

       d1G : 현재 커서로 부터 파일의 시작까지를 지움

       dG : 현재 커서로 부터 파일의 끝까지를 지움

       D : 현재 커서로 부터 라인의 마지막까지를 지움

      

       < 변경 명령어 >

       r - 한글자만 변경

      R - <ESC> 가 눌리기 전까지의 모든 글자를 변경

     

      cc  - 현재 커서가 위치한 라인 전체를 변경

      cw - 현재 커서가 위치한 다음 단어를 변경

      c3l - 현재 커서가 위치한 다음 3 단어를 변경

      c0 -  현재 커서로 부터 라인의 시작까지를 변경

      c1G - 현재 커서로 부터 파일의 시작까지를 변경

      cG - 현재 커서로 부터 파일의 마지막까지를 변경

      c$ - 현재 커서로 부터 라인의 마지막까지를 변경

     

      < 자르기 복사 붙여넣기>

      자르기 : vi의 클립보드는 단 하나이므로 , 두가지를 삭제했다면,

      먼저 삭제한 내용은 영원히 없어지게 됨.

     

      < 복사하기 명령어>

       yy - 현재 커서가 위치한 라인 전체를 복사

       yw -  현재 커서가 위치한 다음 단어를 복사

       y0 - 현재 커서가 위치한    라인의 시작까지를 복사

       yG - 현재 커서로 부터 파일의 마지막까지를 복사

      

       <붙이기 명령어>

       삭제하거나 복사한 항목을 붙여놓고 싶을때는 p또는 P(Paste) 명령을 사용함

       -p : 현재 커서 위치의 다음 문자나 다음 라인에 붙여짐

       -P : 현재 커서 위치에 끼워 넣어지거나 앞쪽 라인으로 삽입됨.

 


       여기에서 삭제하거나 복사한 단위가 문자 단위인지 아닌지 라인 단위인지에 따라

       붙여넣기가 다르게 동작함

 


       < 찾기 명령어>

       찾기를 하려면 명령어 모드에서 seach 모드로 들어가야 합니다.

       

                 명령어 모드 -> search 모드(/ ?)

                 명령어 모드 <- search 모드 (Enter)

 


        명령어 모드 -> search 모드 /- 현재 커서 위치에서 다음 방향으로 찾기 수행

                                               ?- 현재 커서 위치에서 이전 방향으로 찾기 수행

        명령어 모드 <- search 모드 Enter : 즉시 찾기를 수행한 후 다시 명령어 모드로 돌아감

 


        다음 찾기 명령어 n - 이전과 같은 방향으로 찾기 반복

                                N - 이전과 반대 방향으로 찾기 반복

 


        

         바꾸기 명령어 : 다른 명령어와는달리 ex명령어를 사용하기 때문에 약간 복잡

            명령어 모드 -> ex모드 (:)

            명령어 모드 <- ex모드 (Enter)

         :1.#s/old/new/g

            첫번째 라인부터 마지막 라인까지 , 즉 파일 전체에서 old라는 글자를 new 라는 글자

            로 대체함

         :1.20s/old/new/gc

            첫번째 라인부터 20번째 라인까지 , 특 20줄에서 old 라는 글자를 new 라는 글자로

            대체하되 , 바꾸기 전에 물어봄

         : n.ms/old/new/g

             n번째 라인에서 m번째 라인까지 old라는 글자를 new라는 글자로 대체함

         파일 제어 명령어

             다음 명령어들은 ex모드에서 수행되는 명령어 들입니다. 따라서 명령어 앞쪽에서 항

             상 : 가 붙습니다.

       

          ex) 명령에서 수행되는 명령

              :r file 현재 라인 다음으로 파일을 읽어들임

              :w 현재의 내용을 파일로 저장함

              :w! 사용권한을 무시하고 현재 내용을 파일로 덮어씀

              :w file 다른 이름ㅇ로 저장함

              :wq 저장후 종료함

             : x 저장한 후 종료함

             :q 저장하지 않고 종료함

             :q! 저장하지 않고 종료함

             :!cmd 쉘 명령 수행

             :r!cmd 쉘 명령 수행 결과를 현재 커서 이후로 읽어들임

          man

              Name : 명령어 이름(Command line)

              Synopsis : Syntax 요약

              Description : 명령어 , 옵션등의 의미설명

              Examples : 사용 예

              See Also : 유사하거나 관련 있는 명령어

              Files 관련 파일명

         맨페이지와 섹션

              맨페이지는 각 영역에 따라 다음과 같이 여러 섹션으로 나뉘어져 있습니다.

              1번 섹션 :  사용자 명령어

              2번 섹션 : 리눅스 시스템 콜

              3번 섹션 : 라이브 러리

              5번 섹션 : 파일 형식

              8번 섹션 : 시스템 관리 명령어

        기본적인 파일 제어 명령어

              cd , pwd( 경로 이동 및 확인)

              cd 라는 명령어를 이용하여 디렉토리를 이동함.

              $ man 섹션 번호 명령어( 또는 라이브러리 함수명)

 


              여기에서 디렉토리 명을 생략하면 사용자의 홈 디렉토리로 이동합니다.

               pwd : 자신이 현재 어느 위치에 있는지 확인해야 할 경우에 사용함.

              이때 사용하는 명령어는 pwd

        파일 정보 확인 -ls

               디렉토리 안에 어떤 파일이 있는지 알고 싶을 때 사용한다.

               -l 긴 형식으로 파일의 정보를 자세히 보여줌

               -a 숨김 파일을 볼수 있는 옵션으로 파일의 속성까지 보여줌

               -F 파일 타입을 보여줌(flag file type)

               -R 서브 디렉토리를 재귀적으로 나타냄

               -i 파일의 Inode 값을 보여줌(file name wi

 

         사용 권한

               drwxr_xr_x :  열자리의 문자들 중 첫번째 자리를 제외한 나머지 9자리는 세

                                  자리씩 끊어서 세개의 그룹을 형성

                      첫번째 세문자 그룹은 소유자 Owner 혹은 User 권한

                      두번재 세문자 그룹은 그룹(소유 Group)의 권한

                      세번째 세문자 그룹은 그밖의 타인의 권한

          디렉토리 생성 및 삭제 -mkdir , rmdir

                mkdir 디렉토리를 만들때 사용하는 명령어

                rmdir 디렉토리를 삭제할때 사용하는 명령어

          파일 삭제 , 복사 및 이름 변경

                rm : 파일 제어에 있어서는 파일을 지움

                       -i 삭제전 , 삭제할 지를 물어봄

                       -r 자식 디렉토리까지 삭제함

                cp  :파일을 복사

                        -i 타켓 파일이 이미 존재할때 해당 파일에 덮어 쓰며 복사할 것잊니를 체크

                           하는 옵션

                        -r 자식 디렉토리 및 자식 디렉토리의 파일까지 복사하는 옵션

 


                mv : 파일을 이동시킴

                         -i 타겟 파일이 존재할때 파일을 이동시킬 것인지를 체크하는 옵션

 


          링크라는 개념은 다른 운영 체제에는 없는 조금 특별한 기능입니다.      

          링크의 방법 1. 하드 링크

              파일 시스템이 다르면 inode값을 공유 할 수 없으므로 동일한 파일 시스템 안에서

              만 링크가 가능하다

                          2. 심볼릭 링크 - 원본 파일의 이름을 공유하는 방법

         

          파일 내용보기 - cat , more , less , head , tail

                $cat (파일명) : 파일의 내용 전체를 확인하고자 할때 사용하는 명령어이다.

                $less 파일명 :

                $more 파일명 :  파일의 내용을 페이지 단위로 보여지며, 앞/뒤로 스크롤 시킬수

                                 있는 기능을 가지고 있습니다. 주로 이 명령어는 단독으로

               

                $head 파일명 : 파일의 시작 부분 10줄을 보여줌

                $tail 파일명    : 파일의 끝부분 10줄을 보여줌

 


          파일 찾기 - locate , find

               $locate 파일명

               $find <경로>[옵션] 파일명 - locate보다 다양한 조건으로 파일의 위치를 찾아 낼

                         수 있는 명령어이다

 


               -name filename : 파일명이 filename과 일치하는 파일을 찾습니다.

               -type x : 파일 타입이 x와 일치하는 파일을 찾습니다.

              

           grep 명령어 : 파일 내에서 특정한 문자열 패턴을 검색하여 해당하는 라인을 화면에

                 출력하는 명령어입니다. 파일에서 문자열을 찾아내는 경우뿐만 아니라 명령문의

                 수행 결과가 아주 많을때 필요한 정보가 포함된 부분만 출력하는 경우에 이용할

                 수도 있습니다.

                 $grep 문자열<파일명>

            파일의 압축과 관리 -tar

                공개된 리눅스용 소스 파일들이 많다 이런 경우 대게 .tar.gz 등의 확장자로 된

                 파일로 압축되어 있음. 시스템으로 다운받아 설치하려면 이 파일의 압축을 풀고

                 설치 프로그램을 수행해야 함.

                 $tar[옵션]<tar파일명>[파일명1파일명2...]

                 명령어

                     -cvzf  tar 파일명 다음에 나열되는 파일들을 하나의 파일로 묶어 gzip 도구로

                       압축 시키는 옵션

                     -xvzf  tar 파일명으로 압축된 파일을 풀어 설치하는 옵션

                              다운받은 파일의 확장자가 .tar.gz인 경우 이 옵션을 이용

                      -cvif tar 파일명 다음에 나열되는 파일들으 하나의 파일로 묶어 bzip2도구로

                             압축시키느 옵션

                      -xvjf  tar파일명으로 압축된 파일을 풀어 설치하는 옵션


 

3가지 모드

 
Normal : vi 처음 실행했을 때 노멀모드이다. 이 상태에서는 텍스트입력이 불가. 커서를 이동해서 각종 자르고 붙이고 편집.
Insert : 보통 'a' 'i'를 누르고 입력모드로 들어간다. Esc키누르면 노멀모드로.
Command-line : ' : ' 입력하면 가장 아랫라인에 프롬프트 상태로 되고 가종 명령 실행 저장 나가기 등등.
 
vi 시작
 
$ vi
$ vi <파일명> 
 
vi 나가기
 
나가려면 일단 노멀모드 상태이어야 한다.
 
:q        만약 파일에 변경사항이 있으면 알려준다. 저장하지 않으면 나갈 수가 없다.
:q!        무조건 나간다. 저장 되었건 안되었건
:wq        변경사항 저장하고 나간다.
 
입력하기
 
vi처음시작하면 노멀모드이다. a,A,i 눌러서 입력모드로 들어가서 입력하면된다.
a    현재 커서가 위치한 다음칸부터 입력
A    현재커서가 위치한 줄의 끝에서부터 입력
i    현재 커서가 위치한 그 자리부터 입력
 
커서 컨트롤
 
노멀모드에서 커서 이동키
h    왼쪽으로
j    아래로
k    위로
l    오른쪽으로
자판에 방향키가 있다면 방향키도 가능하다
 
b    한단어 뒤로(왼쪽)
f     한단어 앞으로(오른쪽)
^    커서가 위치한 줄의 처음으로
$    커서가 위치한 줄의 마지막으로
(    커서가 위치한 문장의 처음으로
)    커서가 위치한 문장의 마지막으로
{    커서가 위치한 단락의 처음으로
}    커서가 위치한 다란의 마지막으로
1G    현재파일의 가장 처음으로
0G    현재파일의 가장 마지막으로
 
지금까지에 모든 조작전에 숫자를 입력할 수 있고 그 숫자만큼 움직인다.
예를 들어서 '5b'를 차례로 누르면 5단어 뒤로 커서가 이동하고  '5^'를 누르면 5줄 위로 커서가 이동한다.
 
아래는 화면을 움직이는 키이다. 커서는 움직이지 않는다. 그런데 화면이 움직여 커서가 화면 끝에 걸리면 그 때부터는 커서가 화면끝에서 계속걸려서 움직인다.
Ctrl + e    한 줄씩 화면을 아래로 이동
Ctrl + d    한 화면 아래로 이동
Ctrl + y    한 줄식 화면을 위로 이동
Ctrl + u    한 화면 위로 이동
 
지우기, 바꾸기
 
x    커서가 위치한 한글씩 지운다.
숫자x    입력한 숫자의 글자를 지운다.
dw    커서 위치한 한 단어를 지운다.
d$     커서 위치한 라인을 지운다.
dd    커서 위치한 라인 지운다.  
d}      커서 위치한 다락을 지운다.
 
cw    커서가 위치한 곳부터 커서 위치한 단어의 끝부분까지 변경할 수 있는 입력모드로 전환
c$    커서가 위치한 곳부터 커서 위치한 라인의 끝부분까지 변경할 수 있는 입력모드로 전환
c}    커서가 위치한 곳부터 커서 위치한 단락의 끝부분까지 변경할 수 있는 입력모드로 전환
위 바꾸기 키를 입력하면 변경할 범위의 끝에 ' $ ' 표시가 생긴다. 그리고 모든 변경 마친다음 Esc눌러 노멀모드로 나와야한다.
 
자르기, 복사하기 , 붙이기
 
기본적으로 복사는 y, 붙이기는 p 자르기는 위에서 말한 지우기 x로 한다.
여기에 숫자, w, $, } 등과 조합해서 범위를 정한다. 예를 들어서 5y, yw, y$
 
찾기 바꾸기
 
' / '나 ' ? '로 찾는다.
/    커서아래로
?    커서위로
 
특정문자를 찾아서 바꾸는 것은 명령모드로 들어가서 다음과 같이  입력한다.
:%s/찾고자하는 물자/바꾸고자하는 문자
예  :%s/A/B        A를 찾아서 B로바꾼다
 
옵션사용가능하다
예    :%s/A/B/g        - 모든 A를 찾아서 B로 자동으로 바꾼다.
       :%s/A/B/gc       - 모든 A를 찾아서 B로 하나하나 물어가면서  바꾼다.  y, n 눌러서 결정
 
 
 
 

다중창 사용

 
vi에서 창을 분할하여 사용가능하다. 명령모드에서 다음을 입력한다.
:hide        현재커서가 위치한 창을 닫는다
:only        현재커서가 위치한 창만 남기고 모두 닫는다
:split filename        입력한 파일을 다른창에서 불러온다
:sview filename        split와 동일하고 다만 읽기모드로 불러온다. 편집불가
:vsplit filename        창을 세로로해서 파일 불러온다.
 
 
 
창간 이동과 창크기 조정은 다음과 같이
Ctrl + w 방향기        커서이동
Ctrl + ww            다음창으로 이동
Ctrl + w _            현재창 최대화
Ctrl + w +            현재창 한줄 키움
Ctrl + w -            현재창 한줄 줄임
Ctrl + w =            모든창 같은 크리로
 
vi 환경설정
 
환경설정 파일은 다음 세가지가 있다.
/etc/vimrc
~/.vimrc
~/.exrc
 
위 파일은 없을 수 도 있다. 더 많은 정보는 아래 사이트 참조
제주삼다수, 2L,... 오뚜기 진라면 매운... 상하목장 유기농 흰... 남양 프렌치카페 카... 고려인삼유통 홍삼 ... 종근당건강 오메가3... 요이치 카링 유무선...