|
|
|
@ -18,97 +18,101 @@ import (
|
|
|
|
|
const usage = `usage: fzf [options]
|
|
|
|
|
|
|
|
|
|
Search
|
|
|
|
|
-x, --extended Extended-search mode
|
|
|
|
|
(enabled by default; +x or --no-extended to disable)
|
|
|
|
|
-e, --exact Enable Exact-match
|
|
|
|
|
-i Case-insensitive match (default: smart-case match)
|
|
|
|
|
+i Case-sensitive match
|
|
|
|
|
--scheme=SCHEME Scoring scheme [default|path|history]
|
|
|
|
|
--literal Do not normalize latin script letters before matching
|
|
|
|
|
-n, --nth=N[,..] Comma-separated list of field index expressions
|
|
|
|
|
for limiting search scope. Each can be a non-zero
|
|
|
|
|
integer or a range expression ([BEGIN]..[END]).
|
|
|
|
|
--with-nth=N[,..] Transform the presentation of each line using
|
|
|
|
|
field index expressions
|
|
|
|
|
-d, --delimiter=STR Field delimiter regex (default: AWK-style)
|
|
|
|
|
+s, --no-sort Do not sort the result
|
|
|
|
|
--tac Reverse the order of the input
|
|
|
|
|
--disabled Do not perform search
|
|
|
|
|
--tiebreak=CRI[,..] Comma-separated list of sort criteria to apply
|
|
|
|
|
when the scores are tied [length|chunk|begin|end|index]
|
|
|
|
|
(default: length)
|
|
|
|
|
-x, --extended Extended-search mode
|
|
|
|
|
(enabled by default; +x or --no-extended to disable)
|
|
|
|
|
-e, --exact Enable Exact-match
|
|
|
|
|
-i Case-insensitive match (default: smart-case match)
|
|
|
|
|
+i Case-sensitive match
|
|
|
|
|
--scheme=SCHEME Scoring scheme [default|path|history]
|
|
|
|
|
--literal Do not normalize latin script letters before matching
|
|
|
|
|
-n, --nth=N[,..] Comma-separated list of field index expressions
|
|
|
|
|
for limiting search scope. Each can be a non-zero
|
|
|
|
|
integer or a range expression ([BEGIN]..[END]).
|
|
|
|
|
--with-nth=N[,..] Transform the presentation of each line using
|
|
|
|
|
field index expressions
|
|
|
|
|
-d, --delimiter=STR Field delimiter regex (default: AWK-style)
|
|
|
|
|
+s, --no-sort Do not sort the result
|
|
|
|
|
--tac Reverse the order of the input
|
|
|
|
|
--disabled Do not perform search
|
|
|
|
|
--tiebreak=CRI[,..] Comma-separated list of sort criteria to apply
|
|
|
|
|
when the scores are tied [length|chunk|begin|end|index]
|
|
|
|
|
(default: length)
|
|
|
|
|
|
|
|
|
|
Interface
|
|
|
|
|
-m, --multi[=MAX] Enable multi-select with tab/shift-tab
|
|
|
|
|
--no-mouse Disable mouse
|
|
|
|
|
--bind=KEYBINDS Custom key bindings. Refer to the man page.
|
|
|
|
|
--cycle Enable cyclic scroll
|
|
|
|
|
--keep-right Keep the right end of the line visible on overflow
|
|
|
|
|
--scroll-off=LINES Number of screen lines to keep above or below when
|
|
|
|
|
scrolling to the top or to the bottom (default: 0)
|
|
|
|
|
--no-hscroll Disable horizontal scroll
|
|
|
|
|
--hscroll-off=COLS Number of screen columns to keep to the right of the
|
|
|
|
|
highlighted substring (default: 10)
|
|
|
|
|
--filepath-word Make word-wise movements respect path separators
|
|
|
|
|
--jump-labels=CHARS Label characters for jump and jump-accept
|
|
|
|
|
-m, --multi[=MAX] Enable multi-select with tab/shift-tab
|
|
|
|
|
--no-mouse Disable mouse
|
|
|
|
|
--bind=KEYBINDS Custom key bindings. Refer to the man page.
|
|
|
|
|
--cycle Enable cyclic scroll
|
|
|
|
|
--keep-right Keep the right end of the line visible on overflow
|
|
|
|
|
--scroll-off=LINES Number of screen lines to keep above or below when
|
|
|
|
|
scrolling to the top or to the bottom (default: 0)
|
|
|
|
|
--no-hscroll Disable horizontal scroll
|
|
|
|
|
--hscroll-off=COLS Number of screen columns to keep to the right of the
|
|
|
|
|
highlighted substring (default: 10)
|
|
|
|
|
--filepath-word Make word-wise movements respect path separators
|
|
|
|
|
--jump-labels=CHARS Label characters for jump and jump-accept
|
|
|
|
|
|
|
|
|
|
Layout
|
|
|
|
|
--height=[~]HEIGHT[%] Display fzf window below the cursor with the given
|
|
|
|
|
height instead of using fullscreen.
|
|
|
|
|
If prefixed with '~', fzf will determine the height
|
|
|
|
|
according to the input size.
|
|
|
|
|
--min-height=HEIGHT Minimum height when --height is given in percent
|
|
|
|
|
(default: 10)
|
|
|
|
|
--layout=LAYOUT Choose layout: [default|reverse|reverse-list]
|
|
|
|
|
--border[=STYLE] Draw border around the finder
|
|
|
|
|
[rounded|sharp|horizontal|vertical|
|
|
|
|
|
top|bottom|left|right|none] (default: rounded)
|
|
|
|
|
--margin=MARGIN Screen margin (TRBL | TB,RL | T,RL,B | T,R,B,L)
|
|
|
|
|
--padding=PADDING Padding inside border (TRBL | TB,RL | T,RL,B | T,R,B,L)
|
|
|
|
|
--info=STYLE Finder info style [default|inline|hidden]
|
|
|
|
|
--prompt=STR Input prompt (default: '> ')
|
|
|
|
|
--pointer=STR Pointer to the current line (default: '>')
|
|
|
|
|
--marker=STR Multi-select marker (default: '>')
|
|
|
|
|
--header=STR String to print as header
|
|
|
|
|
--header-lines=N The first N lines of the input are treated as header
|
|
|
|
|
--header-first Print header before the prompt line
|
|
|
|
|
--ellipsis=STR Ellipsis to show when line is truncated (default: '..')
|
|
|
|
|
--height=[~]HEIGHT[%] Display fzf window below the cursor with the given
|
|
|
|
|
height instead of using fullscreen.
|
|
|
|
|
If prefixed with '~', fzf will determine the height
|
|
|
|
|
according to the input size.
|
|
|
|
|
--min-height=HEIGHT Minimum height when --height is given in percent
|
|
|
|
|
(default: 10)
|
|
|
|
|
--layout=LAYOUT Choose layout: [default|reverse|reverse-list]
|
|
|
|
|
--border[=STYLE] Draw border around the finder
|
|
|
|
|
[rounded|sharp|horizontal|vertical|
|
|
|
|
|
top|bottom|left|right|none] (default: rounded)
|
|
|
|
|
--border-label=LABEL Label to print on the border
|
|
|
|
|
--border-label-pos=COL Position of the border label
|
|
|
|
|
[POSITIVE_INTEGER: columns from left|
|
|
|
|
|
NEGATIVE_INTEGER: columns from right] (default: 0)
|
|
|
|
|
--margin=MARGIN Screen margin (TRBL | TB,RL | T,RL,B | T,R,B,L)
|
|
|
|
|
--padding=PADDING Padding inside border (TRBL | TB,RL | T,RL,B | T,R,B,L)
|
|
|
|
|
--info=STYLE Finder info style [default|inline|hidden]
|
|
|
|
|
--prompt=STR Input prompt (default: '> ')
|
|
|
|
|
--pointer=STR Pointer to the current line (default: '>')
|
|
|
|
|
--marker=STR Multi-select marker (default: '>')
|
|
|
|
|
--header=STR String to print as header
|
|
|
|
|
--header-lines=N The first N lines of the input are treated as header
|
|
|
|
|
--header-first Print header before the prompt line
|
|
|
|
|
--ellipsis=STR Ellipsis to show when line is truncated (default: '..')
|
|
|
|
|
|
|
|
|
|
Display
|
|
|
|
|
--ansi Enable processing of ANSI color codes
|
|
|
|
|
--tabstop=SPACES Number of spaces for a tab character (default: 8)
|
|
|
|
|
--color=COLSPEC Base scheme (dark|light|16|bw) and/or custom colors
|
|
|
|
|
--no-bold Do not use bold text
|
|
|
|
|
--ansi Enable processing of ANSI color codes
|
|
|
|
|
--tabstop=SPACES Number of spaces for a tab character (default: 8)
|
|
|
|
|
--color=COLSPEC Base scheme (dark|light|16|bw) and/or custom colors
|
|
|
|
|
--no-bold Do not use bold text
|
|
|
|
|
|
|
|
|
|
History
|
|
|
|
|
--history=FILE History file
|
|
|
|
|
--history-size=N Maximum number of history entries (default: 1000)
|
|
|
|
|
--history=FILE History file
|
|
|
|
|
--history-size=N Maximum number of history entries (default: 1000)
|
|
|
|
|
|
|
|
|
|
Preview
|
|
|
|
|
--preview=COMMAND Command to preview highlighted line ({})
|
|
|
|
|
--preview-window=OPT Preview window layout (default: right:50%)
|
|
|
|
|
[up|down|left|right][,SIZE[%]]
|
|
|
|
|
[,[no]wrap][,[no]cycle][,[no]follow][,[no]hidden]
|
|
|
|
|
[,border-BORDER_OPT]
|
|
|
|
|
[,+SCROLL[OFFSETS][/DENOM]][,~HEADER_LINES]
|
|
|
|
|
[,default][,<SIZE_THRESHOLD(ALTERNATIVE_LAYOUT)]
|
|
|
|
|
--preview=COMMAND Command to preview highlighted line ({})
|
|
|
|
|
--preview-window=OPT Preview window layout (default: right:50%)
|
|
|
|
|
[up|down|left|right][,SIZE[%]]
|
|
|
|
|
[,[no]wrap][,[no]cycle][,[no]follow][,[no]hidden]
|
|
|
|
|
[,border-BORDER_OPT]
|
|
|
|
|
[,+SCROLL[OFFSETS][/DENOM]][,~HEADER_LINES]
|
|
|
|
|
[,default][,<SIZE_THRESHOLD(ALTERNATIVE_LAYOUT)]
|
|
|
|
|
|
|
|
|
|
Scripting
|
|
|
|
|
-q, --query=STR Start the finder with the given query
|
|
|
|
|
-1, --select-1 Automatically select the only match
|
|
|
|
|
-0, --exit-0 Exit immediately when there's no match
|
|
|
|
|
-f, --filter=STR Filter mode. Do not start interactive finder.
|
|
|
|
|
--print-query Print query as the first line
|
|
|
|
|
--expect=KEYS Comma-separated list of keys to complete fzf
|
|
|
|
|
--read0 Read input delimited by ASCII NUL characters
|
|
|
|
|
--print0 Print output delimited by ASCII NUL characters
|
|
|
|
|
--sync Synchronous search for multi-staged filtering
|
|
|
|
|
--version Display version information and exit
|
|
|
|
|
-q, --query=STR Start the finder with the given query
|
|
|
|
|
-1, --select-1 Automatically select the only match
|
|
|
|
|
-0, --exit-0 Exit immediately when there's no match
|
|
|
|
|
-f, --filter=STR Filter mode. Do not start interactive finder.
|
|
|
|
|
--print-query Print query as the first line
|
|
|
|
|
--expect=KEYS Comma-separated list of keys to complete fzf
|
|
|
|
|
--read0 Read input delimited by ASCII NUL characters
|
|
|
|
|
--print0 Print output delimited by ASCII NUL characters
|
|
|
|
|
--sync Synchronous search for multi-staged filtering
|
|
|
|
|
--version Display version information and exit
|
|
|
|
|
|
|
|
|
|
Environment variables
|
|
|
|
|
FZF_DEFAULT_COMMAND Default command to use when input is tty
|
|
|
|
|
FZF_DEFAULT_OPTS Default options
|
|
|
|
|
(e.g. '--layout=reverse --inline-info')
|
|
|
|
|
FZF_DEFAULT_COMMAND Default command to use when input is tty
|
|
|
|
|
FZF_DEFAULT_OPTS Default options
|
|
|
|
|
(e.g. '--layout=reverse --inline-info')
|
|
|
|
|
|
|
|
|
|
`
|
|
|
|
|
|
|
|
|
@ -188,6 +192,13 @@ type previewOpts struct {
|
|
|
|
|
alternative *previewOpts
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func parseLabelPosition(arg string) int {
|
|
|
|
|
if strings.ToLower(arg) == "center" {
|
|
|
|
|
return 0
|
|
|
|
|
}
|
|
|
|
|
return atoi(arg)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (a previewOpts) aboveOrBelow() bool {
|
|
|
|
|
return a.size.size > 0 && (a.position == posUp || a.position == posDown)
|
|
|
|
|
}
|
|
|
|
@ -258,6 +269,8 @@ type Options struct {
|
|
|
|
|
Margin [4]sizeSpec
|
|
|
|
|
Padding [4]sizeSpec
|
|
|
|
|
BorderShape tui.BorderShape
|
|
|
|
|
Label string
|
|
|
|
|
LabelPos int
|
|
|
|
|
Unicode bool
|
|
|
|
|
Tabstop int
|
|
|
|
|
ClearOnExit bool
|
|
|
|
@ -324,6 +337,8 @@ func defaultOptions() *Options {
|
|
|
|
|
Padding: defaultMargin(),
|
|
|
|
|
Unicode: true,
|
|
|
|
|
Tabstop: 8,
|
|
|
|
|
Label: "",
|
|
|
|
|
LabelPos: 0,
|
|
|
|
|
ClearOnExit: true,
|
|
|
|
|
Version: false}
|
|
|
|
|
}
|
|
|
|
@ -798,6 +813,8 @@ func parseTheme(defaultTheme *tui.ColorTheme, str string) *tui.ColorTheme {
|
|
|
|
|
mergeAttr(&theme.CurrentMatch)
|
|
|
|
|
case "border":
|
|
|
|
|
mergeAttr(&theme.Border)
|
|
|
|
|
case "label":
|
|
|
|
|
mergeAttr(&theme.BorderLabel)
|
|
|
|
|
case "prompt":
|
|
|
|
|
mergeAttr(&theme.Prompt)
|
|
|
|
|
case "spinner":
|
|
|
|
@ -1556,6 +1573,11 @@ func parseOptions(opts *Options, allArgs []string) {
|
|
|
|
|
case "--border":
|
|
|
|
|
hasArg, arg := optionalNextString(allArgs, &i)
|
|
|
|
|
opts.BorderShape = parseBorder(arg, !hasArg)
|
|
|
|
|
case "--border-label":
|
|
|
|
|
opts.Label = nextString(allArgs, &i, "label required")
|
|
|
|
|
case "--border-label-pos":
|
|
|
|
|
pos := nextString(allArgs, &i, "label position required (positive or negative integer or 'center')")
|
|
|
|
|
opts.LabelPos = parseLabelPosition(pos)
|
|
|
|
|
case "--no-unicode":
|
|
|
|
|
opts.Unicode = false
|
|
|
|
|
case "--unicode":
|
|
|
|
@ -1591,6 +1613,10 @@ func parseOptions(opts *Options, allArgs []string) {
|
|
|
|
|
opts.Delimiter = delimiterRegexp(value)
|
|
|
|
|
} else if match, value := optString(arg, "--border="); match {
|
|
|
|
|
opts.BorderShape = parseBorder(value, false)
|
|
|
|
|
} else if match, value := optString(arg, "--border-label="); match {
|
|
|
|
|
opts.Label = value
|
|
|
|
|
} else if match, value := optString(arg, "--border-label-pos="); match {
|
|
|
|
|
opts.LabelPos = parseLabelPosition(value)
|
|
|
|
|
} else if match, value := optString(arg, "--prompt="); match {
|
|
|
|
|
opts.Prompt = value
|
|
|
|
|
} else if match, value := optString(arg, "--pointer="); match {
|
|
|
|
|