peco
peco·peco.peco
Simplistic interactive filtering tool.
winget install --id peco.peco --exact --source wingetLatest 0.6.0·February 24, 2026
Release Notes
v0.6.0 - 24 Feb 2026 [Breaking Changes]
- Migrated terminal backend from termbox-go to tcell (#567).
- Removed deprecated config fields
Matcher,InitialMatcher, andCustomMatcher. UseInitialFilterandCustomFilterinstead. Note:CustomFilteruses a different format thanCustomMatcher: Before: "CustomMatcher": { "MyFilter": ["/path/to/cmd", "$QUERY"] } After: "CustomFilter": { "MyFilter": { "Cmd": "/path/to/cmd", "Args": ["$QUERY"] } } - Removed deprecated CLI option
--initial-matcher. Use--initial-filterinstead. - The action
ViewArroundhas been renamed toViewAround(fix typo). The old name still works but shows a deprecation notice. If you have"ViewArround"in your config, please update it to"ViewAround". - Removed
Use256Colorconfig field. After the tcell migration, 256-color and truecolor support is automatic via terminfo detection. Existing configs with this field will continue to load without error. - Shift+Tab is now mapped to Tab internally. Use
M-[,Zin your keymap config if you need a distinct Shift+Tab binding. - Default key bindings for
GoToNextSelectionandGoToPreviousSelectionhave changed.GoToNextSelectionwas previously unbound (it silently conflicted withKillEndOfLineon Ctrl+K in v0.5.x) and is now bound to Alt+j.GoToPreviousSelectionwas previously bound to Ctrl+J and is now bound to Alt+k. - ANSI color support is now enabled by default (
--color=auto). ANSI escape sequences in input are now parsed and rendered with colors preserved. To disable, use--color=noneor set"Color": "none"in your config file. - Query terms starting with
-are now interpreted as negative (exclusion) filters. In v0.5.x,foo -barsearched for lines matching both "foo" and literal "-bar"; in v0.6.0 it searches for "foo" while excluding lines containing "bar". To match a literal hyphen prefix, escape it with a backslash:\-bar. [Features] - Added YAML configuration file support. You can now use
~/.config/peco/config.yamlin addition to JSON (#576). - Added negative filter terms. Prefix a search term with
-to exclude matching lines, e.g.-unittests SSOmatches "SSO" but excludes lines containing "unittests" (#434, #592). - Added
peco.FreezeResults/peco.UnfreezeResultsactions. Freezing locks the current result set so you can clear the query, switch filters, and continue filtering against the frozen subset (#424, #596). - Added
--heightoption for inline display. Accepts a line count (e.g.--height 5) or a percentage (e.g.--height 50%) and renders peco inline instead of taking over the full screen (#471, #598). - Added
peco.ZoomIn/peco.ZoomOutactions that expand visible context around matched lines, showing surrounding lines (#289, #600). - Added ANSI color rendering support via
--color=auto|noneCLI flag and"Color"config field. Colored output from tools likegit log --colororrg --coloris now displayed with colors preserved. Default isauto(enabled) (#398, #602). - Added
IRegexpfilter for case-insensitive regexp matching, so you no longer need to manually type(?i)in regex queries.IRegexpcan also be used as a value for--initial-filter/InitialFilter(#564). - Added
--exit-0option to immediately exit with non-zero status when the input is empty, analogous to--select-1(#538, #582). - Added Ctrl+Shift key modifier and CSI u / fixterms escape sequence support for modern terminals (#529, #581).
- Added Page Up/Down and Home/End key support (#428, #584).
- Added a new
top-down-query-bottomlayout: top-down list with query prompt at the bottom. Use--layout top-down-query-bottomor"Layout": "top-down-query-bottom"in config (#445, #595). - Added man page (
peco.1) for offline documentation (#467, #587). - Added support for ANSI color codes in the
--promptstring (#294, #586). - Added
--select-alloption to select all input lines and immediately exit without displaying the selection view. When combined with--query, only matching lines are selected. - Added
SuppressStatusMsgconfig field to suppress the status message bar at the bottom of the screen. - Added
FilterBufSizeconfig field to control the internal buffer size (in lines) used during filtering. Default is 1000. - Added
PromptandContextstyle targets.Promptcontrols the appearance of the query prompt prefix (e.g.QUERY>).Contextcontrols the appearance of context lines shown by ZoomIn (default: bold). - Added
#RRGGBBtruecolor support in style configuration. You can now use hex color values like"#ff6600"for foreground and"on_#003366"for background colors. - Added
QueryCursorstyle for explicit control over the query prompt cursor appearance. When not configured, the cursor is derived from theQuerystyle by swapping fg/bg colors. [Bugs/Fixes] - Fixed
ToggleQuery(C-t) not working correctly (#563). - Fixed fuzzy sort producing incorrect order with >1000 lines of input due to chunk-size boundary (#557, #589).
- Fixed matched highlight style bleeding to the right edge of the terminal (#460, #583).
- Fixed screen not being properly redrawn when stderr output from piped commands corrupts the display (#455, #588).
- Suppressed flickering "Running query..." status message (#511, #585).
- Fixed
--nullnot working correctly with custom filters (#312, #577). - Fixed
doGoToNextSelectionanddoGoToPreviousSelectionsharing the same default key binding (#575, #579).GoToNextSelectionis now bound to Alt+j andGoToPreviousSelectionto Alt+k. The previous Ctrl+J and Ctrl+K bindings have been removed (Ctrl+K remains bound toKillEndOfLine). If you relied on Ctrl+J or Ctrl+K for selection navigation, update your keymap config. - Fixed
GoToPreviousSelectionbeing registered with a malformed internal name (\tdoGoToPreviousSelection) in v0.5.x. Users who had"peco.GoToPreviousSelection"in their config keymap will find that it now correctly binds to the action. - Fixed
lastLinetracking variable not being updated (#574, #578). - Fixed tab rendering off-by-one error (#672).
- Restored mouse support lost during the tcell migration (#735).
- Fixed Ctrl-C not properly exiting peco due to meta character handling (#715, #716).
- Fixed
--select-1not triggering on interactive queries and not respecting context for streaming sources (#726). - Fixed filter cache not being invalidated on freeze/unfreeze, causing stale results (#727).
- Fixed external filters (
CustomFilter) incorrectly running in parallel, which could produce garbled results. They now run sequentially (#722). - Removed redundant Esc key timer; Escape should now feel more responsive (#728).
- Filter errors are now reported to the status bar instead of being silently swallowed (#682).
- Fixed screen Init error being swallowed on suspend/resume (#681).
- Fixed I/O errors during stdin read being silently ignored (#680).
- Fixed ANSI SGR parser not handling malformed escape sequences gracefully (#692).
- Fixed potential panic on negative index in FilteredBuffer (#770).
- Fixed errors from external filters being silently dropped (#752, #766).
- Fixed various internal race conditions, resource leaks, and potential deadlocks. [Performance]
- Optimized filtering for large inputs with parallelized workers, achieving 7-30x speedup for ~1M lines (#454, #590).
- Reduced overall memory consumption (#572).
- Reduced per-query allocation overhead and GC pauses: sync.Pool for match structs, in-place merge, slice reuse in regexp/fuzzy filters, closure elimination, stack-allocated ANSI parsing, and fast-path ANSI stripping (#781-#789, #765).
Installer type: zip
| Architecture | Scope | Download | SHA256 |
|---|---|---|---|
x64 | — | Download | 5BD9AA4BC02338A6EC8AB1EF212C7B2E54C23E2416254C7681F03E9FA6857863 |
Details
- Homepage
- https://github.com/peco/peco
- License
- MIT
- Publisher
- peco
- Support
- https://github.com/peco/peco/issues
- Moniker
peco
Older versions (1)
0.5.11
| Architecture | Scope | Download | SHA256 |
|---|---|---|---|
x64 | — | Download | BD0F92CF415F43B9FE19515D8C49B31683826CF3626B485217E6487D3635C95D |