Mac で emacs を使ってみる 2020年度版

2020年2月14日

macOS 10.15 Catalina から、それまでインストールされていた emacs がインストールされなくなった。
 emacs というのは、

  • テキストエディタである。
  • 環境ともいわれている。
  • かなり古くからある。
  • おびただしいユーザがいる。
  • vi と戦争している。

筆者が知っているのはこれくらいである。
 とりあえず、Markdown でブログの記事を書けるくらいまでを目標として emacs を使ってみたい。

インストール

Homebrew でインストールできる。

brew cask install emacs

下記サイトからダウンロードしてインストールしてもいいみたいだ。

🔗 GNU Emacs For Mac OS X

起動

アプリ本体をクリックすれば起動できる。
 ランチパッドにも表示される。

ターミナルからも起動できる。

emacs

だけでもいいし、

emacs path/to/ファイル.txt

とやれば、目的のファイルを直接開くことが出来る。

使い方

基本的な使い方はチュートリアルで一発だ。
 日本語のチュートリアルは、メニューバーの「Help」>「Emacs Tutorial (choose language) 」で選択できる。ウィンドウの一番下の領域に「Japanese」と打ちこむだけだ。ちなみに、「jap」まで打ちこんでスペースキーを押すと補完してくれる。
 なんかフレンドリーなチュートリアルで、そんなに長いものではない。これはやっておいたほうが良さげ。

ウィンドウの一番下の領域はミニバッファというらしい。
 編集する文書はバッファと呼ばれている。

操作で困ったことになったら [ctrl] + [ g ] でキャンセルできる。
 emacs を終了する場合は [ctrl] + [ x ] と入力したあと、[ctrl] + [ c ]。
 これらのキー操作は、emacs 界においては C-g、C-x C-c などとあらわされる。

大文字の C はコントロールキーをあらわす。また大文字の M というのもよく出てくるのだが、これはメタキーのことで Mac ではオプションキーにあたる。M-x とあったら、オプションキーを押しながら x を押す、という意味になる。

日本語の入力は C-\ で、「input method」に「japanese」と打ちこめば出来るようになる。
 ふつうに、OS の日本語入力プログラム(ことえり)とかでも打ちこめるのだが、やけにカーソルがチラついて実用的ではない。

Package.el

日本語の入力に SKK を使うことにする。emacs といえば SKK の本場だ。emacs 内では ddskk というのが使われるようだ。macOS で動く AquaSKK でも日本語入力できなくはないのだが、上述したようにカーソルの挙動が変になってしまう。

2020 年 1 月、emacs 26.3 においては、ddskk は package.el というプログラムで簡単に導入できる。
 package.el は emacs 内における homebrew みたいなもんらしい。
 実行すると、いろんな機能拡張をインストールできる。
 インストールできるパッケージのリストは M-x を押してからpackage-list-packagesと入力すると、ずらずらっと表示される。

とされているのだが、筆者はここでつまずいて二日ほど悩んだ。
 なにをやっても ddskk がパッケージのリストに出てこないのである。

結論としては、以下の設定を~/.emacsに書く。
 C-x C-f ~/.emacsという感じでファイルを作れるはずだ。

📝 ~/.emacs

(package-initialize)
(setq package-archives
      '(("gnu" . "http://elpa.gnu.org/packages/")
        ("melpa" . "http://melpa.org/packages/")))

筆者は、package.el の設定を~/.emacs.d/init.el内に書きこんで、ああでもない、こうでもないと悩んでいた。いろいろなブログの記事を参考にしてそのようにしていたのだが、emacs とか linux の界隈では、init.el に書いて駄目な時は .emacs に書く、というのが常識らしい。

筆者の環境だけの話かもしれないし、あるいは Mac だけの話なのかもしれないが、少なくとも筆者の emacs は~/.emacs.d/init.elを読んでない気配である。

追記

以上は間違いで、やはり ~/emacs.d/init.el に設定を書くのが正しいみたいだ。そのように推奨されている、と読んだ。init.el に書いた設定を反映させるには、~/.emacs に、

(load "~/.emacs.d/init.el")

と、書けばいいのだ。知らんかった。追記は以上。20.02.14。

どうであれ、.emacs に上記の設定を書いてから、M-x package-list-packagesを実行すると、物凄い量のパッケージが返ってくる。

このパッケージ・リストからインストールしたいプログラムを探す。
 [ n ]キーで下、[ p ]キーで上に移動できる。
 [ f ]キーを押せば検索できるので、ddskk と打ちこんで検索し、[ i ]キーでインストールのマークをつける。[ x ]キーを押せば、i マークをつけたプログラムのインストールが実行される。
 [ q ]キーでパッケージ管理画面の終了となる。
 操作については、下記の記事の中頃の一覧が役に立つ。

🔗 package.el | Emacs JP

ddskk

