8. vi editor
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 라인 번호 비활성화
:[라인번호] 지정한 라인으로 이동
=> 실행모드: /, ?, : 중 하나를 누르고 작업하는 상태