この記事は最終更新日から1年以上が経過しています。
まえがき
Emacs という古代の遺産みたいなエディタがあります。
めっちゃカスタマイズできるのが特徴で、
Emacs は エディタではなく環境だ、とか言われたりしてます。
使いこなしている人はあらゆる言語のコーディングを Emacs の中で行い、
テストも Emacs の中で行い、ドキュメントも Emacs で書き、
さらにはブラウジングや Twitter への投稿も Emacs の中で行うそうです。
…私はそこまでではありません。
同期から見せて欲しいと去年の10月ごろに言われてたのをふと思い出しました。
折角なので現在使っている設定ファイルをここに公開します。
よく分からない人も、とりあえず Emacs をインストールしてみて、
以下の設定ファイルを置いてみてください。
ごめんなさい、ごちゃごちゃと設定しすぎてて
Emacs 使ったことない人がいきなり動かすのはかなり面倒です。
時間の無駄です。やめてください。
下記設定ファイルの動作環境
特にないと思ってたのですが、実際にゼロから構築してみたら意外とありました。
- Emacs 24.4 以上
- 動作に必要な Emacs のパッケージ (package.el からインストールしておいてください)
- helm
- migemo
- shell-pop
- open-junk-file
- [Macの場合]
- フォント Ricty が入っていること
- cmigemo が入っていること (homebrew からインストールできます)
- [Windowsの場合]
- フォント Meiryo_Ke* 系が入っていること
- フォント Inconsolata が入っていること
- cmigemo.exe にパスが通っており、C:/cmigemo/dict/utf-8/migemo-dict に辞書ファイルが置かれていること
- Windows でも Mac でも Linux でも動く(多分)
- コンソールでも GUI でも動く(多分)
設定ファイル
ファイル構成
[Mac や Linuxの場合]
~/.emacs ├── init.el ├── common.el └── x11.el |
[Windows の場合]
[Emacsのディレクトリ]\bin\.emacs ├── init.el ├── common.el └── x11.el |
設定ファイル
[init.el]
(cond ((equal window-system nil) (load "~/.emacs.d/common.el")) ((equal system-type 'gnu/linux) (load "~/.emacs.d/x11.el") (load "~/.emacs.d/common.el")) ((equal system-type 'windows-nt) (load "~/.emacs.d/x11.el") (set-face-attribute 'default nil :family "Inconsolata" :height 135) (set-fontset-font nil 'japanese-jisx0208 '("MeiryoKe_Gothic" . "iso10646-1")) (set-fontset-font nil 'japanese-jisx0212 '("MeiryoKe_Gothic" . "iso10646-1")) (setq migemo-dictionary "C:/cmigemo/dict/utf-8/migemo-dict") (setq migemo-command "cmigemo") (load "~/.emacs.d/common.el")) ((equal system-type 'darwin) (load "~/.emacs.d/x11.el") (set-frame-font "Ricty 16") (setq migemo-dictionary "/usr/local/share/migemo/utf-8/migemo-dict") (setq migemo-command "/usr/local/bin/cmigemo") (load "~/.emacs.d/common.el"))) |
[common.el]
;; default char encoding system as utf-8 (set-default-coding-systems 'utf-8) ;; enable 'package' and add package repositories (require 'package) (add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/")) (add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/")) (package-initialize) ; region coloer enable (global-font-lock-mode t) ;; C-c c to compile ;; C-c n to next-error (define-key mode-specific-map "c" 'compile) (define-key mode-specific-map "n" 'next-error) ;; C-c n to find file (define-key mode-specific-map "n" 'find-name-dired) ;; C-c g to goto line (define-key mode-specific-map "g" 'goto-line) ;; do not show startup-message (setq inhibit-startup-message t) ;; C-k to remove all of the line (setq kill-whole-line t) ;; C-h to type "backspace" key (keyboard-translate ?\C-h ?\C-?) ;; do not make backup file (name starts with "#") (setq make-backup-files nil) (setq auto-save-default nil) ;;BEEP disable (setq ring-bell-function 'ignore) ;; scroll each line (setq vertical-centering-font-regexp ".*") (setq scroll-conservatively 35) (setq scroll-margin 0) (setq scroll-step 1) ;; set tab width 4 (setq-default tab-width 4) (setq default-tab-width 4) ;; display corresponding parens (show-paren-mode 1) ;;quickly key stroke (setq echo-keystroke 0.1) ;; yes-no -> y-n (defalias 'yes-or-no-p 'y-or-n-p) ;; show current time in the mode line (setq display-time-24hr-format t) (setq display-time-day-and-date t) (setq display-time-string-forms '(24-hours ":" minutes)) (display-time-mode t) ;; always enable region color (setq transient-mark-mode t) ;; delete old back up files automatically (setq delete-old-versions t) ;; open *.emacs files as elisp-mode (setq auto-mode-alist (cons '("\\.emacs" . emacs-lisp-mode) auto-mode-alist)) ;; show functions name where the cursor is (which-function-mode 1) ;; do not distingish letter case (setq completion-ignore-case t) (setq read-file-name-completion-ignore-case t) (setq read-buffer-completion-ignore-case t) ;; display batery status (require 'battery) (display-battery-mode t) ;; enter fullscreen mode with "Alt+RET" (global-set-key (kbd "M-RET") 'toggle-frame-fullscreen) ;; indenting switch (c-set-offset 'case-label '+) (require 'helm-config) (helm-mode 1) (define-key global-map (kbd "M-x") 'helm-M-x) (define-key global-map (kbd "C-x C-r") 'helm-recentf) (define-key global-map (kbd "C-c f") 'helm-recentf) (define-key global-map (kbd "M-y") 'helm-show-kill-ring) (define-key global-map (kbd "C-c i") 'helm-imenu) (define-key global-map (kbd "C-x b") 'helm-buffers-list) (define-key global-map (kbd "M-r") 'helm-resume) (define-key global-map (kbd "C-M-h") 'helm-apropos) (define-key helm-map (kbd "C-h") 'delete-backward-char) (define-key helm-find-files-map (kbd "C-h") 'delete-backward-char) (define-key helm-find-files-map (kbd "TAB") 'helm-execute-persistent-action) (define-key helm-read-file-map (kbd "TAB") 'helm-execute-persistent-action) ; enable migemo wher package is installed (when (require 'migemo nil t) (setq migemo-options '("-q" "--emacs")) (setq migemo-user-dictionary nil) (setq migemo-regex-dictionary nil) (setq migemo-coding-system 'utf-8-unix) (load-library "migemo") (migemo-init)) ;; enable dired-alternate-file (put 'dired-find-alternate-file 'disabled nil) ;; wdired (require 'wdired) (define-key dired-mode-map "r" 'wdired-change-to-wdired-mode) ;; open the file in another buffer, but directory (defun dired-open-in-accordance-with-situation () (interactive) (let ((file (dired-get-filename))) (if (file-directory-p file) (dired-find-alternate-file) (dired-find-file)))) ;; use dired-find-alternate-file (define-key dired-mode-map (kbd "RET") 'dired-open-in-accordance-with-situation) (define-key dired-mode-map (kbd "a") 'dired-find-file) ;; web-mode (require 'web-mode) (add-to-list 'auto-mode-alist '("\\.html?\\'" . web-mode)) (add-to-list 'auto-mode-alist '("\\.php?\\'" . web-mode)) ; auto-complete (require 'auto-complete-config) (ac-config-default) ; global auto-complete (global-auto-complete-mode t) ;; shell pop (require 'shell-pop) (custom-set-variables '(shell-pop-shell-type (quote ("ansi-term" "*ansi-term*" (lambda nil (ansi-term shell-pop-term-shell))))) '(shell-pop-term-shell "/bin/bash") ; '(shell-pop-universal-key "C-t") '(shell-pop-window-height 60) '(shell-pop-window-position "bottom")) ;; C-c t to use terminal (define-key mode-specific-map "t" 'shell-pop) ;; move to trash instead of remove (setq delete-by-moving-to-trash t) ;; byte-complie automatically (require 'auto-async-byte-compile) (setq auto-async-byte-compile-exclude-files-regexp "~/tmp/") (add-hook 'emacs-lisp-mode-hook 'enable-auto-async-byte-compile-mode) ;; open-junk-file (require 'open-junk-file) (define-key mode-specific-map "o" 'open-junk-file) ; add newline to bottom of file (setq require-final-newline t) ; do not add newline with "C-n" (setq next-line-add-newlines nil) (setq c-mode-hook '(lambda () (c-set-style "java"))) |
[x11.el]
;; 余計な物を表示しない (tool-bar-mode -1) (scroll-bar-mode -1) (menu-bar-mode -1) ;; マウスホイール有効 (mouse-wheel-mode t) (setq mouse-sheel-follow-mouse t) (setq mouse-wheel-progressive-speed nil) ;; クリップボード共有 (setq x-select-enable-clipboard t) ;; カーソルの設定 (set-cursor-color "blue") (setq blink-cursor-interval 0.7) (setq blink-cursor-delay 1.0) (blink-cursor-mode 1) ;; 全角スペースなどを可視化 (defface my-face-b-1 '((t (:background "medium aquamarine"))) nil) (defface my-face-u-1 '((t (:foreground "SteelBlue" :underline t))) nil) (defvar my-face-b-1 'my-face-b-1) (defvar my-face-u-1 'my-face-u-1) (defadvice font-lock-mode (before my-font-lock-mode ()) (font-lock-add-keywords major-mode '( ("¡¡" 0 my-face-b-1 append) ("[ ]+$" 0 my-face-u-1 append) ))) (ad-enable-advice 'font-lock-mode 'before 'my-font-lock-mode) (ad-activate 'font-lock-mode) (add-hook 'find-file-hooks '(lambda () (if font-lock-mode nil (font-lock-mode t))) t) ;; ダークテーマを適用 (load-theme 'wombat t) ;; helm-find-file の色がダークテーマと相性が悪いので変更 (custom-set-faces '(helm-buffer-file ((t (:inherit font-lock-builtin-face :foreground "ivory")))) '(helm-ff-directory ((t (:background "LightGray" :foreground "ivory")))) '(helm-ff-file ((t (:inherit font-lock-builtin-face :foreground "ivory"))))) ;; YaTeX モード (add-to-list 'load-path "~/.emacs.d/yatex") (setq auto-mode-alist (cons (cons "\\.tex$" 'yatex-mode) auto-mode-alist)) (autoload 'yatex-mode "yatex" "Yet Another LaTeX mode" t) (setq YaTeX-inhibit-prefix-letter t) ; disable auto paren close (setq YaTeX-close-paren-always 'never) ; set template file (setq YaTeX-template-file "~/.emacs.d/yatex/template.tex") ;; 以下、YaTeX モードで自動的に句読点をカンマ・ピリオドに変換する処理 ;;選択範囲内の全角英数字を半角英数字に変換 (defun hankaku-eisuu-region (start end) (interactive "r") (while (string-match "[0-9A-Za-z]+" (buffer-substring start end)) (save-excursion (japanese-hankaku-region (+ start (match-beginning 0)) (+ start (match-end 0)) )))) ;;バッファ全体の全角英数字を半角英数字に変換 (defun hankaku-eisuu-buffer () (interactive) (hankaku-eisuu-region (point-min) (point-max))) ;;YaTeXモードの時にのみ動作させる用に条件分岐 (defun replace-commaperiod-before-save-if-needed () (when (memq major-mode '(yatex-mode)) (replace-commaperiod-buffer)(hankaku-eisuu-buffer))) ;;保存前フックに追加 (add-hook 'before-save-hook 'replace-commaperiod-before-save-if-needed) |
この記事を書いた人
- まだまだ気持ちは新人です。
最近書いた記事
- 2018.03.23Windows のコンソールを使いやすくしよう
- 2018.02.23GitHubでPullRequestが出ると、Jenkinsでテストした後でEC2に自動デプロイする設定を行った
- 2018.02.21Jenkins にパラメータを渡して、Packer で引数付きビルドを行う
- 2018.01.10それ、キーボードマクロで出来ますよ(Emacs)