Skip to content

Latest commit

 

History

History
194 lines (158 loc) · 7.43 KB

README.org

File metadata and controls

194 lines (158 loc) · 7.43 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 depends on:

Install

MacOS

brew install ripgrep

Arch Linux

sudo pacman --needed --noconfirm -S ripgrep

openSUSE

sudo zypper install ripgrep

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