프로그래밍 농장

Linux [ vi editor ] 본문

Linux

Linux [ vi editor ]

Tennessee201 2019. 10. 22.
728x90

vi editor란?  -> 리눅스에서의 문서편집기

 

 

vi 파일명   --> 파일을 여는 명령어  ( 파일 수정 가능 )

login.defs 파일을 vi 명령어로 열어본 화면 

이렇게 파일을 열어보았을떄, 윈도우에서는, 보통 마우스로 클릭만하면 그 위치로 커서가 이동하지만,

리눅스의 vi editor에서는 클릭이 먹히지않으므로 아래와같은 습관을 익혀줘야한다. 

 

 

-vi editor로 열어본 파일안의 커서위치 이동명령어

 

 

 

한칸단위 이동  :   h(좌),j(아래),k(위),l(우) 로 커서 이동

단어단위 이동  :   w(다음단어의 첫자) , d(이전단어의 첫자) , e(다음단어의 끝자)  로 커서 이동 

줄단위 이동     :  0(줄의 첫자),   $(줄의 끝자)

문단단위 이동   :<현재화면기준>  H(출력화면 첫자),   M(출력화면 가운데)   ,L(출력화면 끝자)

문서전체단위 이동  :    gg(문서전체의 첫자) , G(문서전체의 끝자)

마크 이동    :   설정법 ex) m+ [문자] ==대,소문자 구분 

                     이동 ex) `(grave) + [문자 ]

 

 

-수정 ( insert ) :    i   :현재 커서 위치부터 insert시작

                       a    :한칸 우측으로 이동한다음에 입력시작

                       소문자o  : 현재 커서가 위치한 라인 밑으로 빈라인 삽입 후, 입력 시작

                       대문자O : 위로 빈라인 삽입 후 입력 시작

== i, a, o 키를 누른 상태 : 입력모드   --->esc키를 누르거나 vi editor를 처음 열었을떄 --> 명령모드로 돌아가기   

 

 

-삭제 ( delete ) :  소문자 x :   (=윈도우의 delete와 동일 / 현재커서위치부터 삭제)

                       대문자 X :  (=윈도우의 backspace와 동일 )

                            dd   : 현재 커서위치의 줄을 삭제 

                       숫자+dd  : 입력한(숫자)만큼의 줄을 삭제 

 

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

 숫자+yy : 현재 커서가 위치한 라인부터 지정한 수만큼 라인 복사 

붙혀넣기1  : 소문자 p :현재 커서가 위치한 라인 다음라인으로 붙혀넣기 == 아래로 붙혀넣기

붙혀넣기2  : 대문자 P :현재 커서가 위치한 라인 전라인으로 붙혀넣기 == 위로 붙혀넣기

 

 

-찾기  : /   ,   ?  사용 

/찾을이름    --> 소문자'n' : 한줄씩밑으로가면서 정방향으로 보여줌  , 대문자 'N' : 역방향으로 보여줌 

?찾을이름    --> 소문자'n' : 한줄씩밑으로가면서 역방향으로 보여줌  , 대문자 'N' : 정방향으로 보여줌 

 

 

새파일 z 만들고 내용넣고 저장 후 찾기 까지해보기 .

 

z라는 파일이없으므로 새파일이름을 z 로 해서 생성하기가 됨  

이상태에서 insert의미를가진   i 를 누르면 내용입력 / 수정가능 

내용 다 입력했으면 esc 한번눌러서 insert상태 나와주고  :w(저장) z     - > z라는 이름으로 저장해주기 

 

이후 vi z 입력해보면 z파일안의 내용을 잘띄워줌 .

 

 

->  :e 파일명   -> 불러오기 , 열기 

->  :f 파일명   -> 문서 정보 확인하기 

->  :r[파일명] 

->  :r![명령어]

 

 

 

-줄 관련 명령어 

:set nu  -> 라인번호 출력하기 

:set nonu -> 라인번호 숨기기

:set nu를 사용한모습 

 

:커서이동할 라인번호

:2 를 이용해서 2번쨰 라인으로 이동한 모습 ( 라인번호를 안띄워도 사용가능 ) 

 

 

 

-실행모드 :    [    /  ,  ?  :  ] 들을 입력하고 작업하는 상태

 

:q     :   문서 나가기 

:w    :  문서 저장

:w [저장할경로/[저장할이름]      :  다른이름으로 저장 

-> 보통 문서작업을 마칠떄는 위 두 명령어를 같이사용한다. 

:wq      : 문서저장하고 나가기

 

!가 뒤에 붙으면 강제 실행의 의미 

-> ex) :q!   -> 저장이든 뭐든 그냥 종료하겠다. 

:enew    : 현재 열려있는 문서창을 닫고 새문서(빈문서) 열기 

 

 

 

-치환하기   :  찾아서 바꾸기 

s : 해당줄을 지정하겠다는 명령어   ex)  :10s   --> 10번쨰 라인을 지정하겠다.

1.해당줄에서의 치환

:[범위]s/[old]/[new]/[option]

아래예시 : (현재 커서위치 : 10번쨰 줄 )

-> 현재위치의 name을 linux로 바꾸겠다.

2. 직접지정한 출에서의 치환  

치환시킬 문자열이 있는 라인을 직접 지정해서 치환하는 방식.

10번쨰라인의 linux를 name으로 바꾸겠다.

3. 영역 지정하여 치환하기 

범위 구분시  , 사용

20~28번쨰 라인사이의 PASS를 linux로 바꾸겠다.

 

4. 전체 치환하기 

전체범위 지정시 % 사용

전체라인에서의 PASS 를 linux로 바꾸겠다.

 

+ 치환 작업시 , g 옵션을 사용하지 않으면 해당 라인에 조건에 맞는 문자열이 여러개일떄 첫번쨰 문자열만 치환한다. 

    치환작업시, g 옵션을 사용하면 조건에 맞는 모든 문자열을 치환시킬수있다

ex ) :%s/PASS/linux/g    ->  파일내부 전체에서 모든 PASS를 linux로 변경하겠다. 

 

 

 

+

.![명령어]   : vi editor 를 잠시 내려놓은 상태에서 명령 실행

..![명령어]  : 명령어 실행 결과를 현재 커서가 위차한 라인에 삽입 ( 원본 라인 사라짐에 주의 )

 

- vi editor에서 작업하다가 나가서 파일위치나 내용을 확인하고싶을떄는, 굳이 editor를 쓰지말고 

아래처럼 :!   이후, 명령어를 입력해서 에디터를 잠깐 내려놓고 작업을 한다. 이후 엔터로 결과를 확인하고 ,다시한번 엔터를 누르면 에디터로 다시돌아온다. 

vi editor작업중에, /var/spool/mail 
결과 확인후 엔터를누르면 다시 vi editor로 돌아간다고 알려준다. 

 

 

+알고만있자( 실사용시 헷갈려서 비추 ) 

ctrl + w + n    : 화면 수평 분할 

   ctrl  + ww   : 화면(문서)간 이동 

 

 

 

728x90