Byeo

1. Vim 기초 본문

프로그래밍 (Programming)/Vim

1. Vim 기초

BKlee 2021. 7. 2. 00:31
반응형

1. Vim 기초

Vim은 Vi IMproved의 약자로, 익히기 어려운 기존의 vi를 개선하기 위해 Bram Moolenaar가 개발한 text editor입니다. Vim은 마우스를 일절 사용하지 않고도 text를 편집할 수 있도록 다양한 모드와 단축키가 내장되어 있습니다.

기존의 text 편집 툴, window-based 개발환경에 익숙해져 있다면 vim의 필요성을 느끼지 못할 수 있습니다. 그러나 마우스를 사용할 수 없는 CLI (Command Line Interface) 환경에서는 가볍고 최고의 editor로 여겨지고 있어서 한 번 다뤄보고자 합니다.

 


해당 글은 [포스트]를 따라 연습하며 정리한 글입니다.

 


Vim Installation

Vim은 다음과 같은 명령어로 설치할 수 있습니다.

sudo apt install vim

실행은 다음과 같이 할 수 있습니다.

vim test.txt

vim을 연습해 보기 위해서 다음 명령어를 실행해 보세요.

vimtutor

Vimtutor

그러면 위와 같은 화면을 보실 수 있을 겁니다. 여기서 자유롭게 편집 연습을 해볼 수 있어요. Lesson을 따라가며 익히면 수월합니다. Lesson은 7까지 있고, 기초 숙련도와 목표치에 따라 다르겠지만 대략 최소 30분 정도 소요됩니다.


Vim 단축키

이 아래부터는 빈번하게 사용하는 vim의 단축키들을 정리해 놓았습니다. vimtutor를 따라가면서 연습해 보면 익숙해질 수 있을 것입니다.

출처:  www.viemu.com

파일 저장 기초

:w  :현재까지 편집 내용을 저장
:q  :편집 내용을 저장하지 않음

단어 단위 이동 명령어

←, →, ↑, ↓: 각각의 방향으로 커서 이동
h, l, k, j: 각각 ←, →, ↑, ↓ 방향으로 커서 이동

0: 줄의 처음으로 이동
^: 문장의 맨 처음으로 이동
$: 문장의 맨 끝으로 이동
w: 다음 단어로 이동
2w: 두 단어 뒤의 첫 글자로 이동
3e: 세 단어 두의 마지막 글자로 이동 (현재가 단어의 마지막 글자가 아니라면 현재 단어 포함)
b: 이전 단어로 이동
4b: 네 단어 이전으로 이동

문서 내 이동 명령어

ctrl + g: 현재 위치 출력
gg: 문서 처음으로 이동
G: 문서 마지막으로 이동
500gg: 500번째 줄로 이동
{: 문단 시작으로 이동
}: 문단 끝으로 이동
ctrl + f: 현재 화면 기준 다음 페이지의 첫 줄로 커서 이동 
ctrl + b: 현재 화면 기준 이전 페이지의 마지막 줄로 커서 이동
ctrl + d: 현재 화면 기준 절반 페이지만큼 아래로 커서 이동
ctrl + u: 현재 화면 기준 절반 페이지만큼 위로 커서 이동
shift + h: 현재 화면 기준 페이지 맨 위로 커서 이동
shift + m: 현재 화면 기준 페이지 중간 위치로 커서 이동
shift + l: 현재 화면 기준 페이지 맨 아래로 커서 이동 

편집 명령어

## 입력모드 전환 ##
i: 커서의 현재 위치부터 편집 시작
I: 커서의 현재 줄의 문장 처음으로 이동하여 편집 시작
a: 커서의 다음 위치부터 편집 시작
A: 커서의 현재 줄에서 끝으로 이동하여 편집 시작
o: 커서의 다음 줄에 새로운 줄을 만들어 편집 시작
O: 커서의 윗 줄에 새로운 줄을 만들어 편집 시작
s: 커서 위치의 한 글자를 제거한 뒤 편집 시작
S: 커서 위치의 한 줄을 삭제 후 편집 시작
##

~: 대소문자 변환
u: 실행 취소 (Undo)
ctrl + R: 복구 (Redo)

