emacsをmacネイティブの動作に近づける

emacsをずっと使ってきた人や,これからあえてemacsを使おうという人には本末転倒な話かもしれない.
方向キーに手を動かすロスをあえて可能にするという無駄な設定なのだが,とはいってもキーボード操作はほとんど言語のように習得しているもので,それをあえて別のものにするより,慣れている配置で使えたほうが短期的には速い.
まあ確かに方向キーは離れているから割と打鍵ミスをするけど,アルファベットキーならその数分の一程度のミス率だろうという気はするので,その意味でそっちに慣れたほうが速いのかもしれないが.

ちなみに,ごく基本的な動作(コピー,貼り付け,保存など)はもともとcmd+のショートカットが効くようになっている.

参考:
Mac なら Emacs は難しくない!Command キーのすすめ。 (フェンリル | デベロッパーズブログ)

カーソルの移動

;; 行頭/行末/先頭/末尾に移動するキーバインドをcmd + 矢印に設定
(define-key global-map (kbd "s-") 'move-beginning-of-line)
(define-key global-map (kbd "s-") 'move-end-of-line)
(define-key global-map (kbd "s-") 'beginning-of-buffer)
(define-key global-map (kbd "s-") 'end-of-buffer)

s- は "super key" だそうで,cmdキーはsuper keyに割り当てられている.
などは矢印のこと.
page up/downとかは最近のmacのキーボードにはついてないので,macのネイティブ動作は存在しないと考えて変えていない.

なお,一般的にキーバインドを変更する設定の書き方は,

(define-key global-map (kbd "keybind") 'command)

とする.
このとき,目的の動作がなんというコマンドで記述されているかを見るためには,

F1 c keybind

で,そのキーバインドに割り当てられた動作のコマンド記述がミニバッファに表示される.

ちなみにもっと細かく,左右のcmdキーに別々の機能を持たせるとかもできるらしい.
参考:
Mac なら Emacs は難しくない!Command キーのすすめ。 (フェンリル | デベロッパーズブログ)
init.el: MacのキーボードでMetaAltSuperHyper - Qiita

optionキーの動作

これは前のエントリでも書いた.

;; optionキーのemacs上の機能を無効化
(setq ns-alternate-modifier 'none)

参考:
macos - emacs上で,ことえりから「.」と「。」を切り替えて入力する方法 - スタック・オーバーフロー

その他

バッファ間の移動はC-x C-oよりControl+tabとかのほうがそれっぽいかも.この場合の設定は,

(define-key global-map (kbd "C-") 'other-window)

取り消しはC-gではなくESCがmacネイティブ的だろうが,そればかりは難しい.