본문 바로가기
행위 돌아보기

[북리뷰] 손에 잡히는 VIM

by simplify-len 2019. 7. 18.

항상 과거를 돌아보라. 그러면 뭔가 배울 수 있을 것이다;. - 폴 새뮤얼슨

살펴볼 기능 명령어
파일 저장하기 :w
종료하기 :q
커서 이동 hjkl
복사 yy
붙이기 p
명령어 취소 u
범위 지정 v
   

다른 이름으로 저장하기

handlingvim.txt를 다를 이름으로 저장하기

:w hendlingvim2.txt 이렇게 하면 다른 이름으로 저장되고 디렉토리 까지 설정할 수 있음

일반 모드, 입력 모드, 명령행 모드

모드가 필요한 이유?

입력 모드와 일반 모드를 따로 둔 이유는, VIm을 개발할 당시에는 기능을 호출하는 데 메뉴 인터페이스를 사용할 수 없었기 때문에

명령어 설명
a,A a(append)는 현재 커서 위치에서 한 칸 뒤로 이동한 후 입력 모드로 전환됩니다.
A는 현재 끝으로 이동한 후, 입력 모드로 전환됩니다.
i, I i는 현재 커서 위치에서 입력모드로 전환됩니다.
I는 현재 행의 맨앞으로 이동 후, 입력 모드로 전환됩니다.
o, O o(open line)는 현재 행 아래에 새로운 행을 하나 만든 후 입력 모드로 전환됩니다.
O는 현재 행 위에 새로운 행을 하나 만든 후 입력 모드로 전환됩니다.
R 수정(replace) 모드로 작동하므로 모든 글자는 덧쓰여집니다.

입력모드로 전환하는 키를 모두 기억하면 좋겠지만, 당장은 가장 많이 쓰이는 ior 정도만 알아두어도 좋다. 나머지는 Vim을 사용하면서 자연스럽게 익숙해지면 됩니다. 억지로 외워봤자 금새 잊어버리기 때문에, 부록으로 제공되는 키맵과 명령어 목록을 잘보이는 곳에 붙여두고 반복적으로 사용하도록 노력한다.

강제로 명령하기

명령행 모드에서 느낌표(!)를 입력하여 어떤 명령을 강제로 실행하는 기능.

이 기능은 주로 파일을 저장하지 않고 Vim을 끝내거나, 기존에 존재하는 파일에 덮어쓰는 경우에 사용됨

강제 종료하기

! 을 붙여서 변경된 내용을 저장하지 않고 종료

상하좌우이동

HJKL

더 많이 이동하려면?

[#]h

[#]j

[#]k

[#]l

#이 그냥 숫자 입력하고 명령어 키 누르면 그 만큼 이동.

문서의 특정 위치로 이동

명령어 설명
[#]gg # 행으로 이동합니다. #이 생략되면 1을 의미
[#]G # 행으로 이동합니다. #이 생략되면 마지막 행을 의미합니다.
:# # 행으로 이동합니다.

마지막으로 명령행 모드에서 특정 행으로 이동하는 방법인 ':행번호' 명령이 있습니다. 개인적으로는 오타를 방지하기 위해 특정 행으로 이동할 때는 명령행 모드에서 입력하는 방법을 추천

삭제, 복사, 붙이기, 취소하기

명령어 설명
x 커서에 위치한 문자 삭제Delete:
dd 현재 행을 삭제
:d 현재 행을 삭제
D 현재 컬럼 위치에서 현재 행의 끝부분까지 삭제(d$와 동일)
J 아래 행을 현재 끝에 붙임(아래 행의 앞부분 공백은 제거됨)

붙여넣기

명령어 설명
p 현재 행에 붙여 넣습니다. 개행 문자가 포함된 경우에는 현재 행의 아래에 붙여넣습니다.
:pu  
P 현재 행의 위쪽에 붙입니다.

복사하기

명령어 설명
yy 현재 행의 레지스터에 복사(yank)합니다.
:y  
Y  

작업 취소하기

명령어 설명
u undo 기능입니다. 바로 이전에 행한 명령 하나를 취소합니다.
CTRL-R redo 기능입니다. 바로 이전에 취소했던 명령을 다시 실행합니다.
Tip)
이전 명령어 실행하기 -> 마침표(.)

바로 이전에 행한 동작을 다시 반복해 줍니다. 여기서 바로 이전에 행한 동작이란 입력 모드에서는 <ESC>를 누르기 전까지의 행동이며 일반모드라면 바로 전에 내린 명령어 키입니다.

범위

범위 지정하기

명령어 설명
:20d 20번 행을 삭제합니다.
:10, 25d 10~25번행을 삭제합니다.
:10, $d 10~마지막 행까지 삭제합니다.
:%y 문서 전체를 복사합니다. %는 1,$와 동일합니다.
: . , +20y 현재 행부터 아래로 20 행을 복사합니다.
:-10, +5d 현재 행부터 위로 10행, 아래로 5행, 총 열여섯 행을 삭제합니다.
:40pu 40번 행에 레지스터의 내용을 붙여넣습니다.
   

범위 지정에 쓰이는 특수 기호(메타 문자)

명령어 설명
. 현재 행을 의미합니다.
$ 마지막 행을 의미
+# 현재 위치에서 #만큼 아래 행을 의미합니다.
-# 현재 위치에사ㅓ #만큼 위 행을 의미
% 문서(파일) 전체를 의미합니다.

비주얼 모드

비주얼 모드를 위해서는 오직 V만 기억해주세요 :smile:

플러스, CTR + V를 누르면 비주얼 블록 모드가 수행됩니다!!!

문자열 수정

살펴볼 기능 명령어
문자열 정렬 :center, : right
문자 검색 fc
문자열 검색 /문자열
단어 즉시 검색 * 혹은 ?
문자열 교체 :[range]s/찾을 문자열/교체할 문자열/옵션
특수 문자 입력 <CTRL-V> <문자> 혹은 <CTRL-Q><문자>

문자, 문자열 검색하기

문자 검색하기.

보통 문자 검색하기는 구분 문자를 찾아낸다든지 할 떄 유용하게 사용됩니다. 예를 들어 앞서 작성한 Clientlist.txt를 생각해봅시다. 이 파일은 쉽표를 구분자로 사용하고 있는 CSV(Comma Separated Values) 형식이므로, 편집하거나 각 필드를 볼 때는 쉽표 단위로 이동하는 것이 편리합니다.

f 를 누르고 찾고자 하는 Char를 누르고 난 뒤, 엔터 누르면 찾아지고 f를 눌러 커서를 이동한다.

또는 / 을 눌러 찾고자하는 문자열을 입력하면 하이라이팅 기능으로 알려준다. 그 뒤 n 을 눌러서 커서 이동!!!

오... 신기방기

문자열 교체하기

교체 명령은 명령행 모드에서 사용된다.

:1, $s/man/boy/g 의 의미는?

s 가 문자열 교체 명령어

옵션 설명
g 범위 내에 검색된 모든 문자열을 교체
i 대소문자를 무시합니다.
c 문자열을 교체하기 전 교체여부를 확인합니다.
e 교체 과정 중 에러를 무시합니다. 에러 메시지도 표시하지 않습니다.

콘솔창에서 디렉토리 열기

vim . 이렇게 하면 디렉토리를 선택할 수 있는 창을 열 수 있다.

댓글