Emacs
MacOSX

[Emacs] MacOSでEmacsを使うときは、バックスラッシュにご注意

More than 1 year has passed since last update.

ひどくハマったのでメモ。

状況

Windows, Linuxでは日本語キーボードの円マーク(¥)の刻印のキーを打鍵すると、
バックスラッシュ\、ASCII 0x5cが出てきますが、フォントによって円マークだったりバックスラッシュだったりします。

ですが、日本語キーボードのMacBookでは、円マークの刻印のキーを打鍵すると本当の(?) ¥、つまりUTF8 0xC2 0xA5 YEN SIGNが出てきます。

私はこれでHaskell コンパイラが謎のエラーを吐いてしまい、45分間これで苦しみました。

解決方法

MacOS

Option + ¥ で、0x5cのバックスラッシュが入力できます。

Emacs

Cocoa Emacsでは、通常Option + ¥では/を入力できません。
¥に対するキーアサインをいじって、/を入力するようにします。

(define-key global-map [?¥] [?\\])  ;; ¥の代わりにバックスラッシュを入力する

http://d.hatena.ne.jp/nekotank/20130628/1372411052 より引用)

上記コードをコピペしたときに意図通り動くかどうかは未確認です
念の為、円マークとバックスラッシュはEmacs以外のところでそれぞれ打ち込んでからyankしたほうが安全です。

参考

Mac Emacs backslashでググるとたくさん出てきますが、以下の2サイトが非常に参考になりました。

追記

保存するときにUTF-8にしないと、文字コード変換によって以下のコードの¥がダメになってしまうことがあるみたいです。

(define-key global-map [?¥] [?\\])

なので、上記コードを.emacs.d/init.el等に保存した場合は、C-x RET f utf-8として、バッファのエンコーディングをUTF-8にしたうえで保存するようにしましょう。

C言語のように数値で¥をする方法があればそれがベストなのですが、
とりあえずファイルローカル変数でファイルエンコーディングを指定する方法で回避できそうです。
http://www.gnu.org/software/emacs/manual/html_node/emacs/Specifying-File-Variables.html

誰かいい方法教えてー