vi(visual editor) 편집기의 시작
ex(Extened editor)를 개선하여, 1976년에 BSD 유닉스용으로 개발
마우스가 없는 시대에 키보드 만으로 모든 제어 가능 기능
가벼우면서도 많은 기능 내장
vim은 따로 설치를 해줘야 하며 암호는 ubunbu 자체 암호를 입력해서 다운로드를 한다.
vi(vim)의 3가지 동작 모드
- vim은 다른 에디터와 달리 명령 모드와 입력 모드가 분리됨
□ 명령 모드
vim을 실행할 경우, 처음 시작하는 모드
키 입력을 통해 vim에게 명령을 내리는 모드 (편집 불가)
H, K, J, L을 이용하여 이동 가능
□ 입력 모드
실제로 화면에 출력되면서 글자 입력이 가능
□ ex 모드
라인 에디터인 ex 에디터의 기능을 사용하는 모드
특정 패턴을 특정 문자열로 대체하는 것과 같은 일괄 처리에 유용(vim을 강력하게 하는 많은 기능 내장)
명령모드에서 i를 눌러서 insert 모드에 들어가 텍스트를 입력하고
입력이 끝났으면 ESC를 눌러서 다시 명령 모드로 복귀
:wq! 를 이용해 강제 저장 후 빠져 나간다
# 관리자 root개발자
$ 일반 사용자
각 모드별 주요 명령어
□ 명령 모드
<이동>
h : 왼쪽 이동
l : 오른쪽이동
k : 위로이동
j : 아래 이동
^ : 그 행의 첫 글자로 이동 / $ : 그 행의 마지막 글자로 이동
[n]G : n 행으로 이동
ctrl + u : 반 화면 위로 스크롤 / ctrl + d : 반 화면 아래로 스크롤
ctrl + b : 한 화면 위로 스크롤 / ctrl + f : 한 화면 아래로 스크롤
* vi에서 line number를 붙이는 방법 => :set number ( : se nu ) / 제거 방법 => :set nu!
<삭제>
x : 커서 위치의 한 글자 삭제
dw : 커서 위치의 한 단어 삭제
D : 커서 위치부터 행의 끝까지 삭제
dd : 커서가 있는 행을 삭제
[n]x : 현재의 커서에서 n개의 글자 삭제
[n]dd : n개의 행을 삭제
<복사 & 붙이기>
yy : 커서 위치의 한 행을 복사
yw : 현재 커서 위치의 한 단어를 복사
p : 현재 커서 위치에 붙여넣기
dd : 커서 위치의 한 행을 삭제
dw : 현재 커서 위치의 한 단어를 삭제
v : 현재 커서에서 부터 방향키로 블록 생성 / ctrl + v : 직사각형 형태의 블록 지정
y : 선택한 블록을 복사
d : 선택한 블록을 삭제
<되돌리기>
u : 이전 실행 기능을 원래대로 되돌리기
ctrl + r : 이전 삭제 내용을 되살리기
* 명령 모드에서 shell 명령어 사용
:![shell 명령어] / ex) :!ls -a
□ 입력 모드
a : 커서위치 다음 칸부터 입력 / A : 커서 행의 맨 마지막부터 입력
i : 커서위치에 입력(삽입) / I : 커서 행의 맨 앞 위치에서 입력
o : 커서의 다음 행에 입력 / O : 커서의 이전 행에 입력
s : 커서 위치의 한 글자를 지우고 입력(한 글자를 지움 + i 모드) / cc : 커서 위치의 한 행을 지우고 입력
r : 현재 커서의 글자를 뒤에 입력하는 글자로 대체replace - 글자(ESC 필요 X)
R : 현재 커서부터 뒤에 입력하는 글자로 대체replace - 문장(ESC)
□ ex 모드
:w 저장
:w file.txt file.txt 파일로 저장
:w >> file.txt file.txt 파일에 추가해 저장
:q vi 종료(저장하지 않고 종료)
ZZ 저장 후 종료(shift + z)
:wq! 강제 저장 후 종료
:e file.txt file.txt를 불러옴
/ : 문자열 탐색( / [찾고자 하는 문자열] 또는 ?[찾고자 하는 문자열] )
=> n은 다음에 매칭되는 문자열, N은 이전에 매칭된 문자열
<문자열 치환>
:[범위]s/[매칭 문자열]/[치환 문자열]/[행 범위]
ex) :s/old/new => 현재 행의 처음 old를 new로 교체
ex) :%s/old/new/g => % : 문서 전체, 문서 전체에 있는 old를 new로 대체, g : 행 전체에 걸쳐 치환
ex) :s/old/new/g => 현재 행의 매칭되는 모든 문자열 치환
ex) :2,4s/old/new/g => 2~4행 사이에 매칭되는 문자열만 치환
ex) :%s/old/new/gc => 문서 전체에 있는 old 문자열을 확인 하면서 new로 대체
ex) :-3,+4s/old/new/g => 현재 커서 위치에서 3행 위부터 4행 아래 까지의 모든 old를 new로 교체
'수업정리 > Linux' 카테고리의 다른 글
Docker의 설치 방법과 기본 command (0) | 2020.09.15 |
---|---|
Docker 시스템 이해 (0) | 2020.09.15 |
GNU Nano Editor의 기본 사용법 (2) | 2020.09.15 |
기본 리눅스 명령(Part 1) (0) | 2020.09.10 |
UNIX와 리눅스 소개(+ 컴퓨터 공학도가 알아야 할 인물) (0) | 2020.09.07 |