깃을 CLI환경으로 사용하기 위해 VIM을 사용하려고하는데 예전에 분명 배웠던 것들이 다 백지화 되어 다시 공부해보고자 블로깅을 작성해본다.
우리가 윈도우 또는 맥 OS를 사용할때 GUI환경을 사용한다.
GUI환경에서 텍스트 편집기는 간단하게 메모장부터 VSC같은 강력한 툴이 있지만
CLI환경에서 텍스트 편집기는 VIM, emacs, nano 등이 있다.
글을 좀 찾아보니 VIM vs emacs라는 끝나지 않는 토론이 존재하는 것 같다.
마치 들여쓰기 2칸 4칸 같은 느낌이려나..
여튼 VIM은 CLI환경에서 텍스트를 편집할수 있는 편집기라고 볼 수 있다.
우선 VIM이 없을수도 있다는점...
VIM을 설치하자!
sudo apt-get install vim
CLI에서 텍스트 편집기는 마우스가 없던시절부터 사용해왔기 때문에 마우스를 지원 않할 수 있다. VIM은 사용해보니 마우스를 사용 안하더라...
그리고 키보드에서도 방향키가 안먹혔다.
그래서! 간단하게 단축키를 정리 해보았다.
우선 디렉토리에 test.txt 파일을 생성하고
vi test.txt
를 실행해보면 아래와 같은 화면이 뜬다.
방금 만든 파일을 열었는데 ~
표시가 가득해서 오해할 수있지만 저건 그냥 여기는 작성하거나 사용한 곳이 아니다라는 표시라고 이해하면 편하다. 입력모드로 바뀌면 사라진다.
이 화면에서 문자를 입력하려고 해봐도 아무반응이없거나 원치않은 동작이 일어난다.
그 이유는 vi는 모드라는것이 존재하는데 실행시 노멀모드인 상태이다.
무언가를 입력하기 위해서 i
를 눌러 입력모드로 전환하여야한다.
그 다음 입력을 하면 문자들이 정상적으로 입력이 된다.
하지만 나는 또 한번 막힌것이 입력된 글자를 어떻게 지우는지 모르겠다는것이다...
백스페이스 누르니 커서가 이동만 된다.
알고보니 esc
를 눌러 처음 노멀모드로 전환한 뒤 x
를 이용하여 커서 위치문자를 지우거나 dd
를 이용하여 줄 전체를 삭제할 수 있었다.
i
: 노멀모드 기준으로 해당 커서에서 입력모드로 전환
I
: shift + i를 누르면 해당 커서가있는 줄에서 맨 앞으로 이동하여 입력모드가 실행
esc
: 입력모드에서 노멀모드로 전환
dw
: 현재 커서 기준으로 뒤를 다 지움
dd
: 현재 커서가있는 줄 전체를 삭제
앞서 설명을 못한것은 문자를 지우기 위해 커서를 이동해야하는데, 방향키가 먹히지 않는다. 방향키와 같은 역활을 하는게
hjkl
네가지 키이다. h
는 왼쪽 j
는 아래 k
위 l
오른쪽으로 한칸씩 이동한다.
그 다음 vi에서 바뀐 문서를 저장하고 나가기 위해서는
노말모드에서 :
을 누른뒤(shift + ':') w(저장) q(나가기) 를 입력하고 엔터를 누르면된다.
:wq
또는 저장을 안하고 나가려면
:q!
를 눌러 강제로 나가면 된다.
이정도가 git commit을 위한 기본적인 vi 사용법이고 추가적인 단축키를 아래에 정리 해놓아 보겠다.
h
, j
, k
, l
: 좌우상하 이동
0
: 줄의 처음으로 이동
$
: 줄의 끝으로 이동
G
: 문서의 끝으로 이동
gg
: 문서의 처음으로 이동
i
: 커서 위치 입력모드
I
: 커서의 줄 앞에서 입력 모드
a
: 커서위치 다음칸에서 입력모드
A
: 커서의 줄끝에서 입력 모드
o
: 커서 다음 줄에서 입력모드(개행)
O
: 커서 이전 줄에서 이벽모드(개행)
x
: 한글자 지우기
dd
: 한 줄 지우기
dw
: 커서기준 뒤쪽 지우기
:q!
: 저장 안하고 강제로 나가기
:wq
: 저장하고 나가기
:w
: 저장하기
:q
: 나가기
이정도면 git을 사용하는데에는 그럭저럭 사용할 수 있을것 같다.