p: 커서의 다음 줄에 붙여 넣기 (줄 단위 복사가 아니라면 커서의 다음 위치)
P: 커서의 이전 줄에 붙여 넣기 (줄 단위 복사가 아니라면 커서의 이전 위치)
3p: 붙여 넣기를 세 번 반복

r: 글자 교체 (ra: 현재 커서 위치의 글자를 a로 교체)
4rx: 현재 커서로부터 4개의 단어를 x로 교체
R: 수정 모드 (일반 문서에서 Insert 키를 누른 것과 동일)

<<: 내어쓰기
>>: 들여쓰기
J: 현재 문장의 개행 제거, 아래 줄과 합치기

ctrl + a: 현재 커서의 단어가 숫자라면 1 증가
ctrl + x: 현재 커서의 단어가 숫자라면 1 감소

제거/복사 명령어

모든 제거 명령어는 클립보드에 보관된다. x로 1 글자를 지웠을 경우 p로 다시 복구 가능

x: 커서 위치의 글자 하나 제거
X: 커서 위치의 이전 글자 하나 제거

dl: 현재 커서 한 글자 제거
de: 현재 커서부터 현재 단어 마지막까지 제거
dw: 현재 커서부터 다음 단어 시작 전까지 제거
d$: 현재 커서부터 줄 마지막까지 제거

d2e: de를 두 번 수행
d3w: dw를 세 번 수행

dd: 줄 전체 제거
2dd: 두 줄 제거

d + ←: 현재 커서의 이전 한 글자 제거
d + →: 현재 커서 제거 (x와 동일)
d + ↑: 현재 줄과 이전 줄 함께 제거
d + ↓: 현재 줄과 다음 줄 함께 제거

위 명령어에서 d를 y로 변경 시, 동일한 범위를 제거 대신 복사한다.

ce: 현재 커서부터 현재 단어 마지막까지 제거 후 편집 가능 (입력모드로 전환)
c4e: 현재 커서부터 4개의 단어를 제거 후 편집 가능 (입력모드로 전환)
c$: 현재 커서부터 줄 마지막까지 제거 후 편집 가능 (입력모드로 전환)

검색 명령어

/단어: 아래 방향으로 단어 검색 (e.g., /banana)
?단어: 위 방향으로 단어 검색 (e.g., ?banana)
n: 정방향으로 계속 검색
N: 역방향으로 계속 검색
ctrl + o: 직전에 검색 되었던 위치로 커서 이동
ctrl + i: ctrl + o로 이동했던 커서를 다시 복구
% on (,{,[,],},): 매칭하는 괄호로 커서 이동 (괄호 디버깅에 유용)

찾아 바꾸기 명령어

:s/old/new :old 단어를 new 단어로 변경 (매 줄마다 첫 단어만 바꿈)
:s/old/new/g :old 단어를 new 단어로 변경 (모든 단어를 찾아 바꿈, globally)
:s/old/new/gc :old 단어를 new 단어로 일일이 체크하면서 변경 (globally, check)

쉘 명령어 실행

:!ls  : vim을 잠시 빠져 나가서 ls 실행결과를 보여줌 (:로 시작하는 커맨드는 반드시 엔터로 끝나야 함)
:w TEST    : 현재 파일을 TEST라는 파일 명으로 저장
:!rm TEST  : TEST라는 파일을 제거
:r TEST    : TEST라는 파일을 붙여 넣음
:r !ls     : ls 실행 명령 결과를 붙여넣음

비주얼 모드

v: 비주얼 모드로 변경 -> 커서 이동을 통해 블럭 지정 (drag and drop)
shift + v: 커서가 위치한 줄을 블럭 지정

다양한 set command들

:set ic   : 대소문자 구분 없이 찾기
:set noic : 대소문자 구분 하면서 찾기
:set hlsearch : 검색 문자 하이라이트
:set nohlsearch : 하이라이트 끄기
:set is

:help w   : w와 관련된 명령어 도움말
반응형

'프로그래밍 (Programming) > Vim' 카테고리의 다른 글

6. Vimrc-5 (Space & Tab)  (0) 2021.07.27
5. Vimrc-4 (편집 위치 불러오기)  (0) 2021.07.15
4. Vimrc-3 (Folding)  (0) 2021.07.12
3. Vimrc-2 (UI)  (0) 2021.07.09
2. Vimrc-1 (테마)  (0) 2021.07.08
Comments