Vim 사용법

2022. 11. 9. 00:04ETC

반응형

Vim ?

우선 vi에 대하여 간단하게 알아보면
1976년 Bill Joy라는 분께서
Vi라는 unix 운영체제에서 프로그래밍 할 수 있는 텍스트 에디터를 만드셨습니다.

1991년 Bram m이라는 분께서
vi에서 상향화 된 Vi IMproved라는 텍스트 에디터를 만들게 되었는데요,
우리가 부르는 Vim입니다!


Vim을 사용해야 되는 이유

그러면 우리가 도대체 왜?

vim를 사용해야 될까에 대해서 알아볼까 하는데요.

 

  • 마우스로 사용하던 대부분의 기능을 키보드로 대체할 수 있다는 강력한 장점이 있다.
  • 그럼으로 작업 시간을 줄일 수 있게 된다.
  • 무엇보다도 멋있어 보입니다..😉

 

이제 어떻게 사용하는지에 대해서 살펴볼 건데요

Vim에는

명령모드   /   입력모드

이렇게 두 가지의 모드가 존재합니다.

명령모드는 말 그대로 명령어를 사용하는 것이고

입력모드 또한 텍스트를 입력하는 것입니다.

 

터미널 환경에서 test.txt파일을 만들어서

예시를 보여드리겠습니다.

 

vi로 test.txt파일을 열겠다고 해줍시다.

 

왼쪽 아래를 보시면

-- INSERT --

라는 문구가 보이실 텐데요 바로 입력모드라는 것입니다.

위 문구가 없다면 명령모드라는 것이에요.

 

우선 명령어에 대하여 알아보아야겠죠?

 

Vim 명령어 단축키

명령어가 어마무시하게 많죠..ㅎㅎ

 

저도 모든 명령어를 사용하지 않고

자주 쓰는 몇 개만 사용하고 있어요.

 

제가 사용해보며 자주 사용했던, 유용한 명령어들을

알려드릴게요~

Vim 명령어 [ 입력모드 ]
  • i : 커서 이전에 입력
  • a : 커서 이후에 입력
  • s : 단어 삭제 후 입력
  • S : 행 삭제 후 입력
Vim 명령어 [ 명령모드 ]
  • e : 단어 끝으로 이동
  • b : 단어 앞으로 이동
  • $ : 문장 끝으로 이동
  • ^ : 문장 앞으로 이동
  • v : 단어 선택
  • V : 줄 선택
  • y : 복사하기
  • Y : 줄 전체 복사하기
  • p : 커서 이후에 붙여 넣기
  • P : 커서 이전에 붙여 넣기
  • R : 수정모드 (한글 사용하실 때 작성하실 때 마다 글자가 사라지면서 입력 될 때 그 수정모드입니다!)
  • r : replace 시켜줍니다.
  • d : 삭제 ( 더블 클릭하면 행 전체 삭제 됩니다.)
  • % : 괄호 짝 찾기 ( 진짜 유용해요)
  • k : 윗 줄 이동
  • j : 아랫 줄 이동
  • - : 윗 줄 이동 (단어 앞)
  • + : 아랫 줄 이동 (단어 앞)
  • u : 실행 취소
  • :q --> 그냥 종료
  • :q! --> 강제 종료
  • :w --> 저장
  • :w! --> 강제 저장
  • :wq --> 저장하고 종료
  • :wq! --> 강제 저장 후 종료
  • ci( --> (괄호) 안에 모든 것 삭제
  • ci{ --> {대괄호} 안에 모든 것 삭제

저는 이정도만 사용하는데도

엄청 만족하면서 유용하게 사용하고 있습니다.

처음에는 e, b, i, a, s정도만 사용하셔도

삶의 질이 바뀌는 걸 느끼실 거예요~~

 

만약 사용해보시고 입력모드에서 명령모드로 전환하려고 하면

아마 텍스트만 작성 될 거예요..ㅎ

 

저도 처음 사용할 때 되게 난감하고

따로 설정해줘야 하나 머리가 복잡했는데

찾아보니 esc키를 눌러 명령모드로 전환할 수 있더라구요

 

 

이번에는 IntelliJ에서는 어떻게 사용하는지 확인해볼까요?

IntelliJ에서  vim 사용법
  1. Preferences탭에 들어가줍니다. ( 단축키 : command + , [ Mac 기준 ] )
  2. Plugins 탭을 클릭해줍니다. ( 위쪽에 있어요! )
  3. vim을 검색하여 IdeaVim을 설치해줍니다.

설치가 되시면 아래 사진처럼 IdeaVim 로고가 보이실 거예요.

 

 

반응형

'ETC' 카테고리의 다른 글

[ LOMBOK ] @Build, @AllArgsConstructor, @NoArgsConstructor, @RequiredArgsConstructor  (0) 2022.12.08
의존성 주입  (0) 2022.12.08
clean code[ 1 ] - 매핑관계  (0) 2022.11.12
정규식 정리 [ 2 ]  (0) 2022.11.03
정규식 정리 [ 1 ]  (0) 2022.11.03