Linux

Linux Text Editor, vi


- Linux Text Editor, vi -



1) vi에 대하여 파헤쳐 보자!

1) vi란 무엇인가?

- Visual Display editor

- 텍스트 문서를 편집하는데 사용되는 텍스트 편집기.

-  Unix계열의 OS에서는 거의 모든 시스템에서 기본(Default) 텍스트 에디터로 사용되고 있다.


2) What is vim?

- Vim stands for "Vi Improved"

- vi에 unlimited undo, syntax coloring, split windows, visual selection, gui support 등이 보강된 vi clone 이다.




2) vi 기능에 대해 알아보자.

1) vi Editing Modes.

- vi는 3가지 동작 환경이 있다.

- Command mode (명령모드)

: 처음 vi에디터를 실행하면 '명령모드'에 놓여있다.

: 커서이동이 가능하며, 특정부분 복사, 붙여넣기, 삭제, 되돌리기(undo) 등이 가능하다.

: 특정키를 이용하여 '입력모드' 또는 '실행모드'로 이동할 수 있다.

          :: Esc(Ctrl+C)키를 이용하여 '입력모드' 또는 '실행모드' 에서 '명령모드' 로 돌아갈 수 있다.(Return)


- Text Input Mode (입력모드)

: 텍스트를 추가, 삭제. (텍스트 편집)

: 입력 모드로 진입할때 사용되는 명령(입력키)에 따라 동작점이 약간씩 다르다.


- Last line mode (실행모드)

: 특정 문자 검색, 바꾸기, 파일의 저장 등...

: 기타 명령어의 수행.




3) vi 명령어.

 - vi실행 옵션 -

- vi을 이용하여 파일을 실행시킬 때 옵션을 줄 수 있다.


             명령어

             동작

             vi file

             file 을 연다.

             vi file1 file2

             file1 과 file2를 차례로 연다.

             view file

             file 을 읽기 모드로 연다. 

             vi -R file 

             file 을 읽기 모드로 연다. 

             vi + file 

             file 을 열때 커서가 file 본문의 마지막 행에 위치. 

             vi +# file  <#은 Number>

             file 을 열때 커서가 #행에 위치 한다.





 - vi명령모드 -

- 처음 vi를 실행하면 명령모드에 놓이게 된다.


[입력모드 ↔ 명령모드 ↔ 실행모드]로 모드 이동이 가능하며 명령모드로 Return 하기 위해서 Esc(Ctrl+C)키를 사용한다.


             명령어

              동작

             h 또는  [Backspace] 또는  ←

              커서 왼쪽으로 한 칸 이동.

             #h 또는 #[Backspace] <#은 Number>

              커서를 왼쪽으로 #열 이동.

              j

              커서 위로 한 행 이동.

              k

              커서 아래로 한 행 이동.

              l (소문자 엘) 또는  →

              커서 오른쪽으로 한 칸 이동.

              #l  <#은 Number>

              커서를 오른쪽으로 #열 이동.

              M

              커서를 문서의 중간으로 이동.

              H

              커서를 문서의 처음으로 이동.

              w 또는 W

              커서 다음 단어 처음 문자로 이동.

              b 또는  B

              커서 이전 단어 처음으로 이동.

              e 또는  E

              커서 다음 단어 끝으로 이동.

              ^ 또는  0 또는  [home]키

              커서가 위치한 현재 행의 첫 단어로 이동.

              $ 또는  [End]키

              커서가 위치한 현재 행의 마지막 단어로 이동.

              e

              커서가 위치한 현재 행의 마지막 단어로 이동. 

              G 또는  L

              커서를 마지막 행으로 이동.

              #G 또는 #gg  <#은 Number>

              파일내의 #행으로 이동.

              gg

              첫 행으로 이동.

              Ctrl + f

              다음 페이지 이동.

              Ctrl + b              이전 페이지 이동.

              r&  <&는 문자>

              현재 커서가 있는 문자를 &로 바꾼다.

              R

              Esc입력 시까지 커서위치의 문자를 바꾼다.

              dw

              현재 커서가 위치해 있는 단어 삭제. 

              dd              현재 행 삭제.
              #dd  <#은 Number>

              현재 커서 행부터 #행만큼 삭제.

              D

              현재 행의 문자열 삭제. 행은 존재.

              yy 또는 Y

              현재 행 복사.

              #yy 또는  #Y  <#은 Number>

              현재 행을 기준으로 #행 복사.

              yw

              현재 커서가 위치한 문자열 복사.

              y$  <$은 문자'$'>

              현재 커서 위치부터 행 끝까지 복사.

              x

              현재 커서가 위치한 단어를 삭제.

              X

              현재 커서 위치의 앞의 단어를 삭제.

              p

              삭제나 복사한 행 또는 단어를 커서 뒤에 삽입.

              P

              삭제나 복사한 행 또는 단어를 커서 앞에 삽입.

              u

              작업을 이전 단계로 복구. (undo)

              Ctrl + r

              u키로 복구한 상황을 되돌림. (redo)

              ~

              커서가 위치한 단어를 소대문자 변환.





 - vi입력드 -

 - 입력모드에서는 텍스트 추가, 수정이 가능하다.


 - 해당 동작을 수행하고 입력모드로 돌입한다.


              명령어

              동작

              a

              커서 뒤에 입력모드 시작.

              A

              현재 행의 마지막 문자 뒤에서 부터 입력 시작.

              i 또는 [insert]키

              커서 앞에서 부터 입력 시작.

              I (대문자 아이)

              현재 행의 첫 문자 앞에서부터 입력 시작.

              o

              커서 아래 행을 추가하고 입력.

              O

              커서 위 행을 열고 입력.

              cw

              커서가 위치한 문자열을 삭제하고 입력모드.

              s

              커서위치의 문자를 지우고 입력모드로 변경.

              S

              현재 행의 모든 문자를 지우고 입력모드 돌입. 

              Esc 또는 Ctrl+C

              명령모드로 돌아간다. 




 - vi실행모드 -

