[![Build Status](https://travis-ci.org/abo-abo/swiper.svg?branch=master)](https://travis-ci.org/abo-abo/swiper) ***flexible, simple tools for minibuffer completion in Emacs*** This repository contains: **Ivy**, a generic completion mechanism for Emacs. **Counsel**, a collection of Ivy-enhanced versions of common Emacs commands. **Swiper**, an Ivy-enhanced alternative to isearch. # Ivy [![MELPA](https://melpa.org/packages/ivy-badge.svg)](https://melpa.org/#/ivy) [![MELPA Stable](https://stable.melpa.org/packages/ivy-badge.svg)](https://stable.melpa.org/#/ivy) Ivy is a generic completion mechanism for Emacs. While it operates similarly to other completion schemes such as `icomplete-mode`, Ivy aims to be more efficient, smaller, simpler, and smoother to use yet highly customizable. To try Ivy, just call M-x `ivy-mode`. This will enable generic Ivy completion, including specific completion for file and buffer names. ### Installation Install the `ivy` package from MELPA / GNU ELPA. Users of Debian ≥10 (and derivatives such as Ubuntu ≥18.04) can install Ivy, Counsel, and Swiper with `sudo apt install elpa-counsel`. To add Hydra support `sudo apt install elpa-ivy-hydra`. ## Documentation ### Manual The manual is available as [HTML](https://oremacs.com/swiper/). After installing from MELPA, the manual is also available through the `(ivy)` Info node. The source file for the Info page is [here](https://github.com/abo-abo/swiper/blob/master/doc/ivy.org). ### Wiki Ivy and Swiper wiki is here: [the wiki](https://github.com/abo-abo/swiper/wiki). ### Small config example ```elisp (ivy-mode 1) (setq ivy-use-virtual-buffers t) (setq enable-recursive-minibuffers t) ;; enable this if you want `swiper' to use it ;; (setq search-default-mode #'char-fold-to-regexp) (global-set-key "\C-s" 'swiper) (global-set-key (kbd "C-c C-r") 'ivy-resume) (global-set-key (kbd "") 'ivy-resume) (global-set-key (kbd "M-x") 'counsel-M-x) (global-set-key (kbd "C-x C-f") 'counsel-find-file) (global-set-key (kbd " f") 'counsel-describe-function) (global-set-key (kbd " v") 'counsel-describe-variable) (global-set-key (kbd " o") 'counsel-describe-symbol) (global-set-key (kbd " l") 'counsel-find-library) (global-set-key (kbd " i") 'counsel-info-lookup-symbol) (global-set-key (kbd " u") 'counsel-unicode-char) (global-set-key (kbd "C-c g") 'counsel-git) (global-set-key (kbd "C-c j") 'counsel-git-grep) (global-set-key (kbd "C-c k") 'counsel-ag) (global-set-key (kbd "C-x l") 'counsel-locate) (global-set-key (kbd "C-S-o") 'counsel-rhythmbox) (define-key minibuffer-local-map (kbd "C-r") 'counsel-minibuffer-history) ``` Note: parts of this config can be replaced by using `counsel-mode`. # Counsel [![MELPA](https://melpa.org/packages/counsel-badge.svg)](https://melpa.org/#/counsel) [![MELPA Stable](https://stable.melpa.org/packages/counsel-badge.svg)](https://stable.melpa.org/#/counsel) `ivy-mode` ensures that any Emacs command using `completing-read-function` uses ivy for completion. Counsel takes this further, providing versions of common Emacs commands that are customised to make the best use of ivy. For example, `counsel-find-file` has some additional keybindings. Pressing DEL will move you to the parent directory. Enabling `counsel-mode` remaps built-in Emacs functions that have counsel replacements: | Emacs command | Counsel equivalent | |--------------------------|----------------------------| | execute-extended-command | counsel-M-x | | describe-bindings | counsel-descbinds | | describe-function | counsel-describe-function | | describe-variable | counsel-describe-variable | | apropos-command | counsel-apropos | | describe-face | counsel-describe-face | | list-faces-display | counsel-faces | | find-file | counsel-find-file | | find-library | counsel-find-library | | imenu | counsel-imenu | | load-library | counsel-load-library | | load-theme | counsel-load-theme | | yank-pop | counsel-yank-pop | | info-lookup-symbol | counsel-info-lookup-symbol | | pop-to-mark-command | counsel-mark-ring | | bookmark-jump | counsel-bookmark | # Swiper [![MELPA](https://melpa.org/packages/swiper-badge.svg)](https://melpa.org/#/swiper) [![MELPA Stable](https://stable.melpa.org/packages/swiper-badge.svg)](https://stable.melpa.org/#/swiper) Swiper is an alternative to isearch that uses ivy to show an overview of all matches. ![swiper.png](https://oremacs.com/download/swiper.png) A helm version of swiper is also available: [swiper-helm](https://github.com/abo-abo/swiper-helm). ## Screenshots ![ivy-swiper-1.png](https://oremacs.com/download/ivy-swiper-1.png) There's also a ten minute [video demo](https://www.youtube.com/watch?v=VvnJQpTFVDc). # Frequently asked questions Q: How do I enter an input that matches one of the candidates instead of this candidate? Example: create a file `bar` when a file `barricade` exists in the current directory. A: Press C-M-j. Alternatively, you can make the prompt line selectable with `(setq ivy-use-selectable-prompt t)`. # Contributing Please see the [guidelines](https://github.com/abo-abo/swiper/blob/master/CONTRIBUTING.org) for reporting issues and opening pull requests.