Update README: Examples using fd

- https://github.com/sharkdp/fd
- https://mike.place/2017/fzf-fd/

/cc @williamsmj
This commit is contained in:
Junegunn Choi 2017-10-29 23:34:26 +09:00
parent fe7b91dfd9
commit a6d2ab3360
No known key found for this signature in database
GPG Key ID: 254BC280FEF9C627

View File

@ -231,7 +231,7 @@ or `py`.
- `FZF_DEFAULT_COMMAND` - `FZF_DEFAULT_COMMAND`
- Default command to use when input is tty - Default command to use when input is tty
- e.g. `export FZF_DEFAULT_COMMAND='rg --files'` - e.g. `export FZF_DEFAULT_COMMAND='fd --type f'`
- `FZF_DEFAULT_OPTS` - `FZF_DEFAULT_OPTS`
- Default options - Default options
- e.g. `export FZF_DEFAULT_OPTS="--reverse --inline-info"` - e.g. `export FZF_DEFAULT_OPTS="--reverse --inline-info"`
@ -369,27 +369,20 @@ export FZF_COMPLETION_TRIGGER='~~'
# Options to fzf command # Options to fzf command
export FZF_COMPLETION_OPTS='+c -x' export FZF_COMPLETION_OPTS='+c -x'
# Use rg (https://github.com/BurntSushi/ripgrep) instead of the default find # Use fd (https://github.com/sharkdp/fd) instead of the default find
# command for listing path candidates. # command for listing path candidates.
# - The first argument to the function is the base path to start traversal # - The first argument to the function ($1) is the base path to start traversal
# - See the source code (completion.{bash,zsh}) for the details. # - See the source code (completion.{bash,zsh}) for the details.
# - rg only lists files, so we use with-dir script to augment the output
_fzf_compgen_path() { _fzf_compgen_path() {
rg --files "$1" | with-dir "$1" fd --hidden --follow --exclude ".git" . "$1"
} }
# Use rg to generate the list for directory completion # Use fd to generate the list for directory completion
_fzf_compgen_dir() { _fzf_compgen_dir() {
rg --files "$1" | only-dir "$1" fd --type d --hidden --follow --exclude ".git" . "$1"
} }
``` ```
`only-dir` and `with-dir` scripts can be found [here][dir-scripts]. They are
written in Ruby, but you should be able to rewrite them in any language you
prefer.
[dir-scripts]: https://gist.github.com/junegunn/8c3796a965f22e6a803fe53096ad7a75
#### Supported commands #### Supported commands
On bash, fuzzy completion is enabled only for a predefined set of commands On bash, fuzzy completion is enabled only for a predefined set of commands
@ -490,29 +483,33 @@ For more advanced examples, see [Key bindings for git with fzf][fzf-git].
Tips Tips
---- ----
#### Respecting `.gitignore`, `.hgignore`, and `svn:ignore` #### Respecting `.gitignore`
[ripgrep](https://github.com/BurntSushi/ripgrep) or [the silver You can use [fd](https://github.com/sharkdp/fd),
searcher](https://github.com/ggreer/the_silver_searcher) can do the filtering: [ripgrep](https://github.com/BurntSushi/ripgrep), or [the silver
searcher](https://github.com/ggreer/the_silver_searcher) instead of the
default find command to traverse the file system while respecting
`.gitignore`.
```sh ```sh
# Feed the output of rg into fzf # Feed the output of fd into fzf
rg --files | fzf fd --type f | fzf
# Setting rg as the default source for fzf # Setting fd as the default source for fzf
export FZF_DEFAULT_COMMAND='rg --files' export FZF_DEFAULT_COMMAND='fd --type f'
# Now fzf (w/o pipe) will use rg instead of find # Now fzf (w/o pipe) will use fd instead of find
fzf fzf
# To apply the command to CTRL-T as well # To apply the command to CTRL-T as well
export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND" export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
``` ```
If you don't want to exclude hidden files, use the following command: If you want the command to follow symbolic links, and don't want it to exclude
hidden files, use the following command:
```sh ```sh
export FZF_DEFAULT_COMMAND='rg --files --hidden --glob \!.git' export FZF_DEFAULT_COMMAND='fd --type f --hidden --follow --exclude .git'
``` ```
#### `git ls-tree` for fast traversal #### `git ls-tree` for fast traversal