
こんにちは。iQeda [@iQeeeda] です。
なんかエラーがでる! (もしくはエラーすら表示されない!)
その気持ち、すごくわかります。
エディターの設定なんかよりも、本当は早く開発に取り掛かりたいはず。
~/.emacs.d/init.el をイジるときの心構えと、僕が普段つかっている設定を公開します! (コピペで OK です)
Emacs はカスタマイズしてこそ威力を発揮する

Emacs は拡張性が高いエディターですが、デフォルト設定の使い勝手はよくありません。
最初は設定にこだわりすぎない方がいい
設定ファイルの書き方にはクセがあって、慣れていないと文法エラーをたくさん起こすでしょう。
なので、初心者は「最初から完璧な設定ファイルを目指さない方がいい」と思います。
初心者おすすめの Emacs 設定手順
- ネット上に公開されている他人の設定をコピペして試すこと
- 挙動が気に入らなくても「ちゃんと動いてるからいいか」ぐらいの気持ちでいること
- Emacs の基本操作に慣れてきた頃から少しずつ設定をイジること
Emacs Lisp について
設定ファイルやパッケージは Emacs Lisp という独自言語で書かれています。
先ほど説明したとおり「最初は文法なんて覚えず、誰かの設定をコピペするだけ」で OK です。
個人的 init.el 設定

