본문 바로가기
코딩/Linux, Termux

Vim 사용법/설정 변경(.vimrc), 주요 단축키, 확장(Vim Surround)

by 나홀로코더 2022. 4. 12.
반응형

목차

1. 주제 소개

2. 환경 설정 관련(.vimrc, surround.vim)

3. 단축키 관련(이동, 편집)


 

1. 주제 소개

 

아래 글에서 Vim 사용법을 간단히 소개한 적이 있다.

 

termux(linux)에서 코드 편집하기: vim 에디터 기본 사용법

 

termux(linux)에서 코드 편집하기: vim 에디터 기본 사용법

목차 1. vim 소개 2. vim의 기본적인 사용법 소개 1. vim 소개 앞서 안드로이드 스마트폰이나 태블릿에서 termux를 이용해 파이썬 코딩이 가능하다는 것을 소개하였다. termux를 이용해 스마트폰에서 파

codealone.tistory.com

 

위에 소개한 내용에 더해서 실사용 경험에 기반해서 유용하다고 생각되는 몇 가지를 추가로 소개한다.

 

반응형

 

2. 환경 설정 관련(.vimrc, surround.vim)

 

.vimrc 파일

 

.vimrc 파일을 편집하면 내가 원하는 대로 단축키를 맵핑하는 등 Vim 에디터의 설정을 바꿔줄 수 있다.

 

.vimrc 파일을 생성한 적이 없다면 홈 디렉토리에 .vimrc 파일을 먼저 만들어줘야 한다.

 

홈 디렉토리에서 vim .vimrc 커맨드를 입력하거나, 홈 디렉토리에서 Vim 에디터를 먼저 열고 에디터 내에서 :edit .vimrc 커맨드를 입력하면(edit 앞에 콜론이 붙는다) .vimrc 파일이 생성된다.

 

만일 이미 .vimrc 파일이 있다면 홈 디렉토리가 아닌 어디에서든 에디터 내에서 :edit $MYVIMRC 커맨드를 입력해 .vimrc 파일에 접근할 수 있다.

 

.vimrc 파일을 열었다면 아래와 같이 입력하고 저장해보자.

 

imap jj <Esc>

 

위 내용을 말로 표현하면, Insert 모드(i키를 눌러 텍스트 편집이 가능한 상태)에서 jj를 입력하면 ESC 키를 누른 것으로 처리하라는 뜻이다.

 

Vim을 사용하는 가장 큰 목적이 키보드 A~F 키와 J~;키에 손가락을 올려둔 상태에서 최대한 마우스나 키보드상의 다른 위치로 손을 안 움직이는 것이다.

 

그런데 Vim을 사용하다 보면 Insert 모드와 Normal 모드를 자주 오가야 하기 때문에 Esc 키를 자주 눌러야 한다.

 

그마저도 불편하기 때문에 그 자리에서 j를 두번 누르는 것으로 대체하려는 것이다.

 

그리고 그 아랫줄에는 아래와 같이 입력하고 저장해보자.

 

:set number

 

이렇게 해 두면 Vim 편집기를 열었을 때 아래와 같이 줄번호가 표시된다.

 

:set number 설정 전
:set number 설정 후

 

반응형

 

surround.vim 설치하기

 

Vim에는 여러 유용한 플러그인을 설치하여 적용할 수 있다. 이러한 플러그인들을 설치해서 본인이 원하는 대로 커스터마이징 할 수 있다는 것이 Vim의 큰 장점이라고 한다.

 

그중 거의 필수격으로 여겨지는 surround.vim 플러그인을 소개한다. 플러그인이므로 아래 명령어를 입력해서 따로 설치를 해줘야 한다.

(이 플러그인은 너무 대중적으로 쓰이는 나머지 VS Code의 Vim 확장에 기본값으로 포함될 정도이다. 따라서 VS Code에서 Vim 확장을 설치해서 Vim을 사용하는 경우에는 따로 설치할 필요가 없다.)

 

mkdir -p ~/.vim/pack/tpope/start && cd ~/.vim/pack/tpope/start && git clone https://tpope.io/vim/surround.git && vim -u NONE -c "helptags surround/doc" -c q

 

코드 작성 시 따옴표, 괄호 등으로 텍스트를 감쌀 일이 많은데, surround가 바로 그 뜻이다. 설치를 하고 나면 아래와 같은 단축키를 추가로 사용할 수 있다. 

 

ys: 감싸기(you surround의 약자)

사용례: ys e "

 -> 현재 커서 위치에서부터 단어 끝까지 따옴표 씌우기

     (e 대신 다른 이동 커맨드를 사용하여 따옴표 씌우는 범위를 달리 할 수 있음)

 

ds: 지우기

사용례: ds ) 

 

cs: 바꾸기

사용례: cs ' "

  -> 작은 따옴표를 큰 따옴표로 바꾸기

 

반응형

 

3. 단축키 관련(이동, 편집)

 

