ThinkPad X1 Carbonをカスタマイズする (Emacs編)
Table of Contents
インストールと起動
- GNU Emacs から、Windows版 をダウンロード。 今回は emacs-25.2-x86_64.zip にした。 zipを展開して、適当な場所に保存。
Windows emacsの実行exeは 「emacs-XX/bin/runemacs.exe」。 これをショートカットにしてクリック起動でも良いが、 Windowsキー → "emacs" → [RET] で起動できるようにしたい。
ここ(ITpro) を参考にして、設定を行った。
設定
はじめに
フォントから パッケージまで、全て 設定ファイルに手書きしても良いが。 (そこまでemacs-lisp に詳しくないので)GUIで出来る部分はGUIでささっと設定する。
[Option] タブから以下、設定した。
- [Highlight Matching Parentheses] (対応する括弧をハイライト) をONに。
- [Show/Hid] タブより
- [Tool-bar] をOFFに。
- [Time,Load and Mail] をONに。
- [Column Numbers] をONに。
- [Set Default Font] でフォントを「IPAゴシック」に設定する。
- 設定が終わったら [Save Options] で設定を保存。 (好みに合わせて他の設定もいじってみてください)
IPAゴシックについて
IPAが公開している等幅フォント (https://ipafont.ipa.go.jp)。 org-mode で表を使用するときに、等幅フォントだと全角半角混じりでも 表の体裁が崩れない。
同じ等幅フォントとして、Myrica (https://myrica.estable.jp/)もある。 縦棒 (|)の表記が個人的に好きでは無かったので、今回はIPAゴシックを選択した。
有料だが、個人的にはHGゴシックM がおすすめ。 社用PCはこちらにしている。
http://designpocket.jp/dl_font_category/detail.aspx?bid=19951
.emacs
先程設定した情報は、
%USERPROFILE%/AppDara/Roaming (大体 /Users/%USERNAME%/AppData/Roaming)
配下に .emacsファイルとして保存されている。
この .emacsファイルに追加の設定を加えていく。
非パッケージ、一般
;; --- general ---
;; デフォルトエンコードを utf-8にする
(set-default-coding-systems 'utf-8-dos)
;; 起動時の Emacsロゴ等、メッセージを出ないようにする
(setq inhibit-startup-message t)
;; メッセージ音を出さないようにする
(set-message-beep 'silent)
;; C-x C-k (Ctrl押しながら "xk") で現在のバッファを閉じる
;; 通常は C-x k (Ctrl押しながら "x"、その後 "k"押下)
(defun my-kill-current-buffer ()
(interactive)
(kill-buffer (current-buffer)))
(define-key global-map (kbd "C-x C-k") 'my-kill-current-buffer)
;; 行頭で C-k (kill-line) で行ごと削除する
(setq kill-whole-line t)
;; 左端に行数を表示させる + 色の設定
(global-linum-mode t)
(set-face-attribute 'linum nil
:foreground "#fe4b4b"
:height 0.9)
;; C-Return でCUAモード (矩形選択などができる)
(cua-mode t)
(setq cua-enable-cua-keys nil)
;; 初期状態の C-hは help起動
;; これを バックスペースにする
(global-unset-key (kbd "C-h"))
(global-set-key (kbd "C-h") 'delete-backward-char)
;; 初期状態の C-l は recenter (スクリーンを再描画してカレント行を中央に置く)
;; 個人的に使用しないコマンドなので解除、よく使うコマンドに割り当てる
(global-unset-key (kbd "C-l"))
;; --- 選択範囲の文字置換
(global-set-key (kbd "C-l C-l") 'replace-string)
;; --- 選択範囲の文字置換 (正規表現)
(global-set-key (kbd "C-l C-p") 'replace-regexp)
;; --- マクロ関係
(global-set-key (kbd "C-l C-8") 'kmacro-start-macro)
(global-set-key (kbd "C-l C-9") 'kmacro-end-macro)
(global-set-key (kbd "C-l C-,") 'kmacro-end-and-call-macro)
;; 個人的に入れたパッケージの保存場所を load-pathに追加
;; 参考: http://www.math.s.chiba-u.ac.jp/~matsu/emacs/emacs-aux.html
(setq load-path (cons "c:/Users/MY_USER_NAME/emacs/my_packages/" load-path))
tabbar パッケージ
tabbar パッケージ は開いているバッファをタブで表示してくれる。
- emacswiki: tabbar.el から tabbar.el をダウンロード。
tabbar.el をload-path が通っている
c:/Users/MY_USER_NAME/emacs/my_packages/
に移動。 (非パッケージの設定 参照) - 設定を .emacs に追加。 (参考: https://www.yokoweb.net/2017/03/17/emacs-tabbar/)
以下、設定
(require 'tabbar)
(tabbar-mode)
;; Alt-[ で次のタブ、 Alt-] で前のタブ
(global-set-key "\M-[" 'tabbar-forward)
(global-set-key "\M-]" 'tabbar-backward)
;; タブ上でマウスホイールを使わない
(tabbar-mwheel-mode nil)
;; グループを使わない
(setq tabbar-buffer-groups-function nil)
;; 左側のボタンを消す
(dolist (btn '(tabbar-buffer-home-button
tabbar-scroll-left-button
tabbar-scroll-right-button))
(set btn (cons (cons "" nil)
(cons "" nil))))
;; 色設定
(set-face-attribute ; バー自体の色
'tabbar-default nil
:height 0.8)
(set-face-attribute ; アクティブなタブ
'tabbar-selected nil
:background "#f4a460"
:foreground "#000000"
:weight 'bold
:box nil)
(set-face-attribute ; 非アクティブなタブ
'tabbar-unselected nil
:background "#eaeaea"
:foreground "#000000"
:box nil)
;; タブの表示設定
(defun my-tabbar-buffer-list ()
(delq nil
(mapcar #'(lambda (b)
(cond
;; Always include the current buffer.
((eq (current-buffer) b) b)
((buffer-file-name b) b)
((char-equal ?\ (aref (buffer-name b) 0)) nil)
((equal "*Help*" (buffer-name b)) b) ; *Help*バッファは表示する
((equal "*shell*" (buffer-name b)) b) ; *shell*バッファは表示する
((equal "*scratch*" (buffer-name b)) b) ; *scratch*バッファは表示する
((char-equal ?* (aref (buffer-name b) 0)) nil) ; それ以外の * で始まるバッファは表示しない
((buffer-live-p b) b)))
(buffer-list))))
(setq tabbar-buffer-list-function 'my-tabbar-buffer-list)
org-mode
org-mode (https://orgmode.org/ja/index.html)は emacs のモードの1つ。
アウトライン機能やタスク管理機能を持っていて、普段のメモ書きや、
タスク管理、プロジェクトの工数管理など、 なんでもできる 。
;; 不要な *(アスタリスク)を表示しない
(setq org-hide-leading-stars t)
不具合対処
起動時に半角全角が効かない問題
Emacs 起動時に 半角全角を押しても、IMEが日本語入力にならない現象があった。
https://github.com/chuntaro/NTEmacs64/issues/3#issuecomment-252144335
上記サイトのとおりに設定して、解決した。