インストールが完了したら、emacs を再起動して試してみる。
 M-x skk-modeで ddskk を起動できる。
 試してみると、さすが本家。かなりいい。特に、ひらがなモードやカタカナモードの時、カーソルの色が変わるっていうのがいい。SKK の出来がいいとキーボードを打つのが楽しくなってくる。

.emacs に下記のように記述すると、C-x C-j で起動できるようになる。

📝 ~/.emacs

;; skk
(require 'skk-autoloads)
(global-set-key "\C-x\C-j" 'skk-mode)

SKKの設定は~/.skkに書くらしい。
 詳しいことは下記の skk のマニュアルにある。

🔗 SKK Manual

マニュアルを参考に、AZIK を設定してみた。

📝 ~/.skk

;; AZIK
(setq skk-use-azik t)
(setq skk-azik-keyboard-type 'us101)

skk-azik-keyboard-type は使っているキーボードの配列の指定で、us101 というのは英語配列という意味である。
 AquaSKK を使っているなら、辞書を共有できる。下記ブログさまの記事から引かせていただく。
  
🔗 僕の ddskk の設定です。 – 日々、とんは語る。

📝 ~/.skk

;; 辞書
(setq skk-large-jisyo "~/Library/Application Support/AquaSKK/SKK-JISYO.L")
(setq skk-server-host "localhost") ; AquaSKK のサーバー機能を利用
(setq skk-server-portnum 1178)       ; ポートは標準
(setq skk-share-private-jisyo t)   ; 複数 skk 辞書を共有

;; 動作
(setq skk-egg-like-newline t)          ; Enterで改行しない


;; 言語
(setq skk-japanese-message-and-error t) ; エラーを日本語に
(setq skk-show-japanese-menu t)            ; メニューを日本語に

これでかなり使いやすくなった。

markdown-mode

素のままの emacs でも markdown で文書を書くことは出来る。
 ただちょっと殺風景だ。やっぱりシンタックスカラーをつけたくなる。
 チュートリアルにも出てきたが、emacs ではモードというもので文書を色づけできる。
 例えばM-x html-modeを実行すると、html 文書を編集するモードに入れる。
 普通のモードに戻るには、M-x Fundamental-modeを実行する。

Package.el を使えば、markdown-mode のインストールは簡単だ。
 M-x package-list-packagesでリストを出して、[ f ]キーで「markdown-mode」を検索し、インストールする。インストールが完了したら、M-x markdown-modeで markdown 文書の編集モードに入れる。

📝 ~/.emacs

(setq auto-mode-alist (cons '("\\.md" . markdown-mode) auto-mode-alist))

上記のように設定すると、.md 文書を編集する時は自動で markdown モードになる。
 細かい使い方は、下記ブログ様の記事が詳しい。またメニューバーにも「markdown」メニューが表示される。

🔗 markdown-modeを入れてみた | Ogalog

その他の設定

その他、いろいろなブログの記事で、便利な設定を勉強させていただきました。
 設定はいずれも ~/.emacs に記述した。

📝 ~/.emacs

;; ctrl-h で削除
(define-key key-translation-map (kbd "C-h") (kbd "<DEL>"))

Mac では [ctrl] + [ h ] はバックスペースで、ひと文字戻って削除となる。
 emacs では C-h でヘルプかなんかだが、これをバックスペースにした。

;; フォントサイズ
(setq default-frame-alist
      (append (list
              '(font . "ヒラギノ角ゴシック-14"))
              default-frame-alist))

フォントが小さいので上記のように設定した。
「フォント名-サイズ」で設定できる。

;; 自動保存されるバックアップファイルの置き場所を ~/.emacs.d/backup に変更する
(setq backup-directory-alist 
  (cons (cons ".*" (expand-file-name "~/.emacs.d/backup")) 
        backup-directory-alist)) 
(setq auto-save-file-name-transforms 
      `((".*", (expand-file-name "~/.emacs.d/backup/") t))) 

emacs を使っていると、いつの間にかいろんなところに自動保存されるファイルが散らかる。
「File.txt~」みたいに、ファイル名の末尾に「 ~ 」がついたファイルが勝手に保存されてちょっと気になる。上記設定は、それを ~/.emacs.d/backup にまとめてくれる。backup フォルダは自分で作る、のかな。よくわからないが、筆者は自分で作った。

;;警告音の代わりに画面を点滅
(setq visible-bell t)

警告音がうるさいので設定してみた。

他にも、emacs においてはメールが読めたり、なんかゲームが出来たりするらしいと筆者は聞いている。org-mode とかいう、文書作成に役立つ途方もない代物があるとも。

🔗 モーレツ! Org mode 教室 その1: 素早くメモを取る – mhatta’s mumbo jumbo

これなんかも試してみたら面白そうだ。

emacs は相当深い感じだ。
 使いこめば使いこむほどなじんでくるやつなのだろう。たぶん、lisp とかを勉強してもっと自分用のものにしていくんだと思う。とはいえ、とりあえずはライトな使い方でやっていこうかな、などと考えている。