https://github.com/agkozak/zsh-select
Pure ZSH selection tool like selecta, fzf, etc.
https://github.com/agkozak/zsh-select
Last synced: 7 months ago
JSON representation
Pure ZSH selection tool like selecta, fzf, etc.
- Host: GitHub
- URL: https://github.com/agkozak/zsh-select
- Owner: agkozak
- License: other
- Created: 2021-11-03T22:38:46.000Z (almost 4 years ago)
- Default Branch: master
- Last Pushed: 2021-01-01T19:30:36.000Z (almost 5 years ago)
- Last Synced: 2025-01-10T19:23:10.721Z (9 months ago)
- Homepage: http://psprint.github.io/
- Size: 37.1 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=D6XDCHDSBDSDG)
## Introduction
A shell command that will display selection list. It is similar to `selecta`,
but uses curses library to do display, and when compared to `fzf`, the main
difference is approximate matching instead of fuzzy matching. It is written in
Zshell and has it's capabilities:- patterns, allowing multi-term searching
- curses module
- approximate matching (`Ctrl-F`)The file `zsh-select` can be copied to any `bin` directory. `Zsh` will
serve as say `Ruby`, and `zsh-select` will be a regular program available
in system.Pressing `o` will make elements uniqe. To search again after pressing enter,
press `/`. Approximate matching mode is activated by `Ctrl-F`.Video: [asciinema](https://asciinema.org/a/48490). You can resize the video by pressing `Ctrl-+` or `Cmd-+`.
[](https://asciinema.org/a/48490)
## Installation
Simply copy file `zsh-select` to any `bin` directory such as `/usr/local/bin`.
The package is also available as plugin. `zsh-select` will be available in
interactive `Zsh` sessions only when using this method. Nevertheless, integration
with `Vim` and other uses will simply work when `Zsh` is your main shell. Also,
plugin managers often allow easy updates.## Integration with Vim
Adding following snippet to `vimrc` will provide `\f` keyboard shortcut that will
run `zsh-select` as file-selector. Multi-term searching and approximate matching
(`Ctrl-F`) will be available. The snippet is based on code from `selecta` github
page (MIT license):```vim
" Run a given vim command on the results of fuzzy selecting from a given shell
" command. See usage below.
function! ZshSelectCommand(choice_command, zshselect_args, vim_command)
try
let selection = system(a:choice_command . " | zsh-select " . a:zshselect_args)
catch /Vim:Interrupt/
" Swallow the ^C so that the redraw below happens; otherwise there will be
" leftovers from zshselect on the screen
redraw!
return
endtry
redraw!
exec a:vim_command . " " . selection
endfunction" Find all files in all non-dot directories starting in the working directory.
" Fuzzy select one of those. Open the selected file with :e.
nnoremap f :call ZshSelectCommand("find * -type f 2>/dev/null", "", ":e")
```## Configuring
There are a few environment variables that can be set to alter `Zsh-Select`
behavior. Values assigned below are the defaults:```zsh
export ZSHSELECT_BOLD="1" # The interface will be drawn in bold font. Use "0" for no bold
export ZSHSELECT_COLOR_PAIR="white/black" # Draw in white foreground, black background. Try e.g.: "white/green"
export ZSHSELECT_BORDER="0" # No border around interface, Use "1" for the border
export ZSHSELECT_ACTIVE_TEXT="reverse" # Mark current element with reversed text. Use "underline" for marking with underline
export ZSHSELECT_START_IN_SEARCH_MODE="1" # Starts Zsh-Select with searching active. "0" will not invoke searching at start.
```## Use with plugin managers
### [Zplugin](https://github.com/psprint/zplugin)Add `zplugin load psprint/zsh-select` to `.zshrc`.
The plugin will be loaded next time you start `Zsh`.
To update issue `zplugin update psprint/zsh-select` from command line.### Zgen
Add `zgen load psprint/zsh-select` to `.zshrc` and issue a `zgen reset` (this
assumes that there is a proper `zgen save` construct in `.zshrc`).### Antigen
Add `antigen bundle psprint/zsh-select` to `.zshrc`. There also should be
`antigen apply`.