
Unix 및 Linux 시스템에서 사용되는 텍스트 에디터로, "Visual Editor"의 약어
vi는 명령 모드(command mode), 편집 모드(insert mode), 마지막 행 모드(last line mode)로 구성
$ vi:q:q!ESC를 입력한 후 종료 명령어 입력예시를 통해 설명
$ rm -f foo.txt // foo.txt라는 파일을 "-f"옵션을 사용해서 강제로 삭제
$ vi foo.txt // "vi" 명령어를 통해 foo.txt 파일의 편집 모드로 입장
입력 후
~
~
~
~
~
~
~
~
~
~
~
"foo.txt" [New File]
"foo.txt" 파일의 편집 모드로 입장
여기서 보면 "~"은 해당 line에 아무 문자가 존재하지 않는다는 것을 의미
i 누르기하단에 -- INSERT -- 가 보인다면 정상적으로 시작
여기서, i 는 insert 를 의미하며 자유롭게 텍스트 입력 가능
ESC 누르기편집 모드 종료(ESC 누른 상태) 후, 입력한 내용을 저장
:w + Entervi에서 커서를 조작하는 방법
오른쪽 문자로 이동
l or ▶ (오른쪽 방향키)
왼쪽 문자로 이동
h or ◀ (왼쪽 방향키)
아래쪽 문자로 이동
j or ▼ (아래쪽 방향키)
위쪽 문자로 이동
k or ▲ (위쪽 방향키)
현재 라인의 시작으로 이동
0
현재 라인에서 가장 왼쪽에 위치한 공백이 아닌 문자로 이동
^
현재 라인의 끝으로 이동
$
다음 단어나 구두점 문자의 시작 부분으로 이동
w
다음 단어의 시작 부분으로 이동 (구두점 문자는 무시)
W
이전 단어나 구두점 문자의 시작 부분으로 이동
b
이전 단어의 시작 부분으로 이동 (구두점 문자는 무시)
B
한 페이지 아래로 이동
ctrl-f or Page Down
한 페이지 위로 이동
ctrl-b or Page Up
지정한 라인 번호로 이동 (ex. "1G"는 파일의 첫 번째 줄로 이동)
numberG
파일의 마지막 줄로 이동
G
ESC + u현재 위치 문자 바로 뒤 append insert
ESC + a
현재 라인 가장 끝 위치로 이동
ESC + A
현재 라인 바로 아래 빈 라인 생성 후 이동
ESC + o
현재 라인 바로 위 빈 라인 생성 후 이동
ESC + O
삭제 (Delete)
커서가 위치한 문자 하나
dx
커서가 위치한 문자와 그 뒤의 두 개의 문자
d3x
커서가 위치한 행 전체
dd
커서가 위치한 행부터 그 다음 네 줄까지
5dd
현재 커서 위치에서 바로 다음 단어의 첫 글자까지
dw
현재 커서 위치부터 현재 행의 끝까지
d$
현재 커서 위치부터 현재 행의 첫 번째 글자까지
d0
현재 커서 위치부터 현재 행에서 첫 번째 공백 문자 이외의 문자가 나타나는 위치까지
d^
현재 행부터 파일의 끝까지
dG
현재 행부터 파일의 20번째 줄까지
d20G
복사 (Copy)
현재 행 전체
yy
현재 커서 위치부터 아래로 5줄까지
5yy
현재 커서 위치부터 다음 단어의 시작까지
yW
현재 커서 위치부터 해당 줄의 끝까지
y$
현재 커서 위치부터 해당 줄의 처음까지
y0
현재 커서 위치부터 해당 줄의 첫 번째 비공백 문자까지
y^
현재 행부터 파일의 끝까지
yG
현재 행부터 파일의 20번째 줄까지
y20G
붙여넣기 (Paste)
pJ지정된 문자의 다음 인스턴스를 검색하고 커서를 해당 위치로 이동
ESC + f + 지정 문자
ex) fa // 지정 문자: a or ft // 지정 문자: t
지정된 문자의 이전 인스턴스를 검색하고 커서를 해당 위치로 이동
ESC + F + 지정 문자
ESC + / + 단어 or 구 + Enterex 명령어를 사용하여 범위 내의 여러 줄 또는 전체 파일에서 검색 및 대체 작업
ESC + :%s/pattern/replace/flags
%
substitution 대상이 되는 범위를 지정, %는 파일 전체를 의미
s
substitution 명령임을 나타냄
pattern
찾을 패턴이나 문자열을 지정
replace
대체할 문자열을 지정
flags
대소문자 구분 여부나 전체 대체 여부 등을 지정
!!!중요!!! /g를 쓰느냐 안쓰느냐 차이..?
예시를 통해 설명
vi file1 file2 file3... // 편집하고 싶은 여러 파일을 차례로 입력
이를 통해 여러 파일을 한번에 수정 가능
ESC + :bnESC + :bp:e filename:wnext파일 저장 여러가지 방법
현재 파일 저장 후, vi 종료
ESC + ZZ
ESC + :wq
선택적 파일 이름 지정
:w filename
혹시 이해가 안되는 부분이 있으시거나, 잘못된 부분 있다면 댓글로 남겨주시면 감사하겠습니다 :)