CLIEN

본문 바로가기 메뉴 바로가기 보기설정 테마설정
톺아보기 공감글
커뮤니티 커뮤니티전체 C 모두의광장 F 모두의공원 I 사진게시판 Q 아무거나질문 D 정보와자료 N 새로운소식 T 유용한사이트 P 자료실 E 강좌/사용기 L 팁과강좌 U 사용기 · 체험단사용기 W 사고팔고 J 알뜰구매 S 회원중고장터 B 직접홍보 · 보험상담실 H 클리앙홈
소모임 소모임전체 ·굴러간당 ·방탄소년당 ·아이포니앙 ·MaClien ·주식한당 ·일본산당 ·개발한당 ·자전거당 ·이륜차당 ·바다건너당 ·안드로메당 ·클다방 ·AI당 ·소시당 ·노젓는당 ·찰칵찍당 ·가상화폐당 ·VR당 ·물고기당 ·여행을떠난당 ·소셜게임한당 ·걸그룹당 ·달린당 ·패스오브엑자일당 ·골프당 ·콘솔한당 ·나스당 ·캠핑간당 ·개판이당 ·전기자전거당 ·e북본당 ·키보드당 ·육아당 ·3D메이킹 ·X세대당 ·ADHD당 ·AI그림당 ·날아간당 ·사과시계당 ·배드민턴당 ·야구당 ·농구당 ·블랙베리당 ·곰돌이당 ·비어있당 ·FM당구당 ·블록체인당 ·보드게임당 ·활자중독당 ·볼링친당 ·냐옹이당 ·문명하셨당 ·클래시앙 ·요리한당 ·쿠키런당 ·대구당 ·DANGER당 ·뚝딱뚝당 ·디아블로당 ·동숲한당 ·날아올랑 ·갖고다닌당 ·이브한당 ·패셔니앙 ·도시어부당 ·FM한당 ·맛있겠당 ·포뮬러당 ·젬워한당 ·안경쓴당 ·차턴당 ·총쏜당 ·땀흘린당 ·하스스톤한당 ·히어로즈한당 ·인스타한당 ·IoT당 ·KARA당 ·꼬들한당 ·덕질한당 ·어학당 ·가죽당 ·레고당 ·리눅서당 ·LOLien ·Mabinogien ·임시소모임 ·미드당 ·밀리터리당 ·땅판당 ·헌팅한당 ·오른당 ·영화본당 ·MTG한당 ·소리당 ·노키앙 ·적는당 ·방송한당 ·PC튜닝한당 ·그림그린당 ·소풍간당 ·심는당 ·라즈베리파이당 ·품앱이당 ·리듬탄당 ·Sea마당 ·SimSim하당 ·심야식당 ·윈태블릿당 ·미끄러진당 ·축구당 ·나혼자산당 ·스타한당 ·스팀한당 ·파도탄당 ·퐁당퐁당 ·테니스친당 ·테스트당 ·빨콩이당 ·공대시계당 ·터치패드당 ·트윗당 ·창업한당 ·시계찬당 ·WebOs당 ·위스키당 ·와인마신당 ·WOW당 ·윈폰이당
임시소모임
고객지원
  • 게시물 삭제 요청
  • 불법촬영물등 신고
  • 쪽지 신고
  • 닉네임 신고
  • 제보 및 기타 제안
© CLIEN.NET
공지[점검] 잠시후 서비스 점검을 위해 약 30분간 접속이 차단됩니다. (금일 18:15 ~ 18:45)

MaClien

사용기 인텔맥에서 iTerm 2와 함께하는 Emacs 친화적인 환경설정 4

3
2021-05-17 19:05:58 수정일 : 2021-05-18 04:10:42 95.♡.58.31
디엔_Doc


