"이맥스는 사용자와 함께 진화하는 에디터다"

- 야이미친



<이맥스 개종 가이드>


1편

2편

3편

4편


오늘은 힘들어서 여기까지...


이맥스에서 깃을 사용하는 방법과, 중급 유저들을 위해서 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 로 키바인딩을 매우 손쉽게 할 수 있습니다.



하여튼 이걸 이용하면 코드의 절대적 양이 적어지고 가독성 팍팍 늘어남 꼭 쓰셈





다음 편 올릴 수도 있고 안 올릴 수도 있음

오늘은 여기까지...