Emacs

  • 初期設定や追加パッケージに関するメモ
  • 基本的な操作方法は エディタの使い方 を参照
  • Emacs25になってアイコンが変わった

使い方

Emacsの初期設定

  • Emacsの初期設定はとてもめんどくさいので、先人の知恵を集めたフレームワーク(設定集)を導入するのがオススメ
  • 紆余曲折の結果、GitHubにある Prelude という先人の知恵を fork してカスタマイズすることにした
  • 詳しくは Preludeの使い方 を参照

紆余曲折

  • 端的に言えば、めんどくさくなったため
  • 過去には、ネットで調べながら自分で0から書いていたこともあったけれど、パソコンを買い替えたり、複数台使ったりするうちに疲れてしまった
  • このようなパッケージは色々あるので、自分でよいと思ったものを選択するとよい

パッケージを設定する前に

  • 基本的なElispコマンドとかをちらほらと
  • 設定を変更するたびにEmacsを再起動するのは少しめんどくさい
  • 選択範囲、現在のバッファを再読み込みコマンドを使う
M-x eval-region
M-x eval-buffer
  • 変数を上書きならなんとかなる
  • 変数を追加の場合は、これでうまくいくとは限らないのでEmacsの再起動が必要
  • restart-emacs パッケージというのもある
  • elispで変数を設定するコマンド
(setq org-directory "~/Documents/memo/")
(setq org-default-notes-file (expand-file-name "memo.org" org-directory))
 
;; "Warning: assignment to free variable `変数名" とでたら"setq"を"defvar"に変更する
(defvar auto-insert-directory "~/.emacs.d/insert/")
  • scratchバッファを活用する
  • C-j した結果は、すぐ下の行に表示される
(setq life 42)    ;; C-j
42
 
life   ;; C-j
42
(defvar linux-p (eq system-type 'gnu/linux))    ;; for Linux
(defvar darwin-p (eq system-type 'darwin))      ;; for Mac OS X
(defvar nt-p (eq system-type 'windows-nt))      ;; for Windows
 
(when linux-p
    (message "OS : GNU/Linux")
    (... do something ...))
(when darwin-p
    (message "OS : MacOSX"))
    (... do something ...))
  • 最近はテーマの設定には M-x load-theme を使えばよい
  • 使いたいテーマが決まったら、以下の設定を init.el に書き込む
M-x load-theme RET
Load custom theme: TAB
Possible completion の中から選択して RET

Preludeの場合

  • Preludeを使う場合は personal/preload/init.el を作成し、変数prelude-theme を設定する
(setq prelude-theme 'leuven)
;; leuven はMELPAからインストールする必要があるかも
;; Emacs24.5からはビルトインになったかも?

OS切り替え

  • 前述のOS切り替えと組み合わせると以下のよう
(when linux-p
    (message "OS : GNU/Linux")
    (setq prelude-theme 'manoj-dark))    ;; mango-dark の部分を書き換える
(when darwin-p
    (message "OS : MacOSX"))
    (setq prelude-theme 'leuven))

面白そうな参考サイト

登録済みのメジャーモードの確認する方法

M-x describe-variable RET auto-mode-alist RET

拡張子によってメジャーモードを設定する方法

  • ファイルを開く際に、どのメジャーモードで開くかを指定できる
(add-to-list 'auto-mode-alist '("\\.org$" . org-mode))      ;; .org ファイルは org-mode で開く
(add-to-list 'auto-mode-alist '("\\.tex$" . yatex-mode))    ;; .tex ファイルは yatex-mode で開く
(autoload 'yatex-mode "yatex" "Yet Another LaTeX mode" t)   ;; yatex-mode のモードラインは "Yet Anoter LaTeX mode" と 表示する

ファイル毎にメジャーモードを設定する方法

  • ファイルの1行目に各言語コメント記号のあとに、“-*- モード名 -*-” といった感じで指定する
/* -*- mode:c -*- */          Cの場合
// -*- mode:c++ -*-           C++の場合
;; -*- mode:emacs-lisp -*-    elispの場合
## -*- mode:python -*-        pythonの場合
-*- mode:org -*-              org-mode の場合
  • 読みやすいように「mode:言語」としておく
  • 基本的に拡張子で判別してくれてるはず
  • 使うとしたら.hファイルをC++モードで開きたい場合などに限られるかも
  • モードラインに時刻しか表示されてなかったので、日付も表示するように設定

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; display date & time in 24hrs format
(setq display-time-day-and-date t)
(setq display-time-24hr-format t)
(display-time)

設定前

設定後