avendael/atomic-emacs
{ "createdAt": "2014-02-27T19:36:21Z", "defaultBranch": "master", "description": "An atomic implementation of emacs keybindings for the Atom text editor.", "fullName": "avendael/atomic-emacs", "homepage": null, "language": "CoffeeScript", "name": "atomic-emacs", "pushedAt": "2020-06-05T14:55:25Z", "stargazersCount": 205, "topics": [], "updatedAt": "2025-11-16T20:27:41Z", "url": "https://github.com/avendael/atomic-emacs"}Atomic Emacs
Section titled “Atomic Emacs”Emacs keybindings for Atom.
Installation
Section titled “Installation”On the command line:
apm install atomic-emacs
Or in Atom:
- In
Preferences, click theInstalltab. - Type
atomic-emacsin the search box, and click thePackagesbutton. - Click
Installon theatomic-emacspackage.
There’s no need to restart Atom.
Commands
Section titled “Commands”Navigation
Section titled “Navigation”'ctrl-b': 'atomic-emacs:backward-char''left': 'atomic-emacs:backward-char''ctrl-f': 'atomic-emacs:forward-char''right': 'atomic-emacs:forward-char''alt-b': 'atomic-emacs:backward-word''alt-left': 'atomic-emacs:backward-word''alt-f': 'atomic-emacs:forward-word''alt-right': 'atomic-emacs:forward-word''ctrl-alt-b': 'atomic-emacs:backward-sexp''ctrl-alt-f': 'atomic-emacs:forward-sexp''ctrl-alt-p': 'atomic-emacs:backward-list''ctrl-alt-n': 'atomic-emacs:forward-list''alt-{': 'atomic-emacs:backward-paragraph''alt-}': 'atomic-emacs:forward-paragraph''alt-m': 'atomic-emacs:back-to-indentation''ctrl-a': 'editor:move-to-beginning-of-line''alt-<': 'core:move-to-top''alt->': 'core:move-to-bottom'Killing & Yanking
Section titled “Killing & Yanking”'alt-backspace': 'atomic-emacs:backward-kill-word''alt-delete': 'atomic-emacs:backward-kill-word''alt-d': 'atomic-emacs:kill-word''ctrl-k': 'atomic-emacs:kill-line''ctrl-w': 'atomic-emacs:kill-region''alt-w': 'atomic-emacs:copy-region-as-kill''ctrl-alt-w': 'atomic-emacs:append-next-kill''ctrl-y': 'atomic-emacs:yank''alt-y': 'atomic-emacs:yank-pop''alt-shift-y': 'atomic-emacs:yank-shift'Note that Atomic Emacs does not (yet) support prefix arguments, so to rotate the
kill ring forward, use yank-shift (equivalent to yank-pop in Emacs with a
prefix argument of -1).
Editing
Section titled “Editing”'alt-\\': 'atomic-emacs:delete-horizontal-space''alt-^': 'atomic-emacs:delete-indentation''ctrl-o': 'atomic-emacs:open-line''alt-space': 'atomic-emacs:just-one-space''ctrl-x ctrl-o': 'atomic-emacs:delete-blank-lines''ctrl-t': 'atomic-emacs:transpose-chars''alt-t': 'atomic-emacs:transpose-words''ctrl-alt-t': 'atomic-emacs:transpose-sexps''ctrl-x ctrl-t': 'atomic-emacs:transpose-lines''ctrl-x ctrl-l': 'atomic-emacs:downcase-word-or-region''alt-l': 'atomic-emacs:downcase-word-or-region''ctrl-x ctrl-u': 'atomic-emacs:upcase-word-or-region''alt-u': 'atomic-emacs:upcase-word-or-region''alt-c': 'atomic-emacs:capitalize-word-or-region''ctrl-j': 'editor:newline''ctrl-m': 'editor:newline''ctrl-/': 'core:undo''ctrl-_': 'core:undo''ctrl-x u': 'core:undo''alt-/': 'atomic-emacs:dabbrev-expand''alt-?': 'atomic-emacs:dabbrev-previous''alt-q': 'autoflow:reflow-selection''alt-;': 'editor:toggle-line-comments''ctrl-alt-\\' : 'editor:auto-indent'Searching
Section titled “Searching”'ctrl-s': 'atomic-emacs:isearch-forward''ctrl-r': 'atomic-emacs:isearch-backward'While searching:
'enter': 'atomic-emacs:isearch-exit''ctrl-m': 'atomic-emacs:isearch-exit''escape': 'atomic-emacs:isearch-cancel''ctrl-g': 'atomic-emacs:isearch-cancel''ctrl-s': 'atomic-emacs:isearch-repeat-forward''ctrl-r': 'atomic-emacs:isearch-repeat-backward''alt-s c': 'atomic-emacs:isearch-toggle-case-fold''alt-c': 'atomic-emacs:isearch-toggle-case-fold''alt-s r': 'atomic-emacs:isearch-toggle-regexp''alt-r': 'atomic-emacs:isearch-toggle-regexp''ctrl-w': 'atomic-emacs:isearch-yank-word-or-character'Marking & Selecting
Section titled “Marking & Selecting”'ctrl-space': 'atomic-emacs:set-mark''ctrl-alt-space': 'atomic-emacs:mark-sexp''ctrl-x h': 'atomic-emacs:mark-whole-buffer''ctrl-x ctrl-x': 'atomic-emacs:exchange-point-and-mark''ctrl-g': 'core:cancel''ctrl-x ctrl-s': 'core:save''ctrl-x ctrl-w': 'core:save-as''alt-x': 'command-palette:toggle''alt-.': 'symbols-view:go-to-declaration''ctrl-x ctrl-c': 'application:quit''ctrl-x ctrl-f': 'atomic-emacs:find-file''ctrl-x b': 'fuzzy-finder:toggle-buffer-finder''ctrl-x k': 'core:close''ctrl-x 0': 'pane:close''ctrl-x 1': 'atomic-emacs:close-other-panes''ctrl-x 2': 'pane:split-down''ctrl-x 3': 'pane:split-right''ctrl-x o': 'window:focus-next-pane'Other Packages
Section titled “Other Packages”For a more Emacs-like version of find-file, install
advanced-open-file. Atomic
Emacs will use that package if it exists by default instead of Atom’s
fuzzy-finder. This may be disabled in settings, but note that fuzzy-finder
cannot create new files.
Extending Atomic Emacs
Section titled “Extending Atomic Emacs”Atomic Emacs exposes its core classes via a consumable service. For example, here’s how you could extend it to add subword navigation:
~/.atom/init.coffee:
atom.workspace.packageManager.serviceHub.consume "atomic-emacs", "^0.13.0", (service) -> window.emacs = service
forwardSubword = (event) -> emacsEditor = emacs.getEditor(event) emacsEditor.moveEmacsCursors (emacsCursor) -> emacsCursor.skipNonWordCharactersForward() emacsCursor.cursor.moveToNextSubwordBoundary()
backwardSubword = (event) -> emacsEditor = emacs.getEditor(event) emacsEditor.moveEmacsCursors (emacsCursor) -> emacsCursor.skipNonWordCharactersBackward() emacsCursor.cursor.moveToPreviousSubwordBoundary()
atom.commands.add 'atom-text-editor', 'me:forward-subword', (event) -> forwardSubword(event)atom.commands.add 'atom-text-editor', 'me:backward-subword', (event) -> backwardSubword(event)~/.atom/keymap.cson:
'atom-text-editor': 'ctrl-left': 'me:backward-subword' 'ctrl-right': 'me:forward-subword'If you’re writing an extension package, consume the service as described in the [Atom Flight Manual][atom-flight-manual].
[atom-flight-manual] !: https://flight-manual.atom.io/behind-atom/sections/interacting-with-other-packages-via-services/
Documentation for the Atomic Emacs core classes is sparse, but a common starting point is to get the EmacsEditor for the event as above. The EmacsEditor and EmacsCursor classes in the Atomic Emacs source should be fairly easy to follow.
Something missing?
Section titled “Something missing?”Feel free to suggest features on the Github issue tracker, or better yet, send a pull request!
Windows Note
Section titled “Windows Note”Some common Emacs keystrokes conflict with the default key bindings on Atom for
Windows in unexpected ways. For example, ctrl-k (kill-line on emacs) is a
prefix key for a set of pane management commands in Atom for Windows. The result
is that after pressing ctrl-k, Atom will wait for 2 seconds to determine if it
should treat this as a full command, or the beginning of another command, making
kill-line feel “slow”.
You can of course disable this by disabling the all built-in key bindings that
start with ctrl-k in your keymaps.config file. You can also do this a little
easier with the [disable-keybindings][disable-keybindings] package.
[disable-keybindings] !: https://atom.io/packages/disable-keybindings
Contributing
Section titled “Contributing”- Bug reports
- Source
- Patches: Fork on Github, send pull request.
- Include tests where practical.
- Leave the version alone, or bump it in a separate commit.