evil VS transient

Compare evil vs transient and see what are their differences.

evil

The extensible vi layer for Emacs. (by emacs-evil)

transient

Transient commands (by magit)
Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
evil transient
105 24
3,210 604
2.0% 3.6%
8.0 9.3
25 days ago 7 days ago
Emacs Lisp Emacs Lisp
GNU General Public License v3.0 only GNU General Public License v3.0 only
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

evil

Posts with mentions or reviews of evil. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-02-22.
  • From Doom to Vanilla Emacs
    6 projects | dev.to | 22 Feb 2024
    evil mode
  • Packages that you would like to be in emacs core ?
    10 projects | /r/emacs | 11 Dec 2023
    Since we already have vyper-mode, why not add Evil to the stack?
  • Ask HN: Does anyone Lisp without Emacs?
    4 projects | news.ycombinator.com | 7 Nov 2023
    2 stripe blue belt here! I used to use Vim for everything other than Java development and have now adopted Emacs in the same way. I am using it for Clojure and Common Lisp development along with org mode, irc, rss, git and file management

    I started with Evil mode and then moved to Xah fly keys before sticking to the emacs bindings. Having the caps lock key bound to CTRL helped me a lot. I don't know if it makes that much of a difference for Emacs but using the DVORAK layout has helped my fingers

    There are other bindings you can try like Meow or God mode but I don't know what the adoption rate is like for them. Emacs gives you the flexibility to set it up as you please. As others have mentioned, there may be other keyboard options that might be more helpful as well

    https://github.com/emacs-evil/evil

  • Emacs Is My New Window Manager
    9 projects | news.ycombinator.com | 1 Aug 2023
    If you already know Vim, you should probably not use Emacs without Evil:

    https://github.com/emacs-evil/evil

    It gives you comprehensive Vim bindings so what you need to learn to be comfortable in Emacs is very little. As a bonus, it also keeps your RSI risk unchanged.

  • Is orgmode really that much better than an equivalent workflow using vim + other tools?
    14 projects | /r/orgmode | 29 May 2023
    I would *highly* recommend using vim keybindings if you're just getting into it (Doom or just evil). I switched from vim to emacs and tried to rough it with the default keybindings thinking that otherwise I wasn't /really/ using emacs, but I was wrong! I've been using org-mode/emacs for ~2 years now and I've slowly been migrating everything into it as I find useful tools/modes/etc (and now thanks to u/ilemming I have ~12 more to experiment with 😂)
  • Switching from Emacs. My experience
    20 projects | /r/neovim | 24 May 2023
    Despite using Emacs as my main editor, I was extremely familiar with Vim since I also used it frequently, and was able to use it quite well, especially because I also used [evil](https://github.com/emacs-evil/evil) in Emacs since Emacs's native keybindings are uncomfortable to use. I never used Vim as my primary editor though because it was cumbersome to configure. As many people say, Vimscript just feels wrong, so I gave up on trying to customize Vim.
  • Is it possible to use vim like navigation and control everywhere on the windows/mac applications?
    4 projects | /r/vim | 14 May 2023
    uhm... this maybe? https://github.com/emacs-evil/evil
  • evil-set-leader vs general.el for SPC based keybindings
    2 projects | /r/emacs | 26 Apr 2023
    ;; (setq debug-on-error t) (setq warning-minimum-level :error) ; don't show warning buffer unless error ;; REQUIRE PACKAGES AND CONFIGURE THEM (require 'package) (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/")) (package-initialize) ;; no littering (keep ~/.emacs.d from being generated so ~/.config path used) (require 'no-littering) ;; KEEP FILES UP TO DATE (GOOD FOR GIT BRANCHES) (global-auto-revert-mode t) ;; CONFIGURE BACKUP FILE BEHAVIOR (setq backup-dir (getenv "EMACS_BACKUP_DIR")) (setq backup-by-copying t) ; don't clobber symlinks (setq version-control t) ; use versioned backups (setq kept-old-versions 2) (setq kept-new-versions 4) (setq delete-old-versions t) (setq backup-directory-alist `((".*" . ,backup-dir))) ;(setq auto-save-file-name-transforms ; `((".*" ,backup-dir t))) ;; ORG MODE ; allow TAB to control folding in org-mode, see: ; https://jeffkreeftmeijer.com/emacs-evil-org-tab/ (setq evil-want-C-i-jump nil) ; needed before evil loaded (add-hook 'org-mode-hook 'org-indent-mode) ; always pretty indent ;; EVIL MODE (setq evil-want-integration t) ; optional since already t by default (setq evil-want-keybinding nil) (require 'evil) (when (require 'evil-collection nil t) (evil-collection-init)) (evil-mode 1) (evil-set-undo-system 'undo-redo) ; built-in undo-redo as evil backend ; start terminals in normal state by default so leader buffer navigation is more ; consistent ;(evil-set-initial-state 'term-mode 'normal) ; absolute garbage ; fix "v$" to exlcude newline (https://github.com/emacs-evil/evil/issues/897) (setq evil-v$-excludes-newline t) ; replace only in visual selection (setq evil-ex-visual-char-range t) ; built in solution for single line ; solution for visual block mode uses leader key below (evil-visual-replace-visual-bindings) ; leader key (largely used to replace C-x commands) (evil-set-leader nil (kbd "SPC")) ; window movement (evil-define-key 'normal 'global (kbd "o") 'other-window) (evil-define-key 'normal 'global (kbd "wh") 'windmove-left) (evil-define-key 'normal 'global (kbd "wj") 'windmove-down) (evil-define-key 'normal 'global (kbd "wk") 'windmove-up) (evil-define-key 'normal 'global (kbd "wl") 'windmove-right) ; buffer select, buffer list, find file, delete window (evil-define-key 'normal 'global (kbd "b") 'switch-to-buffer) (evil-define-key 'normal 'global (kbd "B") 'list-buffers) (evil-define-key 'normal 'global (kbd "f") 'find-file) (evil-define-key 'normal 'global (kbd "0") 'delete-window) ; definition jumping (gd already goes to definition) (evil-define-key 'normal 'global (kbd "gD") 'xref-pop-marker-stack) ; allow replacement only in selection for visual block mode (evil-define-key 'visual 'global (kbd "vbr") 'evil-visual-replace-replace-regexp) ; commenting (evil-define-key '(normal visual) 'global (kbd "gc") 'smart-comment) ; indentation (evil-define-key '(normal visual) 'global (kbd "gi") 'indent-region) ; statusline commands (available as ":") (evil-ex-define-cmd "done" 'save-buffers-kill-emacs) (evil-ex-define-cmd "at" 'open-ansi-term) (evil-ex-define-cmd "rb" 'rename-buffer) (evil-ex-define-cmd "hsp" 'split-window-below) (evil-ex-define-cmd "sw" 'rotate-frame) (evil-ex-define-cmd "tp" 'transpose-frame) (evil-ex-define-cmd "rshp" 'reshape-window)
  • 916 Days of Emacs
    12 projects | news.ycombinator.com | 13 Apr 2023
    I just stopped worry and succumbed to https://github.com/emacs-evil/evil.
  • How do I take priority from Evil's escape key?
    2 projects | /r/emacs | 5 Apr 2023
    I am currently using evil and corfu, but I want to configure such that pressing a single escape will invoke corfu-quit when its UI is active (because pressing "C-g" is harder).

transient

Posts with mentions or reviews of transient. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-09-09.
  • On Desktop GUI Minimalism
    5 projects | news.ycombinator.com | 9 Sep 2023
    > Even in this article just a few sentences after stating we should start from first principles he then jumps into the assumption of the "desktop".

    Agree. Although I can see how the idea of "first principles" can be a very difficult starting point. A blank sheet of paper is a scary monster.

    There's a huge breadth and depth of non-"desktop" GUIs out there, some (like smartphones) are even wildly successful. It's good to explore them for inspiration. Some of my favourites:

    - Arcan (https://arcan-fe.com/about/) - I won't attempt to summarize, just dive in!

    - SailfishOS (https://sailfishos.org/) - mobile UI focused on interaction through gestures / swipes; I've used it as my daily driver for a couple years.

    - Speaking of mobiles, classic Nokia UIs allowed you to navigate to a specific item in the menu by pressing the corresponding digit on the dial pad. Once you learned where a particular item is, accessing e.g. your SMS inbox was extremely quick.

    - Apple Watch / WatchOS (https://www.apple.com/watchos/) - I've always loved the idea of a device where one of the primary interaction methods was a wheel/dial of some sort. The watch even gives you context-sensitive tactile feedback.

    - ZUIs in general (https://en.wikipedia.org/wiki/Zooming_user_interface) and the work of Jef Raskin in particular: https://en.wikipedia.org/wiki/Archy_(software) - this is the guy who helped design the Macintosh, but his other work took a radically different route.

    - Magit (https://magit.vc/). Many common git operations are reduced to a couple of keystrokes; the obscure features are more discoverable, and the cumbersome procedures (such as rebasing, or staging individual hunks) become simple and intuitive. Also check out transient (https://github.com/magit/transient), which is the "UI toolkit" that powers Magit.

  • Warp is a modern, Rust-based terminal with AI built in
    2 projects | news.ycombinator.com | 22 Jun 2023
    True, and I'd personally rather move away from Emacs to something more modern. (Helix is great, although I appreciate the irony of it being terminal-only, while Emacs supports several different window systems natively.) Magit is the only real reason I'm sticking with Emacs.

    Magit itself is powered by <https://github.com/magit/transient>, which I see more as an interaction paradigm than a library; it could enable more ergonomic interaction with other stateful tools that are typically native to the command line / terminal (such as docker/kubectl, systemctl, mpd/mpc, etc). Rather than using Emacs as a middle layer, Transient could build on top of pluggable native toolkit backends, such as Cocoa, Gtk, Win32, or even web or a terminal.

    We continue investing into terminals because the terminal remains the lowest common denominator of interacting with a computer. On the other end of the spectrum we have Electron, which has very clear and obvious downsides. I think there is low-hanging fruit with amazing ROI somewhere in the middle, and Magit/Transient is an example of what it could be.

  • What do you use for git integration in neovim?
    8 projects | /r/neovim | 6 Jun 2023
    You can also manage via a holistic UI: - Bisection - Log and reflog, stashes - subtrees, submodules - certain third party subcommands like git-absorb, and extend it with your own - interact with issues and pull requests via forge - pretty much all of the hundreds of CLI flags via a modal UI that got generalized and extracted to a lib called transient - well-integrated diff and conflict resolution (which is mostly just smerge) - the rebase/cherry-pick workflows I liked the best, including support for --update-refs - at any time you can always press a key to see the raw commands and output that it's using, which taught me a ton of corner cases - IMO it has a great manual
  • Transient Demo Requests?
    3 projects | /r/emacs | 11 May 2023
    See https://github.com/magit/transient/issues/239 .
  • Transient v0.4.0 released
    2 projects | /r/emacs | 10 May 2023
    More information can be found on my blog and in the release notes.
  • I cannot get EmacSQL to work
    4 projects | /r/emacs | 15 Apr 2023
    Preparing to upgrade Doom Emacs and its packages... ✓ Doom is already up-to-date! Doom is up-to-date! Synchronizing "default" profile... Regenerating envvars file ✓ Generated ~/Repos/dotfiles/.emacs.d/.local/env Installing packages... > Cloning emacsql... > Cloning emacsql-sqlite3... - No packages need to be installed (Re)building packages... - No packages need rebuilding Updating recipe repos... Updating packages (this may take a while)... ✓ (192/252) emacs-websocket: 8604982 -> 1a08093 [147 commit(s)] (w/ 1 dependents) 767b804 fix create header error when custom-headers-alist contains %s 1f086f1 Update to version 1.14 2c576b6 Sets version to 1.14 6954d08 Version 1.13.1 - removing websocket-test.el. 413702e Update websocket library to version 1.13. f11d03a Allow websocket accept header variants. bc57ded Upgrade websocket library to version 1.11.1. c4d8d58 Fix confusing documentation string in websocket library. 8d540d4 websocket: Version 1.9, custom header support. 65b3e1c Port websocket to bleeding-edge 32-bit Emacs ba4334b Remove use of string-make-unibyte and other cleanups. 3b21915 Update to emacs-websocket version 1.8. 45d421d Fix some quoting problems in doc strings a5a25d4 * websocket/websocket.el (websocket-server-accept): Mark arg as unused 6fa9830 Version 1.6, mostly fixes for fragmented headers. 6872e74 Fix maintainer address 50d62ac Add ability to handle cookies. cd7a044 Version 1.4, fix for ping/pong & 32-bit emacs. 2aad0b2 Upgrade to version 1.3. e008e03 websocket.el: Set version to 1.2, after last set of server fixes. [...] x The package manager threw an error x Last 16 lines of straight's error log: [Return code: 0] $ cd /home/michael/Repos/dotfiles/.emacs.d/.local/straight/repos/iedit/ $ git log --oneline --no-merges 27c61866b1b9b8d77629ac702e5f48e67dfe0d3b ^27c61866b1b9b8d77629ac702e5f48e67dfe0d3b [Return code: 0] $ cd /home/michael/Repos/dotfiles/.emacs.d/.local/straight/repos/transient/ $ git rev-parse HEAD c6cf2f2705ab56cd89d807e723ce45b9fcdfb9e1 [Return code: 0] $ cd /home/michael/Repos/dotfiles/.emacs.d/.local/straight/repos/transient/ $ git config --get remote.origin.url https://github.com/magit/transient.git [Return code: 0] $ cd /home/michael/Repos/dotfiles/.emacs.d/.local/straight/repos/transient/ $ git fetch origin fatal: couldn't find remote ref refs/heads/master [Return code: 128] ! Wrote extended straight log to ~/Repos/dotfiles/.emacs.d/.local/state/logs/cli.doom.230415123729.100272.error ! Script was abruptly aborted, leaving Doom in an incomplete state! ```
    4 projects | /r/emacs | 15 Apr 2023
    Yeah, ok, simplest is then to just trash the transient folder and either let Emacs clone it again on startup, or manually clone it: https://github.com/magit/transient
  • Khoj Chat: A Search Assistant for your Org-Mode Notes
    2 projects | /r/emacs | 27 Mar 2023
    M-x khoj RET c via transient
  • quick-actions.el: Uniform Compile/Run/Debug across programming languages
    3 projects | /r/emacs | 12 Jun 2022
    Will a hydra or a transient menu?
  • Enime: watch anime using emacs
    6 projects | /r/emacs | 16 Jan 2022
    Enime is a sort-of elisp re-implementation of ani-cli using the same video scrapping methods but featuring a transient based TUI, because, subjectively, transient is a better UI than a CLI.

What are some alternatives?

When comparing evil and transient you can also consider the following projects:

doom-emacs - An Emacs framework for the stubborn martian hacker [Moved to: https://github.com/doomemacs/doomemacs]

lsp-mode - Emacs client/library for the Language Server Protocol

spacemacs - A community-driven Emacs distribution - The best editor is neither Emacs nor Vim, it's Emacs *and* Vim!

Visual Studio Code - Visual Studio Code

VSpaceCode - Spacemacs like keybindings for Visual Studio Code

portacle - A portable common lisp development environment

emacs-which-key - Emacs package that displays available keybindings in popup

exwm - Emacs X Window Manager

emacs-lite

evil-numbers - Increment and decrement numbers in Emacs

GNU Emacs - Mirror of GNU Emacs

ani-cli - A cli tool to browse and play anime