MEEP Comparison with Other Model Editing Systems

Since adopting a modal-editing system can be a significant undertaking: this page aims to differentiate MEEP from other modal editing systems available for Emacs.

While this document compares MEEP with other systems, I would like to acknowledge that those systems are much more mature.

Furthermore, they have their strengths. The intent of this page is to help users know if MEEP is something they might wish use, not to diminish the work of others.

Comparison with Evil Mode

Similarities:

  • Most actions take a similar number of key-strokes. it’s possible to change a word, change a whole word, change 3 whole words… etc.

  • Persistent Selection.

    In both cases selection is explicitly enabled and disabled, the selection (visual) state can have it’s own key-map.

  • “repeat” functionality.

    MEEP’s repeat is similar to evil-modes where it’s possible to repeat an insertion or a change which may be made up of multiple key-strokes.

Differences:

  • Order of Motion / Action

    With VIM the motion is performed after a key to perform the action. With MEEP the motion is performed first, see the overview for details.

  • Key-map Layout

    VIM uses mnemonics for key-binding locations (I for Insert, C for change .. etc), where as MEEP uses the physical location on the keyboard.

    This allows key binding locations to be optimized for:

    • Distribute actions between the left and right hand.

    • Move frequently used actions to the home row.

    • Order sequential actions to take advantage of “finger roll”.

    • Bindings for insert mode.

      VIM uses many keys to enter insert mode (i, a, s, o) all enter insert mode in slightly different ways. By comparison, MEEP uses:

      • A key to enter insert mode.

      • A “leader” key with insertions placed based on HJKL directions.

Comparison with Meow

In many ways, MEEP is quite similar to Meow.

Similarities:

  • Similar goal & approach: To provide a modal editing system that fits in with Emacs built-in behavior instead of attempting to apply more rigid control over behavior.

  • The user is expected to set their own key-map, with suggested default provided.

  • Support for a Key-Pad to support key binding sequences more easily.

  • The default key-map mainly uses alphanumeric keys with Shift, none of the bindings use Control or Alt, allowing Emacs default bindings to co-exist.

Differences:

  • Persistent Selection

    In Meow holding shift with a motion selects text and moving the cursor can drop the selection. With MEEP selection is explicitly enabled & disabled.

    This has the implications that Shift can be used to map additional actions, and motions without Shift held don’t “drop” the selection.

  • Macros/Repeating Actions

    In Meow beacon-mode to apply an action in multiple places (similar to multiple cursors).

    By comparison, MEEP relies on repeating the last edit, where more involved multi-step edits require regular macro record & replay.

  • Visual Feedback

    Meow shows overlays after cursor motion, to indicate the number that can be used to extend the motion.

    MEEP by comparison doesn’t use any visual feedback although it could be optionally supported.

  • Search

    Meow implements it’s own “visit” functionality, MEEP uses ISearch.

  • Key-bindings

    Meow makes use of re-mapping key-strokes to Emacs default bindings. This can cause problems if users have disabled or remapped those bindings.

    MEEP by comparison uses a key-map without depending on other bindings.

  • Key-map Layout

    • Since Shift is not used for selection, holding shift can be used for other bindings.

    • MEEP doesn’t use the SpaceBar in the default key-map.

      The SpaceBar can be used by the user as a leader key, as is common practice for VIM/EvilMode.