커서를 이동하고 텍스트를 편집하는 것에 관련된 단축키들을 몇가지 소개한다. Vim에는 셀수 없이 많은 단축키가 있으나, 활용도가 높다고 생각하는 것들만 추려봤다.

 

코드 블럭 단위로 이동하기: { }

 

Normal 모드에서 중괄호를 누르면 코드 블럭 단위로 커서가 이동된다. 

 

가독성을 위해서 보통 다음과 같이 코드를 블럭화해서 작성하는데, 중괄호를 이용하면 블럭과 블럭 사이의 빈 줄로 커서가 이동된다.

 

 

해당 라인의 시작, 끝, 첫 문자로 이동하기: 0,  $, ^

 

0은 해당 라인의 맨앞으로, $는 해당 라인의 맨끝으로, ^는 해당 라인의 첫번째 문자 위치로 커서를 옮겨 준다.

 

 

라인 내에서 문자 찾기: f(find), t(to)

 

f와 t를 이용하면 라인 내의 특정 문자로 바로 이동한다. f는 해당 문자로, t는 해당 문자 앞으로 커서를 옮겨 준다.

 

 

괄호 찾기: %

 

%를 이용하면 괄호로 바로 이동할 수 있다. 

 

 

반응형

 

문서의 시작, 끝, 중앙, 특정 라인으로 이동하기: gg, G, 50%

 

gg를 이용하면 문서의 맨 앞으로, G를 이용하면 문서의 맨 끝으로 커서를 옮길 수 있다.

 

gg 앞에 숫자를 붙이면 해당 라인으로 바로 이동한다.

 

50%를 입력하면 전체 라인 수 대비 50%인 라인으로, 즉 문서의 중앙으로 이동한다.

 

직전 편집 지점으로 이동: ' ' 

 

' ' (홑따옴표 두번)을 이용하면 직전 편집 지점(insert 모드에서 빠져나온 곳)으로 커서가 이동된다.

 

예를 들어 30번째 라인을 편집하다가 노멀 모드로 빠져나가 스크립트의 다른 곳을 살펴보고나서 다시 편집 중이던 30번째 라인으로 돌아가고 싶을 때 이용할 수 있다.

 

괄호 안의 모든 코드 삭제: di(, da(

 

di 또는 da 다음에 괄호를 입력하면 괄호 안의 모든 내용을 삭제한다. 현재 커서가 괄호 안에 있지 않더라도 바로 다음 괄호를 찾아 그 안의 내용을 모두 지운다. di와 da의 차이는 괄호를 남기느냐 괄호까지 지우느냐이다.

 

di는 delete inner, da는 delete a를 줄인 말이다.

 

 

한 단어, 한 문장, 한 단락 삭제: daw, diw, das, dis, dap, dip

 

단어, 문장, 단락 단위로도 삭제가 가능하다. 

 

단어 삭제

 

문장 삭제

 

단락 삭제

 

문장과 단락의 정의는 다음과 같으니 참고하자.

 

 

반응형

 

새 라인 추가하고 편집 모드로 진입: o, O

 

소문자 o는 현재 커서 위치의 아랫줄에, 대문자 O는 윗줄에 새 라인을 추가해 준다.

 

텍스트 덮어쓰기: r, R(replace)

 

r은 현재 커서가 위치한 곳의 1글자를, R은 현재 위치부터 여러 글자를 덮어쓰는 단축키이다.

 

직전 커맨드 반복:

 

마침표를 이용하면 직전에 사용한 커맨드를 반복할 수 있다.

 

예를 들어 daw로 단어 한 개를 지운 다음에 다른 단어로 커서를 옮긴 뒤에 마침표 한번만 누르면 해당 단어도 지워진다.

 

shell(터미널)로 빠져 나가기, vim으로 돌아오기: ctrl z, fg

 

작성 중인 스크립트를 실행하려면 shell로 돌아가야 한다. 이때 문서를 완전히 닫으면 편집 히스토리가 모두 사라져 수정한 내용이 마음에 안들더라도 되돌릴 수가 없게 된다.

 

이때는 ctrl z 단축키를 이용해서 문서를 닫지 않은 상태로 shell로 갔다가, shell에서 fg를 입력하면 다시 vim으로 돌아올 수 있다.

 

shell로 돌아왔다가 vim을 다시 열기 위해 fg 명령어를 입력한 모습

 

참고로 ctrl z 대신 :suspend 커맨드를 입력해도 되며, fg는 foreground의 약자이다.

 


이상 소개를 마치고, 보다 자세한 내용은 아래 페이지에서 확인할 수 있다.

 

https://vimhelp.org/usr_toc.txt.html 

 

Vim: usr_toc.txt

usr_toc.txt For Vim version 8.2. Last change: 2020 Jun 15 VIM USER MANUAL - by Bram Moolenaar Table Of Contents user-manual ============================================================================== Overview Getting Started usr_01.txt About the manuals

vimhelp.org

 

반응형

댓글