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
:wq
w
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/