Emacs の設定は ~/.emacs.el に記述します。
日本語環境の最低限の設定は、
(set-language-environment "Japanese")で、良いようですが、これだけでは使いものにならない、と言うか
Emacs23では文字コードがいちいち UTF になってしまったので、euc を使っている私は、
;; coding-system の設定 (set-default-coding-systems 'euc-jp-unix) (setq default-file-name-coding-system 'euc-jp-unix) (setq default-buffer-file-coding-system 'euc-jp-unix) (setq default-terminal-coding-system 'euc-jp-unix) (setq default-keyboard-coding-system 'euc-jp-unix)にしています。
;; load-path の追加 ;; いちいち root になって、システム全体にインストールする必要のない、 ;; 自分だけで使うような elisp は、自分のホームディレクトリに置いてます。 (setq load-path (append '("/home/hoge/site-lisp/my-only/" "/home/hoge/site-lisp/etc/" ) load-path))
;; オープニングメッセージを表示しない (setq inhibit-startup-message t)
;; バックアップファイルを作成しない ;; 危険なので、注意して下さい (setq make-backup-files nil)
;; オートセーブファイルを作成しない ;; 危険なので、注意して下さい (setq auto-save-default nil) (setq auto-save-list-file-name nil) (setq auto-save-list-file-prefix nil)
;; C-k 1回で行全体を削除する (setq kill-whole-line t)
;; 行の最後に来たら、新しい行を作らない (setq next-line-add-newlines nil)
;; 1行づつスクロールする (setq scroll-conservatively 1)
;; 対応する括弧をハイライトする (show-paren-mode 1) ;; 対応する括弧の色の設定 (setq show-paren-style 'mixed) (set-face-background 'show-paren-match-face "grey") (set-face-foreground 'show-paren-match-face "black")
;; カーソル位置の桁数をモードライン行に表示する (column-number-mode 1)
;; カーソル位置の行数をモードライン行に表示する (line-number-mode 1)
;; リージョンを色付きにする (transient-mark-mode 1)
;; cursor の blink を止める (blink-cursor-mode 0)
;; active でない window の空 cursor を出さない (setq cursor-in-non-selected-windows nil)
;; 予約語を色分けする (global-font-lock-mode t)
;; C-x C-b でバッファリストを開く時に、ウィンドウを分割しない (global-set-key "\C-x\C-b" 'buffer-menu)
;; C-h を Backspace として使い、 ;; C-c h を HELP に割当てる (keyboard-translate ?\C-h ?\C-?) (global-set-key "\C-h" nil) (global-set-key "\C-ch" 'help-command)
;; 指定行にジャンプする (global-set-key "\C-xj" 'goto-line)
;; bufferの先頭でカーソルを戻そうとしても音をならなくする (defun previous-line (arg) (interactive "p") (condition-case nil (line-move (- arg)) (beginning-of-buffer)))
;; bufferの最後でカーソルを動かそうとしても音をならなくする (defun next-line (arg) (interactive "p") (condition-case nil (line-move arg) (end-of-buffer)))
;; エラー音をならなくする (setq ring-bell-function 'ignore)
;; C-x C-l で現在行を top にする ;; 元々は C-u 0 C-l ;; ちなみに C-l は現在行を center にする (defun line-to-top-of-window () "Move the line point is on to top of window." (interactive) (recenter 0)) (global-set-key "\C-x\C-l" 'line-to-top-of-window)
;; isearch の文字を取得 ;; C-s した後に C-d すれば search する文字の入力を省けることに。 (defun isearch-yank-char () "Pull next character from buffer into search string." (interactive) (isearch-yank-string (save-excursion (and (not isearch-forward) isearch-other-end (goto-char isearch-other-end)) (buffer-substring (point) (1+ (point)))))) (define-key isearch-mode-map "\C-d" 'isearch-yank-char)
;; キーバインドを変更する ;; 他のキーバインドに影響しないように、あらかじめ、 ;; HELP k (このページの設定では、C-c h k) で確認しておいた方が良いでしょう。 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; C-o (defvar ctl-o-map (make-keymap)) (fset 'ctl-o-prefix ctl-o-map) (define-key global-map "\C-o" 'ctl-o-prefix) ;; 1行空ける (define-key global-map "\C-o\C-i" 'open-line) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; C-q (defvar ctl-q-map (make-keymap)) (fset 'ctl-q-prefix ctl-q-map) (define-key global-map "\C-q" 'ctl-q-prefix) (define-key global-map "\C-q\C-q" 'scroll-down) ;; 例えば C-q C-i C-l で ^L の入力が可能 (define-key global-map "\C-q\C-i" 'quoted-insert) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; C-k (setq kill-whole-line t) (defvar ctl-k-map (make-keymap)) (fset 'ctl-k-prefix ctl-k-map) (define-key global-map "\C-k" 'ctl-k-prefix) ;; 行全体を削除 Emacs22以降で有効 (define-key global-map "\C-k\C-k" 'kill-whole-line) ;; 行全体を削除 Emacs21の場合 (defun kill-all-line (&optional numlines) (interactive) (setq pos(current-column)) (beginning-of-line) (kill-line numlines) (move-to-column pos)) (define-key global-map "\C-k\C-k" 'kill-all-line) ;; カーソル位置より後(右)を削除 (define-key global-map "\C-k\C-e" 'kill-line) ;; カーソル位置より前(左)を削除 (define-key global-map "\C-k\C-a" (lambda ()(interactive)(kill-line 0))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; C-w (defvar ctl-w-map (make-keymap) "keymap for kill or copy region") (fset 'ctl-w-prefix ctl-w-map) (define-key global-map "\C-w" 'ctl-w-prefix) ;; リージョンをコピー (define-key global-map "\C-w\C-w" 'copy-region-as-kill) ;; リージョンを削除 (define-key global-map "\C-w\C-k" 'kill-region) ;; リージョンをコメント/アンコメント (define-key global-map "\C-w\C-c" 'comment-or-uncomment-region) ;; リージョンをインデント (define-key global-map "\C-w\C-i" 'indent-region)
;; メニューバーを消す (menu-bar-mode nil) ;; M-x menu-bar-mode で、メニューバーを表示/非表示
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; C-x b でバッファの内容を表示しながら、バッファを切り替える ;; C-s,C-rで補完候補を選択 (iswitchb-mode 1) (defadvice iswitchb-exhibit (after iswitchb-exhibit-with-display-buffer activate) "選択している buffer を window に表示してみる。" (when (and (eq iswitchb-method iswitchb-default-method) iswitchb-matches) (select-window (get-buffer-window (cadr (buffer-list)))) (let ((iswitchb-method 'samewindow)) (iswitchb-visit-buffer (get-buffer (car iswitchb-matches)))) (select-window (minibuffer-window))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 日本語の locale が設定されている時の dired 対策 (require 'ls-lisp) (defadvice insert-directory (around reset-locale activate compile) (let ((system-time-locale "C")) ad-do-it))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; c-mode のインデントをスペース4個分のタブにする (add-hook 'c-mode-common-hook '(lambda () (c-set-style "k&r") (setq c-basic-offset 4) (setq indent-tabs-mode t) (setq tab-width 4)))