For some reason I had it in my mind that swiper depended on Lispy, or Spacemacs, or some other Vim-derived Emacs mode so I never really looked at it. Then I read Mike Zamansky's post on swiper and had my eyes were opened. At a minimum,
swiper is a much improved replacement for Emacs's incremental search. You can take a look at Zamansky's post to see how it improves on the default incremental search behavior1, but the TL;DR is that you get a sort of simplified regex search with all the candidates shown in the minibuffer. You can navigate this list with the usual 【Ctrl+n】 and 【Ctrl+p】 and then select the match you want.
It turns out, though, that once you have the underlying ivy mode installed everything gets better. You can get rid of ido-mode and smex and let ivy take care of the things they do. All the things you loved about ido-mode are done better with ivy. There's a very nice manual to explains everything
ivy2 can do
Watch Zamansky's video on swiper—and the rest of his videos if you haven't already—to see why this is a worthwhile upgrade. I'm still cautiously feeling my way with swiper and have started small. Here's my current configuration:
(use-package swiper :ensure t :config (ivy-mode 1) (setq ivy-use-virtual-buffers t) (global-set-key "\C-s" 'swiper) (global-set-key (kbd "C-c C-r") 'ivy-resume) (global-set-key (kbd "M-x") 'counsel-M-x) (global-set-key (kbd "C-x C-f") 'counsel-find-file))
As you can see, I'm using it for
execute-extended-command as well as
isearch. Again, I'm starting cautiously but so far I think it's a definite win.