2023년 7월 20일 작성
Vim - Terminal에서 Text 편집하기
Vim은 terminal에서 text를 편집할 수 있는 CLI 기반의 text editor입니다.
Vim : 개선된 Vi
vi file_name.txt
vim file_name.txt
-
Linux의 대표적인 편집기인 vi와 호환되는 text 편집기입니다.
- terminal에서
vi
,vim
명령어로 편집기를 실행할 수 있습니다.- 최신 환경에서는 대부분
vi
를 입력해도 자동으로 Vim이 실행됩니다.
- 최신 환경에서는 대부분
- neovim(
nvim
)은 개선된 Vim입니다.
timeline
1976 : Vi 출시
1991 : Vim 출시
2015 : NeoVim 출시
Vim의 Mode
- 편집기를 실행했을 때의 최초 상태는 Command Mode입니다.
- 다른 mode로 변경하기 위해서는 반드시 Command Mode를 거쳐야 합니다.
Mode | 설명 |
---|---|
Command Mode | 명령을 수행합니다. 다른 mode에서 Command Mode로 되돌리고 싶다면 Escape key(esc )를 입력합니다. |
Command Line Mode | 화면 하단에 colon(: ) prompt에 명령 문장을 입력하거나, slash(/ ) prompt에 단어를 입력합니다. |
Insert Mode | 문서에 내용을 삽입합니다. |
Edit Mode | 문서의 내용을 수정합니다. |
Visual Mode | 문자열을 선택합니다. |
- 아래 사용법의 기준이 되는 상태는 Command Mode입니다.
저장하고 나가기
명령어 | 설명 |
---|---|
:w |
저장합니다. |
:q |
종료합니다. 내용이 수정되었다면 종료할 수 없습니다. 저장했거나 수정한 내용이 없다면 종료할 수 있습니다. |
:q! |
강제로 종료합니다. 내용이 수정되었더라도 저장하지 않고 바로 종료합니다. |
:wq |
저장 후 종료합니다. |
작성하기
명령어 | 설명 |
---|---|
i |
Insert Mode로 진입합니다. 문자의 앞에 삽입 cursor가 위치합니다. |
shift + i |
Insert Mode로 진입합니다. 현재 line의 맨 앞에 삽입 cursor가 위치합니다. |
a |
Insert Mode로 진입합니다. 문자의 뒤에 삽입 cursor가 위치합니다. |
shift + a |
Insert Mode로 진입합니다. 현재 line의 맨 뒤에 삽입 cursor가 위치합니다. |
o |
cursor의 아래에 새로운 line을 만들고, Insert Mode로 진입합니다. |
shift + o |
cursor의 위에 새로운 line을 만들고, Insert Mode로 진입합니다. |
s |
선택한 문자를 삭제하고, Insert Mode로 진입합니다. |
shift + s |
cursor가 위치한 line을 삭제하고, Insert Mode로 진입합니다. |
검색하기
명령어 | 설명 |
---|---|
/[keyword] |
문자열을 위에서 아래로 검색합니다. |
?[keyword] |
문자열을 아래에서 위로 검색합니다. |
n |
다음 검색 결과로 넘어갑니다. |
shift + n |
이전 검색 결과로 넘어갑니다. |
Cursor 이동시키기
∧
|
|
<-- h j k l -->
|
|
∨
- cursor를 이동시키는 방법은 기준에 따라 여러 가지가 있습니다.
Cursor를 상하좌우로 이동시키기
명령어 | 설명 |
---|---|
h or ← |
왼쪽으로 이동합니다. |
l or → |
오른쪽으로 이동합니다. |
k or ↑ |
위로 이동합니다. |
j or ↓ |
아래로 이동합니다. |
Cursor를 단어 기준으로 이동시키기
명령어 | 설명 |
---|---|
w |
다음 단어의 시작 지점으로 이동합니다. |
e |
다음 단어의 마지막 지점으로 이동합니다. |
b |
이전 단어의 시작 지점으로 이동합니다. |
Cursor를 현재 Line의 맨 앞과 맨 뒤로 이동시키기
명령어 | 설명 |
---|---|
0 |
line의 왼쪽 끝(맨 앞)으로 이동합니다. |
$ (shift + 4 ) |
line의 오른쪽 끝(맨 뒤)으로 이동합니다. |
Cursor를 현재 화면 기준으로 이동시키기
명령어 | 설명 |
---|---|
shift + h |
현재 화면의 상단으로 이동합니다. |
shift + m |
현재 화면의 중단으로 이동합니다. |
shift + l |
현재 화면의 하단으로 이동합니다. |
Cursor History 이전/이후 위치로 이동하기
명령어 | 설명 |
---|---|
control + o |
이전 cursor 위치로 이동합니다. |
control + i |
이후 cursor 위치로 이동합니다. |
화면 이동시키기
명령어 | 설명 |
---|---|
gg |
문서의 최상단으로 이동합니다. |
shift + g |
문서의 최하단으로 이동합니다. |
control + d |
아래(down)로 이동합니다. |
control + u |
위(up)로 이동합니다 |
control + e |
한 줄씩 아래로 이동합니다. cursor의 위치는 유지합니다. |
control + y |
한 줄씩 위로 이동합니다. cursor의 위치는 유지합니다. |
zz |
cursor의 위치가 화면 중단에 오도록 화면을 이동합니다. cursor의 위치는 유지됩니다. |
설정하기
명령어 | 설명 |
---|---|
:set hlsearch |
검색한 문자열을 강조합니다. |
:set nu |
line number를 표시합니다. |
:set expandtab |
tab을 공백으로 바꿉니다. |
:set tabstop=4 |
tab 너비를 4칸으로 설정합니다. |
:set shiftwidth=4 |
>> 또는 << 로 들여쓸 때, 공백의 갯수를 4로 설정합니다. 기본 값은 8입니다. |
:set autoindent |
자동으로 들여쓰기합니다. 줄을 바꿀 때, 바로 아래로 cursor를 떨어뜨립니다. |
:set smartindent |
자동으로 들여쓰기합니다. 줄을 바꿀 때, tabstop만큼 자동으로 더 띄어서 cursor를 위치시킵니다. |
:set encoding=utf-8 |
encoding 방식을 utf-8로 설정합니다. |
:set formatoptions-=r |
자동 주석 작성 기능을 비활성화 합니다. // 또는 /* 등의 주석 아래로 줄바꿈할 때, 주석 기호가 자동으로 붙지 않게 합니다. |
:syntax on |
문법 강조 색상을 적용합니다. |