Why would I do that?
I use macOS – as evident by my domain. I started using it for university some 20 years ago and never looked back. This is also the case in my work life.
As consequence of this I am quite committed to the macOS keybindings. So starting using Emacs about 2 years ago it was quite clear to me that…
- One, I can’t handle the default keybindings and especially key chords
- And two, I don’t want to retrain my muscle memory
Well since Emacs is incredibly bendy, this was not a hard thing to do.
First things first. This is not about
evil-mode, which I admittedly use instead of the vanilla keybindings for editing text. In this case we are just talking about non-text-editing bindings. Those to call commands, interactive functions, programs, ui navigation etc. Also I got nothing of use to add to the myriad of posts, articles and more about the evil package.
The basis for most or maybe all shortcuts on macOS is the
command key (aka
cmd key; aka
apple key; aka
Say you want to save a file, this would be
⌘-s in most if not all applications. Similarly copy is
⌘-c and paste is
⌘-v. You get the idea. Together with
control (⌃) and
option (⌥) one has access to a whole host of possible combinations.
To be able to put all of this into Emacs-Speak, I adjust one variables:
(customize-set-variable 'mac-command-modifier 'meta) ; make cmd key do Meta
A little snag on the German keyboard on macOS is the fact, that
option is a modifier to get access to special characters. It is but a scratch though. All I have to do is incorporate those characters into my keybinding definitions. I.e.
All of the above translates into the following possible prefixes:
- macOS Keys
- ctrl, option, cmd, ctrl-option, ctrl-cmd, option-cmd, ctrl-option-cmd
With that I rarely use key chords, I rather hold down 3 keys and press another for a keybinding. Like I said, muscle memory.
;; option-c = ç: (global-set-key (kbd "C-M-ç") 'timu/make-capture-frame) ; (ctrl-option-cmd-c) ;; option-w = ∑: (global-set-key (kbd "C-∑") 'writeroom-mode) ; (ctrl-option-w) (define-key vertico-map (kbd "M-v") 'yank) ; (cmd-v) (global-set-key (kbd "M-s") 'save-buffer) ; (cmd-s) (global-set-key (kbd "M-ç") 'org-capture) ; (option-cmd-c)
Is all the fuss changing quite a lot of default bindings worth the hassle?
Since most of my keybindings work in the same manner as the rest of the OS for me, the context switching (from and to Emacs) does not feel much like one.
Plus… Let us be honest. Tweaking Emacs is fun too.