Emacs の設定ファイルの場所について説明します。
- ホームディレクトリに
.emacs.dという隠しフォルダがなければ作成してください .emacs.dの中にinit.elというファイルがなければ作成してください- この
init.elが設定ファイルとなります
- この
それでは init.el に以下の設定を貼り付けてみてください。
;;
;; パッケージ読み込み
;;
(require 'package)
;; HTTP
(add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/") t)
(add-to-list 'package-archives '("melpa-stable" . "http://stable.melpa.org/packages/") t)
(add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/") t)
(add-to-list 'package-archives '("ELPA" . "http://tromey.com/elpa/") t)
(package-initialize)
;; フォントを Ricty Diminished (変更したい場合)
;; (add-to-list 'default-frame-alist '(font . "Ricty Diminished-14"))
;; フォントの行間を指定 (変更したい場合)
;; (setq-default line-spacing 0.2)
;;
;; Mac OS のクリップボードと同期する
;;
(defun copy-from-osx ()
(shell-command-to-string "pbpaste"))
(defun paste-to-osx (text &optional push)
(let ((process-connection-type nil))
(let ((proc (start-process "pbcopy" "*Messages*" "pbcopy")))
(process-send-string proc text)
(process-send-eof proc))))
(setq interprogram-cut-function 'paste-to-osx)
(setq interprogram-paste-function 'copy-from-osx)
;; 時間も表示
(display-time)
;; emacs テーマ選択
(load-theme 'manoj-dark t)
;; "yes or no" の選択を "y or n" にする
(fset 'yes-or-no-p 'y-or-n-p)
;; alpha
(if window-system
(progn
(set-frame-parameter nil 'alpha 95)))
;; font
(add-to-list 'default-frame-alist '(font . "ricty-12"))
;; line number の表示
(require 'linum)
(global-linum-mode 1)
;; line number を分かりやすくする
(set-face-attribute 'linum nil
:foreground "#a9a9a9"
:background "#404040"
:height 0.9)
;; メニューバーを非表示
(menu-bar-mode 0)
;; 現在ポイントがある関数名をモードラインに表示
(which-function-mode 1)
;; 対応する括弧をハイライト
(show-paren-mode 1)
;; リージョンのハイライト
(transient-mark-mode 1)
;; current directory 表示
(let ((ls (member 'mode-line-buffer-identification
mode-line-format)))
(setcdr ls
(cons '(:eval (concat " ("
(abbreviate-file-name default-directory)
")"))
(cdr ls))))
;; ターミナルで起動したときにメニューを表示しない
(if (eq window-system 'x)
(menu-bar-mode 1) (menu-bar-mode 0))
(menu-bar-mode nil)
;; buffer の最後でカーソルを動かそうとしても音をならなくする
(defun next-line (arg)
(interactive "p")
(condition-case nil
(line-move arg)
(end-of-buffer)))
;; active window move
(global-set-key (kbd "<c-left>") 'windmove-left)
(global-set-key (kbd "<c-down>") 'windmove-down)
(global-set-key (kbd "<c-up>") 'windmove-up)
(global-set-key (kbd "<c-right>") 'windmove-right)
;; rgrep の header message を消去
(defun delete-grep-header ()
(save-excursion
(with-current-buffer grep-last-buffer
(goto-line 5)
(narrow-to-region (point) (point-max)))))
(defadvice grep (after delete-grep-header activate) (delete-grep-header))
(defadvice rgrep (after delete-grep-header activate) (delete-grep-header))
;; "grep バッファに切り替える"
(defun my-switch-grep-buffer()
(interactive)
(if (get-buffer "*grep*")
(pop-to-buffer "*grep*")
(message "No grep buffer")))
(global-set-key (kbd "s-e") 'my-switch-grep-buffer)
;; 履歴参照
(defmacro with-suppressed-message (&rest body)
"Suppress new messages temporarily in the echo area and the `*Messages*' buffer while BODY is evaluated."
(declare (indent 0))
(let ((message-log-max nil))
`(with-temp-message (or (current-message) "") ,@body)))
;; Terminal 化
(setq shell-pop-shell-type '("eshell" "*eshell*" (lambda () (eshell))))
(global-set-key (kbd "C-c o") 'shell-pop)
;;
;; setq
;;
;; ⌘ キーを super として割り当てる
(setq mac-command-modifier 'super)
;; クリップボードへのコピー
(setq x-select-enable-clipboard t)
;; C-k で行全体を削除する
(setq kill-whole-line t)
;; スタートアップメッセージを表示させない
(setq inhibit-startup-message t)
;; エラー音をならなくする
(setq ring-bell-function 'ignore)
;; *.~ バックアップファイルを作らない
(setq make-backup-files nil)
;; .#* バックアップファイルを作らない
(setq auto-save-default nil)
;; tabサイズ
(setq default-tab-width 4)
;; タイトルにフルパス表示
(setq frame-title-format "%f")
;; スタートアップメッセージを表示させない
(setq inhibit-startup-message 1)
;; scratch の初期メッセージ消去
(setq initial-scratch-message "")
;; スクロールは 1 行ごと
(setq mouse-wheel-scroll-amount '(1 ((shift) . 5)))
;; スクロールの加速をやめる
(setq mouse-wheel-progressive-speed nil)
;; 大文字・小文字を区別しない
(setq case-fold-search t)
;; rgrep 時などに新規に window を立ち上げる
(setq special-display-buffer-names '("*Help*" "*compilation*" "*interpretation*" "*grep*" ))
;;
;; define-key
;;
;; Contol H で 1 文字削除
;; (define-key global-map "\C-h" 'delete-backward-char)
;; 上記定義では Mini Buffer 内では削除できない可能性があるので以下を再定義
(keyboard-translate ?\C-h ?\C-?)
(global-set-key "\C-h" nil)
;; ヘルプの表示を M-? 変更
(define-key global-map "\M-?" 'help-for-help)
;; ファイル名検索
(define-key global-map [(super i)] 'find-name-dired)
;; ファイル内検索
(define-key global-map [(super f)] 'rgrep)
;;
;; put
;;
;; リージョンの大文字小文字変換
(put 'upcase-region 'disabled nil)
(put 'downcase-region 'disabled nil)
; でコメントアウトしてみてください。init.el を保存して、Emacs を起動すると設定が色々と変わっているはずです。
init.el が読み込まれていないとき
Emacs の設定ファイルはいくつかありますが、基本的に ~/.emacs.d/init.el だけで十分です。
以下の設定ファイルが存在していないか確認してみてください。
~.emacs~/.emacs.el
設定内容を確認して問題なさそうであれば、上記 2 ファイルは削除して OK です。
パッケージインストールについて
Emacs のパッケージインストール機能を使うと、更に init.el 内で機能拡張の設定ができます。
パッケージの使い方について、以下の記事で解説しています。
関連記事
Emacs ロードマップ
Emacs 操作方法
お仕事ください!
僕が代表を務める 株式会社 EeeeG では Web 制作・システム開発・マーケティング相談を行っています。 なにかお困りごとがあれば、Twitter DM や Web サイトからお気軽にご相談ください。
カテゴリ「Develop」の最新記事

TerraformによるLinodeインスタンス新規作成サンプル
【Fingerprint】CircleCIがSSHできない問題解決
【Laravel】セッションタイムアウト後のログイン処理で前回URLに遷移するバグ修正
M1 Mac(2021)でanyenv/phpenvの初期設定!
コメント