Skip to content
Search shell history with peco when pressing ctrl+r.
Shell
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
LICENSE Initial commit Apr 3, 2016
README.md Update readme with info about load order Feb 15, 2019
screenshot.png Initial commit Apr 3, 2016
zsh-peco-history.plugin.zsh Initial commit Apr 3, 2016
zsh-peco-history.zsh Bump version to 0.10.0 Feb 15, 2019

README.md

zsh-peco-history

Search shell history with peco when pressing ctrl+r.

Based on zsh-history-search snippet from percol.

screenshot

Usage

  1. Press ctrl+r while in a zsh shell and it should load up peco with your shell's history.
  2. Start typing to filter history down.
  3. Press enter/return to pick a command from history.

Requirements

  • peco
  • zsh
  • tac, or tail with support for -r option.
  • perl, awk, or uniq if de-duplication is turned on.

Installation

Manual

  1. Clone this repo to your machine. This guide uses ~/.zsh/zsh-peco-history:

    git clone https://github.com/jimeh/zsh-peco-history.git ~/.zsh/zsh-peco-history
  2. Add the following to the end of your .zshrc:

    source ~/.zsh/zsh-peco-history/zsh-peco-history.zsh
  3. Start a new terminal session.

Zplug

  1. Add a zplug definition for zsh-peco-history to your .zshrc:

    zplug "jimeh/zsh-peco-history", defer:2
  2. Start a new terminal session.

Antigen

  1. Add a antigen bundle definition for zsh-peco-history to the end of the antigen setup in your .zshrc:

    antigen bundle jimeh/zsh-peco-history
  2. Start a new terminal session.

Oh My Zsh

  1. Clone this repository into $ZSH_CUSTOM/plugins (by default ~/.oh-my-zsh/custom/plugins)

    git clone https://github.com/jimeh/zsh-peco-history.git $ZSH_CUSTOM/plugins/zsh-peco-history
  2. Add the plugin to the list of plugins for Oh My Zsh to load:

    plugins=(zsh-peco-history)
  3. Start a new terminal session.

Configuration Options

ZSH_PECO_HISTORY_OPTS

Command-line arguments passed to peco. Defaults to --layout=bottom-up if the variable is not set.

A lot of the Peco options available on the command-line, are also available via Peco's config file. It's up to you how you want to manage your Peco settings.

For example, if you want to use the bottom-up layout, and change to fuzzy filtering:

ZSH_PECO_HISTORY_OPTS="--layout=bottom-up --initial-filter=Fuzzy"

ZSH_PECO_HISTORY_DEDUP

De-duplicates all history entries before they are handed over to peco. Disabled by default.

To enable, set the ZSH_PECO_HISTORY_DEDUP environment variable to a non-zero value before zsh-peco-history is loaded.

This is useful if you often have a lot of duplicate entries when searching through your history. However in that case it often enough to configure ZSH to not save duplicate commands to history in the first place. This can be done by setting the following options:

setopt HIST_EXPIRE_DUPS_FIRST
setopt HIST_IGNORE_DUPS
setopt HIST_IGNORE_ALL_DUPS
setopt HIST_FIND_NO_DUPS
setopt HIST_SAVE_NO_DUPS

Oh My Zsh for example sets the above options, and more in it's history.zsh file.

Recommended Peco Config

You don't have to use this config, it's simply what I personally use. So here's what my ~/.peco/config.json file looks like:

{
  "Keymap": {
    "M-v": "peco.ScrollPageUp",
    "C-v": "peco.ScrollPageDown",
    "C-g": "peco.Cancel",
    "M-Space": "peco.ToggleRangeMode",
    "M-c": "peco.CancelRangeMode"
  },
  "Style": {
    "Basic": ["on_default", "default"],
    "Matched": ["cyan"],
    "Query": ["default"],
    "SavedSelection": ["on_blue", "white"],
    "Selected": ["on_magenta", "default"]
  }
}

License

CC0 1.0 Universal

You can’t perform that action at this time.