Skip to content

Latest commit

 

History

History
172 lines (140 loc) · 7.07 KB

README.org

File metadata and controls

172 lines (140 loc) · 7.07 KB

completion/ivy

Table of Contents

Description

This module provides Ivy integration for a variety of Emacs commands, as well as a unified interface for project search and replace, powered by ripgrep.

I prefer ivy over ido for its flexibility. I prefer ivy over helm because it’s lighter, simpler and faster in many cases.

Module Flags

  • +fuzzy Enables fuzzy completion for Ivy searches.
  • +prescient Enables prescient filtering and sorting for Ivy searches.
  • +childframe Causes Ivy to display in a floating child frame, above Emacs.
  • +icons Enables file icons for switch-{buffer,project}/find-file counsel commands.

Plugins

Hacks

  • Functions with ivy/counsel equivalents have been globally remapped (like find-file => counsel-find-file). So a keybinding to find-file will invoke counsel-find-file instead.
  • counsel-[arp]g’s 3-character limit was reduced to 1 (mainly for the ex command)

Prerequisites

This module has no prerequisites.

Features

Ivy and its ilk are large plugins. Covering everything about them is outside of this documentation’s scope, so only Doom-specific Ivy features are listed here:

Jump-to navigation

Inspired by Sublime Text’s jump-to-anywhere, CtrlP/Unite in Vim, and Textmate’s Command-T, this module provides similar functionality by bringing projectile and ivy together.

https://assets.doomemacs.org/completion/ivy/projectile.png

KeybindDescription
SPC p f, SPC SPCJump to file in project
SPC f f, SPC .Jump to file from current directory
SPC s iJump to symbol in file

Project search & replace

This module provides interactive text search and replace using ripgrep.

KeybindDescription
SPC s pSearch project
SPC s PSearch another project
SPC s dSearch this directory
SPC s DSearch another directory

https://assets.doomemacs.org/completion/ivy/search.png

Prefixing these keys with the universal argument (SPC u for evil users; C-u otherwise) changes the behavior of these commands, instructing the underlying search engine to include ignored files.

This module also provides Ex Commands for evil users:

Ex commandDescription
:pg[rep][!] [QUERY]Search project (if !, include hidden files)
:pg[rep]d[!] [QUERY]Search from current directory (if !, don’t search recursively)

The optional `!` is equivalent to the universal argument for the previous commands.


These keybindings are available while a search is active:

KeybindDescription
C-c C-oOpen a buffer with your search results
C-c C-eOpen a writable buffer of your search results
C-SPCPreview the current candidate
C-RETOpen the selected candidate in other-window

Changes to the resulting wgrep buffer (opened by C-c C-e) can be committed with C-c C-c and aborted with C-c C-k (alternatively ZZ and ZQ, for evil users).

https://assets.doomemacs.org/completion/ivy/search-replace.png

In-buffer searching

The swiper package provides an interactive buffer search powered by ivy. It can be invoked with:

  • SPC s s (swiper-isearch)
  • SPC s S (swiper-isearch-thing-at-point)
  • SPC s b (swiper)
  • :sw[iper] [QUERY]

https://assets.doomemacs.org/completion/ivy/swiper.png

A wgrep buffer can be opened from swiper with C-c C-e.

Ivy integration for various completing commands

General

KeybindDescription
M-x, SPC :Smarter, smex-powered M-x
SPC 'Resume last ivy session

Jump to files, buffers or projects

KeybindDescription
SPC RETFind bookmark
SPC f f, SPC .Browse from current directory
SPC p f, SPC SPCFind file in project
SPC f rFind recently opened file
SPC p pOpen another project
SPC b b, SPC ,Switch to buffer in current workspace
SPC b B, SPC <Switch to buffer

Search

KeybindDescription
SPC p tList all TODO/FIXMEs in project
SPC s bSearch the current buffer
SPC s dSearch this directory
SPC s DSearch another directory
SPC s iSearch for symbol in current buffer
SPC s pSearch project
SPC s PSearch another project
SPC s sSearch the current buffer (incrementally)

Configuration

Enable fuzzy/non-fuzzy search for specific commands

Change the position of the ivy childframe

Troubleshooting