サーバーで最小限のEmacs環境を作りたいときに使うinit.el

なにこれ?

普段、サーバーに入ってちょろっとファイル編集するときに皆さん何使いますか?

会社の同僚はたいていviかVimを使いますが、私はEmacsを使います。

ただ、初期設定だとEmacsは使いづらい、しかしパッケージのインストールなどガリガリ設定するほど使い込むわけではない、という状況でちょっとinit.elにコピペして最低限の挙動だけ良さげにしたい、という時に使うinit.elです。

状況が限定的ですが、割りとあると思います。

見てもらうとわかりますが、本当に基本的な機能のみ修正しているので、使い勝手が劇的に良くなるとかはなく、あくまで未設定のEmacs使うと蕁麻疹でそうな人がギリギリ耐えられる状況を目指しています。

init.elを適用したEmacsの見た目

init.el

;; ------------------------------------------------------------
;; @ basic

;; メニューとツールバー非表示
(tool-bar-mode 0)
(menu-bar-mode 0)

;; スタートアップ画面非表示
(setq inhibit-startup-screen t)

;; scratchの初期メッセージ消去
(setq initial-scratch-message "")

;; カッコの範囲内を強調表示
(show-paren-mode t)
(setq show-paren-delay 0)

;; リージョンのハイライト
(transient-mark-mode 1)

;; クリップボードへのコピー
(setq x-select-enable-clipboard t)

;; 文字の色つけ
(global-font-lock-mode t)

;; タブ文字と全角スペースを可視化
(setq whitespace-style
      '(tabs tab-mark spaces space-mark))
(setq whitespace-space-regexp "\\(\x3000+\\)")
(setq whitespace-display-mappings
      '((space-mark ?\x3000 [?\□])
        (tab-mark   ?\t   [?\xBB ?\t])
        ))
(require 'whitespace)
(global-whitespace-mode 1)
(set-face-foreground 'whitespace-space "LightSlateGray")
(set-face-background 'whitespace-space "DarkSlateGray")
(set-face-foreground 'whitespace-tab "LightSlateGray")
(set-face-background 'whitespace-tab "DarkSlateGray")


;; タブキーでインデントを行います。
(setq c-tab-always-indent t)

;; タブ幅
(setq default-tab-width 4)
(setq-default tab-width default-tab-width)

;; 行数
(global-linum-mode t)
(setq linum-format "%4d ")

;; 日本語環境設定
(set-language-environment 'Japanese)    ; 日本語環境
(set-default-coding-systems 'utf-8-unix)    ; UTF-8 が基本
(set-terminal-coding-system 'utf-8-unix)    ; emacs -nw も文字化けしない
(setq default-file-name-coding-system 'utf-8)
(setq default-process-coding-system '(utf-8 . utf-8))
(prefer-coding-system 'utf-8-unix)

;; 右から左に読む言語に対応させないことで描画高速化
(setq-default bidi-display-reordering nil)

;; 同じ内容を履歴に保存しないようにする
(setq history-delete-duplicates t)

;; ロックファイル / バックアップファイルを作成しない
(setq create-lockfiles nil)
(setq make-backup-files nil)
(setq delete-auto-save-files t)

;; 時間も表示させる。
(setq display-time-24hr-format t) ; 24時表記
(display-time-mode t)

;; 現在行を目立たせる
(setq hl-line-face 'underline)
(global-hl-line-mode)

;; テーマを設定する
(load-theme 'manoj-dark t)

;; diredを便利に
(require 'dired-x)

;; beep音を消す
(setq visible-bel t)
(setq ring-bell-function 'ignore)

;; スクロールは 1 行ごと
(setq mouse-wheel-scroll-amount '(1 ((shift) . 5)))

;; スクロールの加速をやめる
(setq mouse-wheel-progressive-speed nil)

;; 大文字・小文字を区別しない
(setq case-fold-search t)

;; ------------------------------------------------------------
;; @ key-bind

;; C-h でBackspace入力
(keyboard-translate ?\C-h ?\C-?)
(global-set-key "\C-h" nil)

;; C-t でウインドウ切り替え
(define-key global-map (kbd "C-t") 'other-window)

;; globalなC-zを無効化
(global-unset-key "\C-z")

;; C-k で行全体を削除する
(setq kill-whole-line t)