こんにちは。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」の最新記事
コメント