{"id":13393342,"url":"https://github.com/junegunn/fzf","last_synced_at":"2025-05-12T17:43:06.852Z","repository":{"id":11370823,"uuid":"13807606","full_name":"junegunn/fzf","owner":"junegunn","description":":cherry_blossom: A command-line fuzzy finder","archived":false,"fork":false,"pushed_at":"2025-05-04T10:00:08.000Z","size":7135,"stargazers_count":69894,"open_issues_count":286,"forks_count":2504,"subscribers_count":394,"default_branch":"master","last_synced_at":"2025-05-05T15:09:23.922Z","etag":null,"topics":["bash","cli","fish","fzf","go","neovim","tmux","unix","vim","zsh"],"latest_commit_sha":null,"homepage":"https://junegunn.github.io/fzf/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/junegunn.png","metadata":{"files":{"readme":"README-VIM.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"junegunn"}},"created_at":"2013-10-23T16:04:23.000Z","updated_at":"2025-05-05T14:53:53.000Z","dependencies_parsed_at":"2023-10-11T02:48:14.662Z","dependency_job_id":"6f0862f7-1e45-4817-9dbb-c50562197681","html_url":"https://github.com/junegunn/fzf","commit_stats":{"total_commits":2460,"total_committers":262,"mean_commits":9.389312977099237,"dds":"0.19430894308943092","last_synced_commit":"a34e8dcdc99d1509667f74a5e24a41ace172757e"},"previous_names":[],"tags_count":160,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/junegunn%2Ffzf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/junegunn%2Ffzf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/junegunn%2Ffzf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/junegunn%2Ffzf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/junegunn","download_url":"https://codeload.github.com/junegunn/fzf/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252624548,"owners_count":21778293,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bash","cli","fish","fzf","go","neovim","tmux","unix","vim","zsh"],"created_at":"2024-07-30T17:00:50.681Z","updated_at":"2025-05-12T17:43:04.690Z","avatar_url":"https://github.com/junegunn.png","language":"Go","readme":"FZF Vim integration\n===================\n\nInstallation\n------------\n\nOnce you have fzf installed, you can enable it inside Vim simply by adding the\ndirectory to `\u0026runtimepath` in your Vim configuration file. The path may\ndiffer depending on the package manager.\n\n```vim\n\" If installed using Homebrew\nset rtp+=/usr/local/opt/fzf\n\n\" If installed using Homebrew on Apple Silicon\nset rtp+=/opt/homebrew/opt/fzf\n\n\" If you have cloned fzf on ~/.fzf directory\nset rtp+=~/.fzf\n```\n\nIf you use [vim-plug](https://github.com/junegunn/vim-plug), the same can be\nwritten as:\n\n```vim\n\" If installed using Homebrew\nPlug '/usr/local/opt/fzf'\n\n\" If installed using Homebrew on Apple Silicon\nPlug '/opt/homebrew/opt/fzf'\n\n\" If you have cloned fzf on ~/.fzf directory\nPlug '~/.fzf'\n```\n\nBut if you want the latest Vim plugin file from GitHub rather than the one\nincluded in the package, write:\n\n```vim\nPlug 'junegunn/fzf'\n```\n\nThe Vim plugin will pick up fzf binary available on the system. If fzf is not\nfound on `$PATH`, it will ask you if it should download the latest binary for\nyou.\n\nTo make sure that you have the latest version of the binary, set up\npost-update hook like so:\n\n```vim\nPlug 'junegunn/fzf', { 'do': { -\u003e fzf#install() } }\n```\n\nSummary\n-------\n\nThe Vim plugin of fzf provides two core functions, and `:FZF` command which is\nthe basic file selector command built on top of them.\n\n1. **`fzf#run([spec dict])`**\n    - Starts fzf inside Vim with the given spec\n    - `:call fzf#run({'source': 'ls'})`\n2. **`fzf#wrap([spec dict]) -\u003e (dict)`**\n    - Takes a spec for `fzf#run` and returns an extended version of it with\n      additional options for addressing global preferences (`g:fzf_xxx`)\n        - `:echo fzf#wrap({'source': 'ls'})`\n    - We usually *wrap* a spec with `fzf#wrap` before passing it to `fzf#run`\n        - `:call fzf#run(fzf#wrap({'source': 'ls'}))`\n3. **`:FZF [fzf_options string] [path string]`**\n    - Basic fuzzy file selector\n    - A reference implementation for those who don't want to write VimScript\n      to implement custom commands\n    - If you're looking for more such commands, check out [fzf.vim](https://github.com/junegunn/fzf.vim) project.\n\nThe most important of all is `fzf#run`, but it would be easier to understand\nthe whole if we start off with `:FZF` command.\n\n`:FZF[!]`\n---------\n\n```vim\n\" Look for files under current directory\n:FZF\n\n\" Look for files under your home directory\n:FZF ~\n\n\" With fzf command-line options\n:FZF --reverse --info=inline /tmp\n\n\" Bang version starts fzf in fullscreen mode\n:FZF!\n```\n\nSimilarly to [ctrlp.vim](https://github.com/kien/ctrlp.vim), use enter key,\n`CTRL-T`, `CTRL-X` or `CTRL-V` to open selected files in the current window,\nin new tabs, in horizontal splits, or in vertical splits respectively.\n\nNote that the environment variables `FZF_DEFAULT_COMMAND` and\n`FZF_DEFAULT_OPTS` also apply here.\n\n### Configuration\n\n- `g:fzf_action`\n    - Customizable extra key bindings for opening selected files in different ways\n- `g:fzf_layout`\n    - Determines the size and position of fzf window\n- `g:fzf_colors`\n    - Customizes fzf colors to match the current color scheme\n- `g:fzf_history_dir`\n    - Enables history feature\n\n#### Examples\n\n```vim\n\" This is the default extra key bindings\nlet g:fzf_action = {\n  \\ 'ctrl-t': 'tab split',\n  \\ 'ctrl-x': 'split',\n  \\ 'ctrl-v': 'vsplit' }\n\n\" An action can be a reference to a function that processes selected lines\nfunction! s:build_quickfix_list(lines)\n  call setqflist(map(copy(a:lines), '{ \"filename\": v:val, \"lnum\": 1 }'))\n  copen\n  cc\nendfunction\n\nlet g:fzf_action = {\n  \\ 'ctrl-q': function('s:build_quickfix_list'),\n  \\ 'ctrl-t': 'tab split',\n  \\ 'ctrl-x': 'split',\n  \\ 'ctrl-v': 'vsplit' }\n\n\" Default fzf layout\n\" - Popup window (center of the screen)\nlet g:fzf_layout = { 'window': { 'width': 0.9, 'height': 0.6 } }\n\n\" - Popup window (center of the current window)\nlet g:fzf_layout = { 'window': { 'width': 0.9, 'height': 0.6, 'relative': v:true } }\n\n\" - Popup window (anchored to the bottom of the current window)\nlet g:fzf_layout = { 'window': { 'width': 0.9, 'height': 0.6, 'relative': v:true, 'yoffset': 1.0 } }\n\n\" - down / up / left / right\nlet g:fzf_layout = { 'down': '40%' }\n\n\" - Window using a Vim command\nlet g:fzf_layout = { 'window': 'enew' }\nlet g:fzf_layout = { 'window': '-tabnew' }\nlet g:fzf_layout = { 'window': '10new' }\n\n\" Customize fzf colors to match your color scheme\n\" - fzf#wrap translates this to a set of `--color` options\nlet g:fzf_colors =\n\\ { 'fg':      ['fg', 'Normal'],\n  \\ 'bg':      ['bg', 'Normal'],\n  \\ 'query':   ['fg', 'Normal'],\n  \\ 'hl':      ['fg', 'Comment'],\n  \\ 'fg+':     ['fg', 'CursorLine', 'CursorColumn', 'Normal'],\n  \\ 'bg+':     ['bg', 'CursorLine', 'CursorColumn'],\n  \\ 'hl+':     ['fg', 'Statement'],\n  \\ 'info':    ['fg', 'PreProc'],\n  \\ 'border':  ['fg', 'Ignore'],\n  \\ 'prompt':  ['fg', 'Conditional'],\n  \\ 'pointer': ['fg', 'Exception'],\n  \\ 'marker':  ['fg', 'Keyword'],\n  \\ 'spinner': ['fg', 'Label'],\n  \\ 'header':  ['fg', 'Comment'] }\n\n\" Enable per-command history\n\" - History files will be stored in the specified directory\n\" - When set, CTRL-N and CTRL-P will be bound to 'next-history' and\n\"   'previous-history' instead of 'down' and 'up'.\nlet g:fzf_history_dir = '~/.local/share/fzf-history'\n```\n\n##### Explanation of `g:fzf_colors`\n\n`g:fzf_colors` is a dictionary mapping fzf elements to a color specification\nlist:\n\n    element: [ component, group1 [, group2, ...] ]\n\n- `element` is an fzf element to apply a color to:\n\n  | Element                     | Description                                           |\n  | ---                         | ---                                                   |\n  | `fg`  / `bg`  / `hl`        | Item (foreground / background / highlight)            |\n  | `fg+` / `bg+` / `hl+`       | Current item (foreground / background / highlight)    |\n  | `preview-fg` / `preview-bg` | Preview window text and background                    |\n  | `hl`  / `hl+`               | Highlighted substrings (normal / current)             |\n  | `gutter`                    | Background of the gutter on the left                  |\n  | `pointer`                   | Pointer to the current line (`\u003e`)                     |\n  | `marker`                    | Multi-select marker (`\u003e`)                             |\n  | `border`                    | Border around the window (`--border` and `--preview`) |\n  | `header`                    | Header (`--header` or `--header-lines`)               |\n  | `info`                      | Info line (match counters)                            |\n  | `spinner`                   | Streaming input indicator                             |\n  | `query`                     | Query string                                          |\n  | `disabled`                  | Query string when search is disabled                  |\n  | `prompt`                    | Prompt before query (`\u003e `)                            |\n  | `pointer`                   | Pointer to the current line (`\u003e`)                     |\n\n- `component` specifies the component (`fg` / `bg`) from which to extract the\n  color when considering each of the following highlight groups\n\n- `group1 [, group2, ...]` is a list of highlight groups that are searched (in\n  order) for a matching color definition\n\nFor example, consider the following specification:\n\n```vim\n  'prompt':  ['fg', 'Conditional', 'Comment'],\n```\n\nThis means we color the **prompt**\n- using the `fg` attribute of the `Conditional` if it exists,\n- otherwise use the `fg` attribute of the `Comment` highlight group if it exists,\n- otherwise fall back to the default color settings for the **prompt**.\n\nYou can examine the color option generated according the setting by printing\nthe result of `fzf#wrap()` function like so:\n\n```vim\n:echo fzf#wrap()\n```\n\n`fzf#run`\n---------\n\n`fzf#run()` function is the core of Vim integration. It takes a single\ndictionary argument, *a spec*, and starts fzf process accordingly. At the very\nleast, specify `sink` option to tell what it should do with the selected\nentry.\n\n```vim\ncall fzf#run({'sink': 'e'})\n```\n\nWe haven't specified the `source`, so this is equivalent to starting fzf on\ncommand line without standard input pipe; fzf will traverse the file system\nunder the current directory to get the list of files. (If\n`$FZF_DEFAULT_COMMAND` is set, fzf will use the output of the command\ninstead.) When you select one, it will open it with the sink, `:e` command. If\nyou want to open it in a new tab, you can pass `:tabedit` command instead as\nthe sink.\n\n```vim\ncall fzf#run({'sink': 'tabedit'})\n```\n\nYou can use any shell command as the source to generate the list. The\nfollowing example will list the files managed by git. It's equivalent to\nrunning `git ls-files | fzf` on shell.\n\n```vim\ncall fzf#run({'source': 'git ls-files', 'sink': 'e'})\n```\n\nfzf options can be specified as `options` entry in spec dictionary.\n\n```vim\ncall fzf#run({'sink': 'tabedit', 'options': '--multi --reverse'})\n```\n\nYou can also pass a layout option if you don't want fzf window to take up the\nentire screen.\n\n```vim\n\" up / down / left / right / window are allowed\ncall fzf#run({'source': 'git ls-files', 'sink': 'e', 'left': '40%'})\ncall fzf#run({'source': 'git ls-files', 'sink': 'e', 'window': '30vnew'})\n```\n\n`source` doesn't have to be an external shell command, you can pass a Vim\narray as the source. In the next example, we pass the names of color\nschemes as the source to implement a color scheme selector.\n\n```vim\ncall fzf#run({'source': map(split(globpath(\u0026rtp, 'colors/*.vim')),\n            \\               'fnamemodify(v:val, \":t:r\")'),\n            \\ 'sink': 'colo', 'left': '25%'})\n```\n\nThe following table summarizes the available options.\n\n| Option name                | Type          | Description                                                           |\n| -------------------------- | ------------- | ----------------------------------------------------------------      |\n| `source`                   | string        | External command to generate input to fzf (e.g. `find .`)             |\n| `source`                   | list          | Vim list as input to fzf                                              |\n| `sink`                     | string        | Vim command to handle the selected item (e.g. `e`, `tabe`)            |\n| `sink`                     | funcref       | Function to be called with each selected item                         |\n| `sinklist` (or `sink*`)    | funcref       | Similar to `sink`, but takes the list of output lines at once         |\n| `exit`                     | funcref       | Function to be called with the exit status of fzf (e.g. 0, 1, 2, 130) |\n| `options`                  | string/list   | Options to fzf                                                        |\n| `dir`                      | string        | Working directory                                                     |\n| `up`/`down`/`left`/`right` | number/string | (Layout) Window position and size (e.g. `20`, `50%`)                  |\n| `tmux`                     | string        | (Layout) `--tmux` options (e.g. `90%,70%`)                            |\n| `window` (Vim 8 / Neovim)  | string        | (Layout) Command to open fzf window (e.g. `vertical aboveleft 30new`) |\n| `window` (Vim 8 / Neovim)  | dict          | (Layout) Popup window settings (e.g. `{'width': 0.9, 'height': 0.6}`) |\n\n`options` entry can be either a string or a list. For simple cases, string\nshould suffice, but prefer to use list type to avoid escaping issues.\n\n```vim\ncall fzf#run({'options': '--reverse --prompt \"C:\\\\Program Files\\\\\"'})\ncall fzf#run({'options': ['--reverse', '--prompt', 'C:\\Program Files\\']})\n```\n\nWhen `window` entry is a dictionary, fzf will start in a popup window. The\nfollowing options are allowed:\n\n- Required:\n    - `width` [float range [0 ~ 1]] or [integer range [8 ~ ]]\n    - `height` [float range [0 ~ 1]] or [integer range [4 ~ ]]\n- Optional:\n    - `yoffset` [float default 0.5 range [0 ~ 1]]\n    - `xoffset` [float default 0.5 range [0 ~ 1]]\n    - `relative` [boolean default v:false]\n    - `border` [string default `rounded` (`sharp` on Windows)]: Border style\n        - `rounded` / `sharp` / `horizontal` / `vertical` / `top` / `bottom` / `left` / `right` / `no[ne]`\n\n`fzf#wrap`\n----------\n\nWe have seen that several aspects of `:FZF` command can be configured with\na set of global option variables; different ways to open files\n(`g:fzf_action`), window position and size (`g:fzf_layout`), color palette\n(`g:fzf_colors`), etc.\n\nSo how can we make our custom `fzf#run` calls also respect those variables?\nSimply by *\"wrapping\"* the spec dictionary with `fzf#wrap` before passing it\nto `fzf#run`.\n\n- **`fzf#wrap([name string], [spec dict], [fullscreen bool]) -\u003e (dict)`**\n    - All arguments are optional. Usually we only need to pass a spec dictionary.\n    - `name` is for managing history files. It is ignored if\n      `g:fzf_history_dir` is not defined.\n    - `fullscreen` can be either `0` or `1` (default: 0).\n\n`fzf#wrap` takes a spec and returns an extended version of it (also\na dictionary) with additional options for addressing global preferences. You\ncan examine the return value of it like so:\n\n```vim\necho fzf#wrap({'source': 'ls'})\n```\n\nAfter we *\"wrap\"* our spec, we pass it to `fzf#run`.\n\n```vim\ncall fzf#run(fzf#wrap({'source': 'ls'}))\n```\n\nNow it supports `CTRL-T`, `CTRL-V`, and `CTRL-X` key bindings (configurable\nvia `g:fzf_action`) and it opens fzf window according to `g:fzf_layout`\nsetting.\n\nTo make it easier to use, let's define `LS` command.\n\n```vim\ncommand! LS call fzf#run(fzf#wrap({'source': 'ls'}))\n```\n\nType `:LS` and see how it works.\n\nWe would like to make `:LS!` (bang version) open fzf in fullscreen, just like\n`:FZF!`. Add `-bang` to command definition, and use `\u003cbang\u003e` value to set\nthe last `fullscreen` argument of `fzf#wrap` (see `:help \u003cbang\u003e`).\n\n```vim\n\" On :LS!, \u003cbang\u003e evaluates to '!', and '!0' becomes 1\ncommand! -bang LS call fzf#run(fzf#wrap({'source': 'ls'}, \u003cbang\u003e0))\n```\n\nOur `:LS` command will be much more useful if we can pass a directory argument\nto it, so that something like `:LS /tmp` is possible.\n\n```vim\ncommand! -bang -complete=dir -nargs=? LS\n    \\ call fzf#run(fzf#wrap({'source': 'ls', 'dir': \u003cq-args\u003e}, \u003cbang\u003e0))\n```\n\nLastly, if you have enabled `g:fzf_history_dir`, you might want to assign\na unique name to our command and pass it as the first argument to `fzf#wrap`.\n\n```vim\n\" The query history for this command will be stored as 'ls' inside g:fzf_history_dir.\n\" The name is ignored if g:fzf_history_dir is not defined.\ncommand! -bang -complete=dir -nargs=? LS\n    \\ call fzf#run(fzf#wrap('ls', {'source': 'ls', 'dir': \u003cq-args\u003e}, \u003cbang\u003e0))\n```\n\n### Global options supported by `fzf#wrap`\n\n- `g:fzf_layout`\n- `g:fzf_action`\n    - **Works only when no custom `sink` (or `sinklist`) is provided**\n        - Having custom sink usually means that each entry is not an ordinary\n          file path (e.g. name of color scheme), so we can't blindly apply the\n          same strategy (i.e. `tabedit some-color-scheme` doesn't make sense)\n- `g:fzf_colors`\n- `g:fzf_history_dir`\n\nTips\n----\n\n### fzf inside terminal buffer\n\nOn the latest versions of Vim and Neovim, fzf will start in a terminal buffer.\nIf you find the default ANSI colors to be different, consider configuring the\ncolors using `g:terminal_ansi_colors` in regular Vim or `g:terminal_color_x`\nin Neovim.\n\n```vim\n\" Terminal colors for seoul256 color scheme\nif has('nvim')\n  let g:terminal_color_0 = '#4e4e4e'\n  let g:terminal_color_1 = '#d68787'\n  let g:terminal_color_2 = '#5f865f'\n  let g:terminal_color_3 = '#d8af5f'\n  let g:terminal_color_4 = '#85add4'\n  let g:terminal_color_5 = '#d7afaf'\n  let g:terminal_color_6 = '#87afaf'\n  let g:terminal_color_7 = '#d0d0d0'\n  let g:terminal_color_8 = '#626262'\n  let g:terminal_color_9 = '#d75f87'\n  let g:terminal_color_10 = '#87af87'\n  let g:terminal_color_11 = '#ffd787'\n  let g:terminal_color_12 = '#add4fb'\n  let g:terminal_color_13 = '#ffafaf'\n  let g:terminal_color_14 = '#87d7d7'\n  let g:terminal_color_15 = '#e4e4e4'\nelse\n  let g:terminal_ansi_colors = [\n    \\ '#4e4e4e', '#d68787', '#5f865f', '#d8af5f',\n    \\ '#85add4', '#d7afaf', '#87afaf', '#d0d0d0',\n    \\ '#626262', '#d75f87', '#87af87', '#ffd787',\n    \\ '#add4fb', '#ffafaf', '#87d7d7', '#e4e4e4'\n  \\ ]\nendif\n```\n\n### Starting fzf in a popup window\n\n```vim\n\" Required:\n\" - width [float range [0 ~ 1]] or [integer range [8 ~ ]]\n\" - height [float range [0 ~ 1]] or [integer range [4 ~ ]]\n\"\n\" Optional:\n\" - xoffset [float default 0.5 range [0 ~ 1]]\n\" - yoffset [float default 0.5 range [0 ~ 1]]\n\" - relative [boolean default v:false]\n\" - border [string default 'rounded']: Border style\n\"   - 'rounded' / 'sharp' / 'horizontal' / 'vertical' / 'top' / 'bottom' / 'left' / 'right'\nlet g:fzf_layout = { 'window': { 'width': 0.9, 'height': 0.6 } }\n```\n\nAlternatively, you can make fzf open in a tmux popup window (requires tmux 3.2\nor above) by putting `--tmux` option value in `tmux` key.\n\n```vim\n\" See `--tmux` option in `man fzf` for available options\n\" [center|top|bottom|left|right][,SIZE[%]][,SIZE[%]]\nif exists('$TMUX')\n  let g:fzf_layout = { 'tmux': '90%,70%' }\nelse\n  let g:fzf_layout = { 'window': { 'width': 0.9, 'height': 0.6 } }\nendif\n```\n\n### Hide statusline\n\nWhen fzf starts in a terminal buffer, the file type of the buffer is set to\n`fzf`. So you can set up `FileType fzf` autocmd to customize the settings of\nthe window.\n\nFor example, if you open fzf on the bottom on the screen (e.g. `{'down':\n'40%'}`), you might want to temporarily disable the statusline for a cleaner\nlook.\n\n```vim\nlet g:fzf_layout = { 'down': '30%' }\nautocmd! FileType fzf\nautocmd  FileType fzf set laststatus=0 noshowmode noruler\n  \\| autocmd BufLeave \u003cbuffer\u003e set laststatus=2 showmode ruler\n```\n\n[License](LICENSE)\n------------------\n\nThe MIT License (MIT)\n\nCopyright (c) 2013-2024 Junegunn Choi\n","funding_links":["https://github.com/sponsors/junegunn"],"categories":["Go","Linux Tools","Uncategorized","Utilities","Bash Utilities","Lovely Commands","HarmonyOS","Command-line","开源类库","Files and Directories","Frameworks","Misc","Developer Tools","Command-Line Productivity","Tools/Scripts/Code:","Command Line","CLI tools","Command Line Utilities","User Interaction","Config files","CLI","Open source library","Interaction","[Go](#go)","Weapons","Linux System Tools","\u003e 20K ⭐️","0x07. junegunn/fzf","Go (531)","Install Vundle","语言资源库","终端","Miscellaneous Tools","Terminal","cli","Tools","Command Line Apps","CLI 项目","Vim","工具库","Awesome Tools","CLIs \u0026 Terminal Tools","Table of Contents","常用工具","Tools and Plugins","Mac 软件","Requirements","Programming Languages","开源工具","Resources","UI Components","Finder","go","公用事业公司","zsh","🐧 Linux","全局搜索","实用工具","\u003ca name=\"option-picker\"\u003e\u003c/a\u003eFuzzy finders and option pickers","\u003ca id=\"software\"\u003e\u003c/a\u003eSoftware","Linux","编程","Tools \u0026 Services","tools","Utility","File Management","Other","Languages and frameworks","Applications","實用工具","工具库`可以提升效率的通用代码库和工具`","⚡ Productivity","Linux生态圈Dev\u0026Ops工具与服务","\\*nix/\\*nux","Repositories","Productivity and Workflow Tools","Cli","\u003ca name=\"core\"\u003e\u003c/a\u003ecore","Command line - Linux"],"sub_categories":["Uncategorized","HTTP Clients","Installing","Utility/Miscellaneous","Windows Manager","命令行","Search","[zplug](https://github.com/zplug/zplug)","Command Line Tools","Dependency Management","Tools","Command Line Interface","vimrc","Command Line","File \u0026 Directory Tools","Caveats","go","网络服务_其他","Smart Shell","\u003cb\u003e\u003ccode\u003e\u0026nbsp;\u0026nbsp;5971⭐\u003c/code\u003e\u003c/b\u003e \u003cb\u003e\u003ccode\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;229🍴\u003c/code\u003e\u003c/b\u003e [zplug](https://github.com/zplug/zplug))","Go","Other","Advanced Console UIs","交流","Terminal Tools","Terminal Utilities","爬虫工具","Windows","命令行工具","Others","Command-Line Tools","Searching","实用程序/Miscellaneous","Command line","shell","Software packages","Individual Episodes","Shell","System tools","高級控制台界面","\u003cspan id=\"高级控制台用户界面-advanced-console-uis\"\u003e高级控制台用户界面 Advanced Console UIs\u003c/span\u003e","查询语","Useful Linux Tools","Fail injection","高级控制台界面","Learning resources"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjunegunn%2Ffzf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjunegunn%2Ffzf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjunegunn%2Ffzf/lists"}