Based on (now archived) work of @shahinism. Thank you!
The official home of xontrib-fzf-widgets is now at https://github.com/laloch/xontrib-fzf-widgets.
This extension will add some fzf widgets to your xonsh shell that you can bind and use as follows:
- ssh: Search in /etc/ssh/ssh_config or ~/.ssh/config items and issue ssh command on the chosen item.
- history insert: Search in all history entries and insert the chosen command to the prompt.
- find file: Find one or more files in the current directory and its sub-directories.
- find directory: Similar to the previous one, but intended to only search for directories.
Install the package:
pip install xontrib-fzf-widgets
Enable it by adding fzf-widgets to your ~/.xonshrc file:
xontrib load fzf-widgets
And set your desired keybindings for each widget in ~/.xonshrc file or set it to None to disable it:
$fzf_history_binding = "c-r" # Ctrl+R
$fzf_ssh_binding = "c-s" # Ctrl+S
$fzf_file_binding = "c-t" # Ctrl+T
$fzf_dir_binding = "c-g" # Ctrl+G
You can find the names of various keys here in python-prompt-toolkit
.
Other configuration variables:
$fzf_find_command
: A command used by fzf to search for files.$fzf_find_dirs_command
: A command used by fzf to search for directories.
$fzf_find_command = "fd"
$fzf_find_dirs_command = "fd -t d"
- If fzf shows garbled file names like
[1;38;5;63maur[0m
, those extra characters are terminal control codes. That most probably means your file finder is set up to produce colorized output. You can either change your$fzf_find_command
and$fzf_find_dirs_command
to remove the coloring or add--ansi
switch to your$FZF_DEFAULT_OPTS
environment variable if you want to preserve the colors. Seeman 1 fzf
for details.