Emacsはデフォルトで設定されている要素や機能が多いエディタです。
例えば、バックアップファイルの自動生成が機能あります。
確かにありがたい反面、index.html
を編集していたら自動的にindex.html~
が生成されるのはちょっと邪魔だったりします。
その他にも、CUI版のemacsではほとんど使わないナビゲーションバーが、デフォルトで表示されています。
この記事では 、おすすめのEmacsの基本設定を紹介します。
これらが、私の基本設定です。
何も設定しないよりかは便利になっていると思います。
~/.emacs.d/init.el
に加えてみてください。
;; 利用する自然言語と文字コードを設定
(set-language-environment "Japanese")
(prefer-coding-system 'utf-8)
;; CUIではメニューバーを消す
(unless (display-graphic-p)
(menu-bar-mode -1))
;; 画面から文字がはみ出す時に表示される$マークを消す。
;; <https://stackoverflow.com/questions/8370778/remove-glyph-at-end-of-truncated-lines>
;; Fixed by <https://lists.gnu.org/archive/html/bug-gnu-emacs/2015-04/msg00964.html>
(make-glyph-code ?\\s 'vertical-border)
(set-display-table-slot standard-display-table 0 ?\\ )
;; 改行の時にバックスラッシュを表示させない
;; <https://www.emacswiki.org/emacs/LineWrap>
(set-display-table-slot standard-display-table 'wrap ?\\ )
;; 行番号を表示
(column-number-mode t)
;; ファイルサイズを表示
(size-indication-mode t)
;; カーソルを括弧に合わせると範囲を表示する
(show-paren-mode t)
;; 範囲表示の遅延を0秒にする
(setq show-paren-delay 0)
;; インデントをタブにするモードを非アクティブ
(setq-default indent-tabs-mode nil)
;; デフォルトタブ幅の設定
(setq default-tab-width 2)
(setq tab-width 2)
;; オートセーブファイルを~/.emacs.d/backups/へ集める
(add-to-list 'backup-directory-alist(cons "." "~/.emacs.d/backups/"))
(setq auto-save-file-name-transforms
`((".*" ,(expand-file-name "~/.emacs.d/backups/") t)))
;; パッケージをインストールした後に自動的に挿入される設定をinit.elからcustom.elに移動させる。
;; <https://qiita.com/javacommons/items/87bebffc4183a48cf070>
(setq custom-file "~/.emacs.d/custom.el")
(condition-case nil
(load custom-file)
(error nil))
;; 利用する自然言語と文字コードを設定
(set-language-environment "Japanese")
(prefer-coding-system 'utf-8)
プログラミングでは半角英数字を利用しますが、markdown、org、Latexみたいに日本語を使う場面もあるのでJapanese
を指定します。文字コードは特に理由がない限りはutf-8
を使います。
;; CUIではメニューバーを隠す
(unless (display-graphic-p)
(menu-bar-mode -1))
emacsのモードがGUIまたはCUIか判定して、CUIならばメニューバーを非表示にします。
emacsをCUI版で利用していると、一行の文字数が長くて画面からはみ出た場合、$
が表示されて、画面外に続いていることを表してれます。ただ、コードでもドルマークを使う言語があり、視認性に問題が出るので非表示にします。
;; 画面から文字がはみ出す時に表示される$マークを消す。
;; https://stackoverflow.com/questions/8370778/remove-glyph-at-end-of-truncated-lines
;; Fixed by https://lists.gnu.org/archive/html/bug-gnu-emacs/2015-04/msg00964.html
(make-glyph-code ?\\s 'vertical-border)
(set-display-table-slot standard-display-table 0 ?\\ )
一行の文字数が長くて画面端で改行するときに、表示されるバックスラッシュを非表示にします。
改行するか、画面外にはみ出させるかの切り替えはM-x toggle-truncate-lines
で切り替えられます。
;; 改行の時にバックスラッシュを表示させない
;; https://www.emacswiki.org/emacs/LineWrap
(set-display-table-slot standard-display-table 'wrap ?\\ )
ファイルをバッファーで開くと、下のモードラインに情報が表示されます。デフォルトだと、カーソルの位置が全体から見て何%の位置にあるかと、カーソルの位置の行番号しか表示されません。
;; 行番号を表示
(column-number-mode t)
;; ファイルサイズを表示
(size-indication-mode t)
ファイルのサイズとカーソルの位置情報がファイルサイズ (行番号, 行の先頭からのカーソルの位置)
という形式で表示されます。
カーソルを括弧に合わせると対応する括弧をハイライトする機能をアクティブにします。
;; カーソルを括弧に合わせると対応する括弧をハイライトする
(show-paren-mode t)
;; 対応する括弧のハイライト表示の遅延を0秒にする
(setq show-paren-delay 0)
emacsのインデントはタブかスペースです。最近はスペース利用が標準になってきたので、改めてインデントはスペースを利用することを宣言します。この設定はemacsの一般的で利用することを規定するだけで、個別のメジャーモードでは別に指定する必要があったりします。例えばjs-modeは改めてjs-mode内でインデントの設定をしないとタブになったりしたはずです。
;; インデントをタブにするモードを非アクティブ
(setq-default indent-tabs-mode nil)
;; デフォルトタブ幅の設定
(setq default-tab-width 2)
(setq tab-width 2)
emacsはファイルを編集していると自動的に同じ場所にファイル名~
というバックアップファイルを作成します。便利は便利なのですが、意図し無いファイルが生まれてしまいプログラムを書くうえではセキュリティ的に問題になったりします。ただバックアップは便利なのでオフにしてしまうのは勿体無いので、専用のbackup
フォルダに格納する設定を記述します。
;; オートセーブファイルを~/.emacs.d/backups/へ集める
(add-to-list 'backup-directory-alist(cons "." "~/.emacs.d/backups/"))
(setq auto-save-file-name-transforms
`((".*" ,(expand-file-name "~/.emacs.d/backups/") t)))
ファイルのバックアップは~/.emacs.d/backups/
に自動的に保存されます。
use-packgeを使っていると、サードパーティ製のパッケージをインストールしたときにvariablesやfacesの設定が自動的にinit.el
に挿入されます。
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(package-selected-packages '(use-package)))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
)
パッケージの設定は自分で記述したいので、自動挿入機能を無効にします。custom.el
へ代わりに自動挿入させることで回避します。
;; パッケージをインストールした後に自動的に挿入される設定をinit.elからcustom.elに移動させる。
;; https://qiita.com/javacommons/items/87bebffc4183a48cf070
(setq custom-file "~/.emacs.d/custom.el")
(condition-case nil
(load custom-file)
(error nil))
個人的には便利機能を無効にしたり、デフォルトで表示されているものを非表示にしたりする設定が多かったです。