"이맥스는 사용자와 함께 진화하는 에디터다"
- 야이미친
<이맥스 개종 가이드>
오늘은 힘들어서 여기까지...
이맥스에서 깃을 사용하는 방법과, 중급 유저들을 위해서 use-package를 사용한걸 소개하겠음..
이맥스의 꽃 중 하나는 magit 이라는 패키지인데,
git을 이맥스에서 사용할 수 있게 해주는 패키지입니다.
나는 얼마전까지 이맥스에서 git 과 관련된 것들을 shell 로 사용했었는데,
이번에 magit 사용해보니까 그냥 신세계임 미쳤음
magit 은 설치와 셋업이 매우 간단해서 그냥
M-x package-install RET magit RET
을 하면 되고,
문제는 사용설명서가 미쳤음 겁나 김
그래서 제가 간단하게 git add, git commit, git push 하는걸 소개를 하겠음
일단 evil-mode를 사용하고 있는 사람들은 evil-magit을 설치해주시고,
저의 경우 evil-magit을 쓰고 있기 때문에 그냥 그거 기준으로 설명을 하겠음
어떤 프로젝트에서 git init을 하고 싶으면,
그냥 그 지점에서 magit-init을 하면 되고,
모든 것은 magit-status 를 통해서 하게 됩니다.
magit-status는 그냥 항상 열고 닫고 하기 때문에
C-x g 로 박아놨음
필요한 파일들을 수정하고 magit-status 를 사용할 경우,
이렇게 창이 뜹니다.
unstaged changes 그니까 로컬에서 수정했는데 git add 를 안 한 파일들의 목록이 뜹니다.
evil-magit을 안 사용하고 있을 경우에 n, p 로 위 아래 목록을 내려갔다 올라갔다 할 수 있고요,
evil 사용자들은 자연스럽게 h j 를 사용하시면 됩니다.
그리고 unstage 된 것들 중에서 stage 하고 싶은게 있으면 그 때 s 를 눌러주고, (여기서부터는 evil 기준)
전체를 다 스테이지 하려면 S 를 하시면 됩니다.
이러면 스테이지가 되고,
이 때 c 를 누르면 커밋 관련 설정들이 뜹니다.
그냥 커밋을 할꺼면 간단하게 c 를 다시 누르면 되고,
vim으로 커밋 메세지 수정하는게 뜹니다. 동시에 diff도 보여줍니다.
커밋 메세지 입력하고,
C-c C-c 를 눌러주면 커밋이 완료가 됩니다.
푸시를 할 때는 p 를 눌러주면 되는데,
이렇게 옵션들이 다 뜹니다.
이미 설정 해놓은 upstream (레포지토리)가 없으면 설정하라는 메세지가 뜨고요,
설정 한 다음에 RET,
또는 이미 설정돼있을 경우에는 p 를 눌러주면 푸시가 됩니다.
이 외에도 머지, 브랜치 관리, 헤드 관리 등등 깃의 모든 것을 다 magit 내에서 처리할 수가 있고,
깃허브 관리를 위한 magit 패키지도 따로 나와있습니다.
하여튼 좋음.
마지막으로, 일반 중급 이맥스 유저들을 위해 use-package 라는 패키지를 소개하겠음
이 패키지는 그냥 유틸리티 패키지인데,
init.el 파일이 엄청 간략하고 관리하기가 편해져서 소개를 드립니다.
use-package 는 간단히 말해서 패키지 관리용 매크로인데,
이렇게 use-package 로 어떤 패키지를 선언할 경우 (require)를 하는거랑 동일한 효과가 납니다.
사진에서 :if 문은 뭐냐하면 이 패키지를 (require) 하는 조건을 명시하는거고요, 저 코드의 경우에는 ms-dos 가 아닌 겨우에 rtags를 포함시키라는 얘기입니다.
이 사진을 보면 init 이라는 것과 config 라는게 있는데,
init 은 이 패키지를 로드하기 전에 할 것들, hook 걸기라던지 이런 것들을 설정하는 거고,
config는 이 패키지를 로드한 후에 할 것들을 설정하는겁니다.
hook의 경우에는 init에다가 하게 되고,
패키지 초기화용 함수 같은거는 패키지 로딩 후에 호출을 할 수 있으니까 config로 하게 됩니다.
패키지와 관련된 모드가 따로 있을 경우에는 :mode 를 이용해서 이렇게 mode 설정을 할 수 있고요,
관련된 키바인딩이 있을 경우
:bind 로 키바인딩을 매우 손쉽게 할 수 있습니다.
하여튼 이걸 이용하면 코드의 절대적 양이 적어지고 가독성 팍팍 늘어남 꼭 쓰셈
다음 편 올릴 수도 있고 안 올릴 수도 있음
오늘은 여기까지...
ㄴ 저는 저장할 때랑 파일 열 때빼고 안 누르는데