OS/Linux 기초

8. vi editor

yeommm 2019. 8. 25. 21:24

 

vi editor는 리눅스에서 사용하는 문서 편집기로 명령모드, 입력모드, 실행모드로 구성된다.

vi editor를 처음 열었을 때는 명령모드로 실행된다.

(1) 이동

h(좌), j(하), k(상), l(우) : 기본 이동

w : 다음 단어의 처음으로 이동

b : 이전 단어의 처음으로 이동

e : 다음 단어의 끝으로 이동

 

0 : 행의 처음으로 이동

$ : 행의 마지막으로 이동

 

*현재 화면을 기준으로

H : 맨 위로 이동

M : 중간으로 이동

L : 마지막으로 이동

 

*문서 전체를 기준으로

gg : 문서의 처음으로 이동

G : 문서의 마지막으로 이동

 

*마크 이동 //책갈피

설정: m + [문자] //대, 소문자 구분

이동: ' + [문자]

->문서가 열려있을 때만 기능을 유지하며 문서가 닫히면 초기화 된다.

 

 

(2) 입력

*입력을 시작하는 위치에 따른 구분

i : 현재 커서 위치부터 입력

a : 한 칸 우측으로 이동 후 입력

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

대문자 O : 현재 커서가 위치한 라인 위로 빈 라인 삽입 후 입력

 

=> 입력모드: i, a, o, O 키 중 하나를 누른 상태

=> 입력모드를 빠져나오려면 esc 키를 누르면 된다.(명령모드)

 

 

(3) 삭제

소문자 x : 현재 커서 위치부터 삭제 //윈도우의 delete

소문자 X : 현재 커서 위치 앞부터 삭제 //윈도우의 backspace

dd : 현재 커서가 위치한 라인 삭제 //라인 삭제

[숫자] + dd : 현재 커서가 위치한 라인부터 지정한 수만큼 라인 삭제 //블록 삭제

 

 

(4) 복사&붙여넣기

yy : 현재 커서가 위치한 라인 복사 //라인 복사

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

소문자 p : 현재 커서가 위치한 라인 이후에 붙여넣기 //아래로 붙여넣기

대문자 P : 현재 커서가 위치한 라인 이전에 붙여넣기 //위로 붙여넣기

 

 

(5) 검색

/[패턴] -> n: 정방향, N: 역방향 

?[패턴] -> n: 역방향, N: 정방향

 

 

(6) 치환

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

1. 해당 행 치환 : 치환시킬 문자열이 있는 라인으로 이동 후(수동 이동) 치환

    ex) :s/name/linux

2. 지정 행 치환 : 치환시킬 문자열이 있는 라인을 지정해서 치환

    ex) :10s/linux/name

3. 영역 지정 행 치환 : 범위 구분 시 사용

    ex) :20,28s/PASS/linux

4. 전체 치환 : %로 전체 범위 지정

    ex) :%s/PASS/linux/g

     -> g 옵션을 사용하면 조건에 맞는 모든 문자열 치환

     -> g 옵션을 사용하지 않으면 라인 조건에 맞는 문자열이 여러 개일 때 첫 번째 문자열만 치환

 

 

(7) 기타

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

:.! [명령어] -> 현재 커서가 위치한 라인에 결과 삽입 //원본 라인 사라짐 주의

 

ctrl + w + n : 화면 수평 분할 모드, 동시에 여러 개의 작업 수행 //권장x

ctrl + ww : 문서 간 이동

 

:q -> 나가기

:w -> 저장하기

:w [경로] [파일명] -> 다른 이름으로 저장

:wq -> 저장 후 나가기

:q! -> 문서 저장 없이 강제 종료

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

 

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

 

:e -> 불러오기(열기)

:f -> 문서 정보 확인

 

:r [파일명] -> 파일 내용 삽입

:r! [명령어] -> 현재 커서가 위치한 라인 밑으로 결과 삽입

:[숫자]r! [명령어] -> 지정한 라인 밑으로 결과 삽입

 

:set nu 라인 번호 활성화

:set nonu 라인 번호 비활성화

:[라인번호] 지정한 라인으로 이동

 

=> 실행모드: /, ?, : 중 하나를 누르고 작업하는 상태