1976년 BSD의 Bill Joy 개발
Debian계열
sudo apt -y install vim
파일명 열면서 시작
vim <파일명>
파일명 "-"일 경우 -stdin을 의미
find . -name "*.txt" | vim -
a, i, o | : | ||
|---|---|---|---|
| normal mode | insert mode | command-line mode | visual mode |
H | J | K | L |
앞에 숫자 붙이면 해당 숫자만큼 칸 수 이동
^ 행 맨 앞으로 이동
$ 행 맨 끝으로 이동(caret이라 읽음)
CTRL+B | CTRL+U | CTRL+F | CTRL+D |
|---|---|---|---|
| 위로 한 화면 스크롤 | 위로 반 화면 스크롤 | 아래로 한 화면 스크롤 | 아래로 반 화면 스크롤 |
N+g+g | N+G | :N |
|---|---|---|
| N행으로 이동(default 1행) | N행으로 이동(default 마지막행) | N행으로 이동 |
CTRL+G : 현재 문서 위치 정보
x | d+d | D | J |
|---|---|---|---|
| 커서에 위치한 문자 삭제 | 현재 행 삭제 | 현재 위치에서 현재 행 끝까지 삭제 | 아래 행을 현재 형 끝에 붙여넣기 |
3+d+d : 행 3줄 삭제
p : 현재행에 붙여넣기
5+p : 5번 반복 붙여넣기
y : 현재 행을 레지스터에 복사(yank)
u | CTRL+R |
|---|---|
| undo | redo |
. 이전 명령어 반복
| 명령어 | 설명 |
|---|---|
| :20d | 20번 반복 행 삭제 |
| :10,25d | 10~25행 삭제 |
| :10,$d | 10~마지막 행 삭제 |
| :%y | 문서전체 복사 |
| :.,+20y | 현재 행~아래로 20행 복사 |
| :-10,+5d | 현재 행 위로 10행 아래로 5행 삭제 |
| :40pu | 40번 행에 내용 붙여넣기 |
. 현재 행
$ 마지막 행
% 전체 행
마우스 드레그 기능 대신함
v | V | CTRL+v | g+v | o |
|---|---|---|---|---|
| 현재 커서 위치에서 블록 지정 | 행 단위로 블록 지정 | 열 단위로 블록 지정 | 이전 영역 불러오기 | 블록 끝에서 끝으로 |
CTRL+V 열 단위 블록 지정
I 0000
ESC
vi 호환의 vim
compact vim 혹은 tiny tim이라고 부름
일반적인 vim
enhanced vim이라고 부름
가장 많은 기능을 가진 vim
vim+clipboard, X window clipboard 기능 포함
| 기능 | RedHat | Debian |
|---|---|---|
| vi | vim-minimal | vim-tiny |
| vim | vim-enhanced | vim-nox |
| vimx | vim-X11 | vim-gnome |
Debian 계열
sudo apt-get install gnome
clipboard 기능 포함 여부 확인
clipboard, xterm_clipboard 기능 빠진 채 빌드됨
:help cindent
녹색 부분으로 커서 이동 후 CTRL+] : 해당 내용으로 이동
CTRL+T : 이전으로 복귀
CTRL+W+W : 화면 2개 생성 후 이동
O 읽기 전용 또는 Q 중지
R 복구 후 D swap 파일 삭제
center | right | left |
|---|---|---|
| 가운데정렬 | 오른쪽정렬 | 왼쪽정렬 |
CTRL+V 아래로 스크롤
:center
한 행만 적용
f c 문자 c를 전방 검색
F c 문자 c를 후방 검색
; 다음 검색
, 뒤로 검색
전체 적용
/string string을 전방 검색
?string string을 후방 검색
n 다음 검색
N 뒤로 검색
* 현재 커서 위치 단어 전방 탐색
# 현재 커서 위치 단어 후방 탐색
% 검색 단어에 괄호가 있는 경우 짝을 찾아줌
:set hls 하이라이트 활성화
:set nohl 하이라이트 비활성화
\c 대소문자 상관없는 옵션
/\cinter 대소문자 상관없이 inter 검색
/[a-g]re are bre cre dre ere fre gre 검색
\M magic 해석 금지
/\M[section] [section] 검색
:[range]s/<찾는 문자열>/<교체할 문자열>/<옵션>
| 옵션 | 설명 |
|---|---|
| g | 검색된 문자열 모두 교체 |
| i | 대소문자 무시 |
| c | 교체할때마다 확인 |
| e | 에러 무시 |
찾을 문자열에 /가 많은 경우
%s/\/home\/linuxer/\/home\/unixer/g
:%s,/home/linuxer,/home/unixer,g
:set ff=dos
:set ff=unix
buffer : 파일 편집을 위한 임시 공간
register : 텍스트 일부를 저장하고 있는 임시 공간
vim에서 다른 파일을 편집하려고 할 때
:e filename filename을 편집모드로 오픈
:e #N N번째 파일을 오픈
CTRL+6 다른 오픈된 파일로 이동
:q 종료
:q! 저장하지 않고 종료
:qa 모든 창 종료
:qa! 모든 창 저장하지 않고 종료
:w filename 저장(filename 생략 시 현재 파일)
:sav file 현재 파일을 다른 이름으로 저장 후 그 파일로 이동
:wq, :x, Z+Z 저장 종료
:wqa 모든 창 저장 종료
vim으로 디렉터리 열기(browsing)
:e .
| 명령어 | 설명 |
|---|---|
enter | 파일 열기 |
i | 파일 표시 방법 변경 |
s | 정렬 방식 변경 |
o | 수평 분할 새 창 |
v | 수직 분할 새 창 |
p | 파일 미리보기 창 |
t | 새로운 탭으로 분할 |
- | 상위 디렉터리 |
CTRL+W+S
:sp file
CTRL+W+V
:vs file
vim -O clientlist.txt manpage.txt
CTRL+W
CTRL+W+방향키
vim -d file1 file2
do get
dp put
vim -p file1 file2
gt 다음 탭
:files vim buffer
| 기호 | 의미 |
|---|---|
| '%' | 현재 편집 중인 버퍼 |
| '#' | 바로 이전 버퍼 |
| 'a' | 활성된 버퍼 |
| '+' | 변경된 버퍼 |
G+F 해당 파일로 이동
CTRL+O, CTRL+6 이전 파일로 돌아가기
CTRL+O+F 분할된 창에 오픈
CTRL+O+G+F 탭에 오픈
:set fenc:korea 변경 후
~/.vimrc 설정 후 multi-bytes 기반 인코딩 파일 읽기 가능
set fencs=ucs-bom,utf-8,korea,latin-1
BOM확인 후 UTF-8, korea, ASCII
BOM(Byte Order Mark)
UCS(Universal coded Character Set)의 판별 마크
:set ff=dos:set fenc=korea:wq :sav new_file.txt 추천:set ff=unix:set fenc=utf8:wqw e 단어 경계 이동
% 괄호 짝 이동
( ) 문장 단위 시작 위치, 끝 위치
{ } 문단 단위 시작 위치, 끝 위치
[[ ]] 블록 단위 시작 위치, 끝 위치
~/.vimrc에 해당 내용 추가 시 편리하게 이용가능
ia는 i모드에서만 작동
ca는 c모드에서만 작동
ab <축약어> <변경할 내용>
ia time <C-R>=strftime("%Y.%m.%d-%H:%M:%S")
ca ㅈ w
ca ㅂ q
특정 상황에서 자동 실행할 명령
스왑 파일 존재 시 자동으로 O 선택
autocmd SwapExists * let v:swapchoice = 'o'
=
활용
gg+=+G 전체 문서 indent
:set et ts=4 기존 작성된 탭 문자를 공백 4칸으로
:ret 되돌리기
:set noet ts=4
:ret!
CTRL+N 자동 단어 완성 기능
CTRL+X && CTRL+F 자동 파일명 완성 기능
자동 .vimrc 만들어 주는 곳
https://vim-bootstrap.com/