지난번 글에서 인텔맥이 새로온 김에 개인적인 환경과 그 간 사용한 모델에 대해 간략하게 소개해드린적이 있습니다 ( https://www.clien.net/service/board/cm_mac/16140666CLIEN ). 그 간 사용하던 맥북에서 (특히 Catalina/Big Sur에서) 의존성 문제들을 임시방편으로 해결한 적이 있어서 새로 사용하는 맥북에서는 단계적으로 문제를 해결하면서 몇가지 참고사항을 제 개인 블로그 형태의 위키에 기록하고 있습니다. 이 글은 그 중에서도 기본 에디터로서 Emacs설정에 관련한 내용입니다. 혹시 도움이 될 내용이 있을까 싶어 맥당에도 함께 올려봅니다. 


아울러 필자의 경우 개발자가 아니라 과학에 종사하는 연구자로서, 개발자 분들에 비해 전문성이 많이 떨어질 수 있음을 미리 밝혀두는 바입니다.




최근 시스템 변경을 하면서 처음부터 설치를 하는 방법을 선택하고 여러가지 시스템설정에 업데이트가 있었습니다. 그동안 트렌드를 반영하여 업데이틀 할 예정이고, 테마와 관련된 몇 가지 설정들은 Subicura님의 블로그를 참고하였습니다.


간단 요약:

  • iTerm2 및 oh-my-zsh (이는 Mac OS X Catalina부터 기본 shell script가 bash에서 zsh로 변경된것에 기인합니다 [1])를 사용하고, 여기에 맞춰 다양한 컬러테마를 적용할수있습니다. 필자의 경우, Powerlevel10k를 사용하고 이에맞춰 폰트를 MesloLGS NF로 변경하였습니다. 키맵의 경우에는 필자는 좌측 커맨드를 이맥스에서의 Meta로 대응합니다. 그래서 자주 쓰이는 M-x를 Cmd-x가 됩니다. 이를 위해 몇가지 추가 설정이 필요합니다. 
  • Brew에서 설치하는 Emacs 기본 배포판의 경우에는 현재 Big Sur에서 GUI앱이 따라오지 않습니다. 이로인해 Aquamacs와 같은 다른 배포판을 이용해야 하는 듯 합니다만, 필자의 경우 과한 커스터마이즈는 좋아하지 않는 편이라서 비교적 기본 배포판과 비슷한  emacs-plus (해당 깃허브 링크 참조)를 사용하게 되었습니다.  일단 장점은 brew에서 설치/관리가 가능합니다. 여기에 iTerm 2와 비슷하거나 다른 테마 및 폰트들을 설정해 주게 됩니다.


내용:

1. iTerm2 의 설정

많은 부분에서 기존의 설정을 답습해옵니다. 요약하자면 다음과 같습니다. 


1-1. 키 설정 변경: Left Command key를 Emacs의 Meta키로 사용하기 위한 설정

Preferences -> Profiles -> Keys에서 Left/Right Option key를 ESC+로 설정해둡니다. 이는 이맥스의 Meta키의 디폴트값이 ESC+이다보니, 편의성을 위해 Option키로 대체시킵니다.

이 다음 Preferences -> Keys -> Remap Modifiers에서 왼쪽 옵션키와 커맨드키를 서로 바꿔치기 합니다. 결과적으로, 이제 iterm2사용중에서는 왼쪽 커맨드키는 Meta키로 대응됩니다. 만약 iTerm2 외적으로 Command키가 필요한 경우 오른쪽 커맨드키를 활용하면 됩니다.


1-2. 테마

원래는 iTerm2 와 Emacs모두 Solarized Dark를 사용했엇는데, iTerm 2에서는 Subicura님의 블로그를 보고 Snazzy를 사용하고 있습니다. (다만 Emacs에서도 synazzy theme가 있지만, 색상이 과한 느낌이라 기존대로 Solarized Dark를 이용하고 있습니다) iTerm2와 직접적이지는 않지만, 터미널이 zsh로 바뀌었는김에 저는 oh-my-zsh를 사용하고 있습니다. 적용한 테마는 Powerlevel10k이고, 이 때 폰트는 MesloLGS NF입니다. 추가 폰트이므로 테마적용하면서 함께 설치할 필요가 있습니다. (같은 폰트를 이후에 Emacs에서도 사용할 예정입니다. 기존에는 Meslo를 사용했었습니다)

덧붙여 터미널내부의 색환경 설정을 위해 예전 설정과 같지만, zsh환경이므로 .zshrc에다 다음을 추가해둡니다.

export TERM=xterm-256color

 

2. Emacs의 설치/설정

2-1. 설치 및 기본 설정

언제부터인가, Brew에서의 기본 Emacs에서 GUI가 제공되지 않고 있는듯 합니다. 그로인해 현재는 Emacs-Plus 패키지 ( github page: https://github.com/d12frosted/homebrew-emacs-plus )를 사용하고 있고 역시 Brew를 통해 탭한다음에 사용할수 있습니다.

brew tap d12frosted/emacs-plus

brew install emacs-plus@27

추가. 댓글의 「@보복의시*catz*님」  말씀처럼,  cask를 이용해도 됩니다. 예전에는 brew cask로 시작했는데, 3.1.7버전에서는 --cask를 이용하도록 되어있네요.

brew install --cask emacs

해당 패키지의 경우 역시 기본 Emacs배포판과 비슷한 emacsformacosx가 설치됩니다. 해당 패키지와 emacs-plus중에 무엇이 더 나은지에 대해서는 말씀드리기 힘드네요. 필자의 경우 예전에는 cask를 통해 설치한 이맥스를 쓰다가, 현재 새로운 맥북에서는 emacs-plus를 쓰고 있는데 가벼운 리프레쉬외에는 별다른 문제가 없이 잘 작동하고 있습니다.


어떤 배포판을 설치하시던지, 새로운 사용자의 경우에는 다음과 같은 몇가지 부분을 미리 추가해둘 필요가 있을 것 같습니다. 기본적으로 Emacs의 경우에는 실행시 .emacs를 읽어들여 설정을 진행합니다. 그래서 Emacs GUI에서 자체적으로 저장해두는 설정들의 대부분은 .emacs에 자체적으로 추가해줍니다. 이 부분은 ;; 코멘트화된 라인으로 따로 설명해두었으므로, 익숙하지 않은 사람들의 경우에는 따로 수정을 가하지 않는게 좋습니다.

이 외에 package저장소를 추가해두는게 좋은데 필자의 경우에는 다음과 같이 ~/.emacs파일에 추가해둡니다. 만약 "~/"에 .emacs파일이 없다면 직접 생성하셔도 무방합니다.

(require 'package)
(add-to-list 'package-archives
'("melpa" . "http://melpa.org/packages/") t)
(package-initialize)
(setq package-enable-at-startup nil)


2-2. "emacs -nw" alisas 및 emacs server 관련

현재는 emacs는  GUI를 디폴트로, em에는 alias를 설정해두어 "emacs -nw"를 수행하도록 합니다. -nw (no window)옵션을 사용할 경우 GUI없이 터미널 자체적으로 Emacs가 실행됩니다. 위에서 언급한것처럼, zsh를 사용하므로 .zshrc마지막에 다음을 추가해줍니다.

alias em='emacs -nw'

현재 필자는 emacsclient를 잘 사용하지 않으므로 M-x server-start를 사용하는 경우는 LaTex로 작업중 Skim과 상호작용을 할때 밖에 없습니다. 해당 부분은 나중에 LaTex환경설정에 관한 이야기를 할 기회가 되면 올리도록 하겠습니다. emacsclient를 사용하시는 분들은 server-start를 사용하시고 (혹은 .emacs에 (server-start)를 추가하시고) 다음과 같은 alias를 추가하실 수 있습니다. 필자의 경우, emacs/ec/em 세가지를 다뤄야 하고 서버를 사용하는 시점등을 생각하기가 번거로워서 현재는 사용하지 않고 있습니다.

alias ec='emacsclient'


2-3. 키 설정

iTerm2에서 설정한 키맵의 경우 터미널 내에서 이맥스를 실행할 경우에만 유효합니다. 필자의 경우, LaTex작업과 본격적 코딩작업의 경우 GUI를 활용하므로 다음을 추가로 설정해주어서 Mac의 Option키를 super로, Command 키를 Meta키로 대응시켜야 합니다.

(setq mac-option-modifier 'super)
(setq mac-command-modifier 'meta)


2-4. 폰트 및 테마 관련

2-4-1. 폰트

앞서 말씀드렸다시피, 필자는 원래 Meslo를 주로 사용하다가 현재는 MesloLGS NF를 사용합니다. 이는 .emacs에서 custom-set-faces로 수정해줄수 있습니다만, 일반적으로는 M-x customize-face에서 default를 넣고 들어간 곳에서 Font Family에 "MesloLGS NF"를 넣어주고 저장합니다. 그러면 .emacs파일의 customize-set-faces란이 자동으로 수정되어 있습니다.

2-4-2. Emacs GUI theme

앞서 설명드렸다시피 저는 sanityinc-solarized-dark를 GUI의 기본 테마로 사용합니다. Solarized-dark 테마에 대한 디테일은 해당 링크에서 확인하실수 있습니다. iTerm2에서 쓰는 Synazzy는, 강조색상들이 매우 밝은 편이라서 오랫동안 텍스트 작업을 하게 되는 Emacs에는 (저에게) 어울리지 않는다는 결론을 내렸습니다. 

이 경우 GUI를 사용할때만 테마를 적용하고 싶으므로, when window-system 이라는 옵션을 적용하여 테마를 적용합니다.

(when window-system
(load-theme 'sanityinc-solarized-dark t)
)

Sanityinc-solarized-dark를 사용한지 매우 오래되었다보니 여러가지 시인성에 있어서 적응한 부분도 있습니다. 한가지 중요한 단점이, 코멘트 처리된 색상이 기본 폰트색깔과 비슷하기에 구분이 어렵습니다. 그래서 필자의 경우 다음과 같은 부분을 .emacs에 추가해줍니다.

(when window-system
(set-face-foreground 'font-lock-comment-face "dark red")
(put 'upcase-region 'disabled nil)
)

2-4-3. Emacs terminal theme

기본 테마가 시인성이 좋아서 그대로 사용합니다. 장기적으로 사용하기에 조금 눈이 피로할때가 있긴 한데, 어차피 오래 집중하는 글쓰기 및 코딩은 GUI에서 사용하고, 일반적으로 계산 조건 파싱등에 쓰이는 input파일 및 간단한 스크립팅을 터미널에서 사용하므로 특별한 테마설정은 해 주지 않습니다.


2-5. 기타 자잘한 설정들

필자의 .emacs파일에는 과거부터 써오던 흔적들이 남겨져 있다보니 조금 이런저런 설정들이 짜깁기 되어있습니다. 특히 org, LaTex + AUCTeX, 혹은 frame-window관련설정들이 그렇습니다만, 이런건 일반적이지 않은 부분들이니 새로 글타래를 열도록 하겠습니다. 그 외의 자잘하지만 유용한 설정들만 언급하도록 하겠습니다.

2-5-1. .h파일을 자동으로 C++ 모드로 가져오기:

(add-to-list 'auto-mode-alist '("\\.h\\'" . c++-mode))

2-5-2. ring-bell 무시하기

(setq ring-bell-function 'ignore)

2-5-3. word-wrapping

(setq word-wrap t)
(setq longlines-wrap-follows-window-size t)

2-5-4. reload setting

(defun reload-dotemacs()
"Reload .emacs"
(interactive)
(load-file "~/.emacs"))

2-5-5. Start-up screen 무시하기

.emacs에서 다음을 추가하면 됩니다.

(custom-set-variables
'(inhibit-startup-screen t))

최근에 사용하고 있던 emacs-plus@27 GUI의 경우 startup-screen자체에서 제일 마지막에 손쉽게 설정변경을 해주는 옵션이 생겼습니다 (다른 배포판은 확인해보지 않았습니다). 이를 선택하면 위 설정내용이 .emacs에 자동으로 삽입됩니다.


각주:

[1] Shell script의 기본은 달라지지 않았으나 zsh가 기존의 bash에서 무엇이 다른가 싶어서 몇가지 검색결과, 대부분 필자가 사용하는 수준에서는 달라지는게 없다는 결론을 내리게 되었습니다. 몇가지 편의성 기능들이 달라지고, 이들의 보여주는 수준이 더 유려합니다. 그러무로 굳이 옮기지 않을 이유가 없습니다. 혹시 기존의 bash script를 그대로 수행하기 원한다면 hashbang을 이용해서 다음과 같이 기술하면 될 듯 합니다.

#!/bin/bash

zsh와 bash의 자세한 차이점은 링크한 스택오버플로우 답변에 잘 나와있습니다. 혹은 linux기반으로 설명되어있는 링크한 블로그의 글 역시 도움이 됩니다.

디엔_Doc 님의 게시글 댓글
  • 주소복사
  • Facebook
  • X(Twitter)
댓글 • [4]
전설속의미남님
IP 121.♡.218.142
05-17 2021-05-17 20:58:52
·
아.. 뭔가 많이 전문적 글 이신거 같습니다.

에구 저는 VI + iTerm 유저라서리.. 아쉽네요.. 바로 못 써먹어서요 ~.~
디엔_Doc
IP 95.♡.58.31
05-17 2021-05-17 21:22:54
·
@전설속의미남님님 댓글 감사합니다. 저는 오히려 vi를 사용하지 못합니다. 전문적이라기보다는, 보통 시스템 업그레이드할때마다 개인 위키에 예시를 남겨놓는 편입니다. 이번에도 그러고 있었는데, 혹시 필요한 누군가가 있으시다면 도움이 되길 바라면서 조금 배경설명을 넣어서 맥당에 올려두고 있습니다.
삭제 되었습니다.
디엔_Doc
IP 95.♡.58.31
05-18 2021-05-18 00:38:13 / 수정일: 2021-05-18 00:43:06
·
@보복의시님 모든 사용자 환경이 영어로 되어있다보니 한글문제를 인지하지 못하였네요. 한글문제는 utf-8로 변경하면 될겁니다. iTerm역시도 같은 이유로 utf-8로 변경하곤 했었습니다. 지금은 디폴트 자체가 바뀐듯 하네요.

방금 간단하게 검색해보니 다음을 추가하면 되겠네요.
(require 'ucs-normalize)
(set-file-name-coding-system 'utf-8-hfs)

반면에 다른 배포판들의 경우에는 디폴트 인코딩 시스템이 바뀐상태인듯 합니다. 말씀하신 cask의 경우는 brew info --cask emacs로 확인해보니 emacs for mac os x가 적용되어 있습니다 (
https://emacsformacosx.com
). 저도 한때 쓰곤 했었습니다만, 아직까지 지금 쓰는 emacs-plus와 중요한 차이를 발견하지는 못한 듯 합니다. (다만 현재 emacs-plus의 GUI에서 리프레쉬가 가끔 발생하는데 이 점이 어떻게 바뀔지는 모르겠네요) 두 배포판 모두 기본 배포판에서 크게 커스터마이징이 되어 있지 않아서 좋은 듯 합니다.

"Modern" Emacs측면에서는 여러가지 논의가 지난 몇년간 있어왔고 Lisp에서 Python이나 다른 언어 베이스, 혹은 Java (말씀하신 emacs-ng)쪽도 이야기가 있는 것 같은데 다들 한 때 이슈가 되었다가 사그라 드는 듯 합니다. 방금 찾아보니 emacs-ng는 최근에도 흥한것 같네요. 좋은 추천 감사합니다. 저는 java쪽은 전혀 모르지만, 여러 배포판이 나와주는 생태계가 조성되는것은 좋은 것 같습니다.

그거와 별개로 개인적으로 이맥스를 오래 사용해오면서 생각하는 부분입니다만, 저처럼 한번 평범한 커스터마이즈를 한 다음에는 그냥 그대로 쓰는 사람입장에서는 기본 GUI의 편의성을 증대시킬 필요가 있어보입니다. 사실 이쪽의 자잘한 이유들이 몇몇 개인 워크플로우를 Emacs기반에서 다른 소프트웨어로 넘어가게 한 부분입니다. 예를들어 개인 연구 소노트들을 org-mode를 중심으로 작성하곤 있있는데, 간단한 몇가지 편의성 부족때문에 몇년전부터 Devonthink에서 사용하고 있습니다. 사실은 굳이 Devonthink가 아니라 그 전에 사용하던 MacJournal로도 되고 혹은 지금 많이들 쓰시는는 Joplin도 가능합니다.
삭제 되었습니다.
디엔_Doc
IP 95.♡.58.31
05-18 2021-05-18 16:50:27
·
@보복의시님 도움이 되서 다행입니다. 그래도 cask가 편하실테니 그대로 쓰시는걸 추천드립니다. cask쪽으로 관리되는 패키지의 경우 Emacs와 같이 GUI가 서포팅이 되는 배포판을 선정되는걸로 알고있습니다. 항상 그렇지는 않겠지만, 대략적으로 패키지 선택 철학이 기본판보다는 조금더 편한 배포판을 선택하는 편입니다.
새로운 댓글이 없습니다.
이미지 최대 업로드 용량 15 MB / 업로드 가능 확장자 jpg,gif,png,jpeg,webp
지나치게 큰 이미지의 크기는 조정될 수 있습니다.
목록으로
글쓰기
글쓰기
목록으로 댓글보기 이전글 다음글
아이디  ·  비밀번호 찾기 회원가입
이용규칙 운영알림판 운영소통 재검토요청 도움말 버그신고
개인정보처리방침 이용약관 책임의 한계와 법적고지 청소년 보호정책
©   •  CLIEN.NET
보안 강화를 위한 이메일 인증
안전한 서비스 이용을 위해 이메일 인증을 완료해 주세요. 현재 회원님은 이메일 인증이 완료되지 않은 상태입니다.
최근 급증하는 해킹 및 도용 시도로부터 계정을 보호하기 위해 인증 절차가 강화되었습니다.

  • 이메일 미인증 시 글쓰기, 댓글 작성 등 게시판 활동이 제한됩니다.
  • 이후 새로운 기기에서 로그인할 때마다 반드시 이메일 인증을 거쳐야 합니다.
  • 2단계 인증 사용 회원도 최초 1회는 반드시 인증하여야 합니다.
  • 개인정보에서도 이메일 인증을 할 수 있습니다.
지금 이메일 인증하기
등록된 이메일 주소를 확인하고 인증번호를 입력하여
인증을 완료해 주세요.