- 명령모드 에서 ":" (shift + ; )(콜론)을 입력시 돌입한다.


- ":" (콜론)을 입력하여 실행모드에 돌입하면 : 가 입력된 상태로 vi 편집기 하단에 입력가능한 상태가 된 것을 볼 수 있다.


              명령어

              동작 

              :e file명

              file명 파일열기, 기존 열려있던 파일은 종료됨.

              :enew

              현재 창을 닫고 빈문서를 연다.

              :q

              현재 문서 종료. (단, 변경된 내용이 없는 경우)

              변경된 내용이 있을 경우 종료되지 않는다.

              :q!

              강제 종료. (저장하지 않고 종료한다.)

              :w

              현재 문서 저장.             

              :wq

              현재 문서 저장 후 종료.

              :f

              현재 문서의 파일의 이름과, 라인 수를 보여줌.

              :set nu 또는  :set number

              각 행의 번호를 보여준다.

              :set nonu

              각 행에 번호를 보여주지 않는다.

              :/"문자열" 또는  /"문자열"

              "문자열" 검색. 

              n키를 통해 Next검색 N키를 통해 Prev 검색.

              :?"문자열" 또는  ?"문자열" 

              "문자열 검색".
              n키를 통해 Prev검색 N키를 통해 Next 검색.

              :w >> File

              File 파일에 현재 문서의 내용을 추가함.

              :#r File  <#은 Number>

              File 파일의 내용을 현재 문서의 #행에 추가.

              :#r! Command

              Command 실행 결과를 파일의 #행에 추가.
              Command 예:(ls -a)

              :set ts=#  <#은 Number>

              Tab크기(사이즈)를 조절함.

              :! Command

              vi를 일시정지하고 Command 수행.

              :.! Command

              Command 수행 결과를 문서에 출력.

              :#s/string1/string2/Option


                Option : g  ( 전체(기본값) )

                Option : c ( 물어보기 )                 

                  -> y: 한번바꾸기, n: 안바꾸기

                  -> a: 다 바꾸기, q: 종료

                Option : i ( 대소문자 구분 x )

 Ex1.) :0s/aa/bb/g

  -> 0행의 aa문자열을 bb로 교체.


 Ex2.) :0,5s/aa/bb/g

 -> 0~5행의 aa문자열을 bb로 교체.


 Ex3.) :%s/aa/bb/gci

 -> 모든행의 aa문자열을 bb로 교체.

 -> 대소문자 구분하지 않으며 교체 할 때 물어봄.

              Esc 또는  Ctrl+C

              명령모드로 돌아간다.



ps. vi 실행 옵션이나 명령어가 무지막지하게 많기 때문에.. 더 필요하시면 직접.. 찾으셔서...


'Linux' 카테고리의 다른 글

Linux 부팅 과정에 대한 이해. <임시저장>  (0) 2013.07.27