mirror of
https://github.com/junegunn/fzf.git
synced 2025-11-08 11:23:47 -05:00
feat: Allow disabling Ctrl-R binding in shell integration (#4535)
Close #4417
This commit is contained in:
12
CHANGELOG.md
12
CHANGELOG.md
@@ -27,6 +27,7 @@ This version introduces many new features centered around the new "raw" mode.
|
|||||||
| Enhancement | Key | `CTRL-N` | `down` -> `down-match` |
|
| Enhancement | Key | `CTRL-N` | `down` -> `down-match` |
|
||||||
| Enhancement | Key | `CTRL-P` | `up` -> `up-match` |
|
| Enhancement | Key | `CTRL-P` | `up` -> `up-match` |
|
||||||
| Enhancement | Shell | `CTRL-R` binding | Toggle raw mode with `ALT-R` |
|
| Enhancement | Shell | `CTRL-R` binding | Toggle raw mode with `ALT-R` |
|
||||||
|
| Enhancement | Shell | `CTRL-R` binding | Opt-out with an empty `FZF_CTRL_R_COMMAND` |
|
||||||
|
|
||||||
### Introducing "raw" mode
|
### Introducing "raw" mode
|
||||||
|
|
||||||
@@ -231,6 +232,17 @@ As described above, `$FZF_RAW` is now exported to child processes in raw mode,
|
|||||||
indicating whether the current item is a match (`1`) or not (`0`). It is not
|
indicating whether the current item is a match (`1`) or not (`0`). It is not
|
||||||
defined when not in raw mode.
|
defined when not in raw mode.
|
||||||
|
|
||||||
|
#### `$FZF_CTRL_R_COMMAND`
|
||||||
|
|
||||||
|
You can opt-out `CTRL-R` binding from the shell integration by setting
|
||||||
|
`FZF_CTRL_R_COMMAND` to an empty string. Setting it to any other value is not
|
||||||
|
supported and will result in a warning.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Disable the CTRL-R binding from the shell integration
|
||||||
|
FZF_CTRL_R_COMMAND= eval "$(fzf --bash)"
|
||||||
|
```
|
||||||
|
|
||||||
### Added key support for `--bind`
|
### Added key support for `--bind`
|
||||||
|
|
||||||
Pull request #3996 added support for many additional keys for `--bind` option,
|
Pull request #3996 added support for many additional keys for `--bind` option,
|
||||||
|
|||||||
15
README.md
15
README.md
@@ -218,13 +218,13 @@ Add the following line to your shell configuration file.
|
|||||||
> (e.g. `apt show fzf`)
|
> (e.g. `apt show fzf`)
|
||||||
|
|
||||||
> [!TIP]
|
> [!TIP]
|
||||||
> You can disable CTRL-T or ALT-C binding by setting `FZF_CTRL_T_COMMAND` or
|
> You can disable CTRL-T, CTRL-R, or ALT-C bindings by setting the
|
||||||
> `FZF_ALT_C_COMMAND` to an empty string when sourcing the script.
|
> corresponding `*_COMMAND` variable to an empty string when sourcing the
|
||||||
> For example, to disable ALT-C binding:
|
> script. For example, to disable CTRL-R and ALT-C:
|
||||||
>
|
>
|
||||||
> * bash: `FZF_ALT_C_COMMAND= eval "$(fzf --bash)"`
|
> * bash: `FZF_CTRL_R_COMMAND= FZF_ALT_C_COMMAND= eval "$(fzf --bash)"`
|
||||||
> * zsh: `FZF_ALT_C_COMMAND= source <(fzf --zsh)`
|
> * zsh: `FZF_CTRL_R_COMMAND= FZF_ALT_C_COMMAND= source <(fzf --zsh)`
|
||||||
> * fish: `fzf --fish | FZF_ALT_C_COMMAND= source`
|
> * fish: `fzf --fish | FZF_CTRL_R_COMMAND= FZF_ALT_C_COMMAND= source`
|
||||||
>
|
>
|
||||||
> Setting the variables after sourcing the script will have no effect.
|
> Setting the variables after sourcing the script will have no effect.
|
||||||
|
|
||||||
@@ -534,6 +534,9 @@ the following key bindings in bash, zsh, and fish.
|
|||||||
--color header:italic
|
--color header:italic
|
||||||
--header 'Press CTRL-Y to copy command into clipboard'"
|
--header 'Press CTRL-Y to copy command into clipboard'"
|
||||||
```
|
```
|
||||||
|
- Can be disabled by setting `FZF_CTRL_R_COMMAND` to an empty string when
|
||||||
|
sourcing the script
|
||||||
|
- Custom override via a non-empty `FZF_CTRL_R_COMMAND` is not yet supported and will emit a warning
|
||||||
- `ALT-C` - cd into the selected directory
|
- `ALT-C` - cd into the selected directory
|
||||||
- The list is generated using `--walker dir,follow,hidden` option
|
- The list is generated using `--walker dir,follow,hidden` option
|
||||||
- Set `FZF_ALT_C_COMMAND` to override the default command
|
- Set `FZF_ALT_C_COMMAND` to override the default command
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
# - $FZF_TMUX_OPTS
|
# - $FZF_TMUX_OPTS
|
||||||
# - $FZF_CTRL_T_COMMAND
|
# - $FZF_CTRL_T_COMMAND
|
||||||
# - $FZF_CTRL_T_OPTS
|
# - $FZF_CTRL_T_OPTS
|
||||||
|
# - $FZF_CTRL_R_COMMAND
|
||||||
# - $FZF_CTRL_R_OPTS
|
# - $FZF_CTRL_R_OPTS
|
||||||
# - $FZF_ALT_C_COMMAND
|
# - $FZF_ALT_C_COMMAND
|
||||||
# - $FZF_ALT_C_OPTS
|
# - $FZF_ALT_C_OPTS
|
||||||
@@ -132,9 +133,14 @@ if ((BASH_VERSINFO[0] < 4)); then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# CTRL-R - Paste the selected command from history into the command line
|
# CTRL-R - Paste the selected command from history into the command line
|
||||||
bind -m emacs-standard '"\C-r": "\C-e \C-u\C-y\ey\C-u`__fzf_history__`\e\C-e\er"'
|
if [[ ${FZF_CTRL_R_COMMAND-x} != "" ]]; then
|
||||||
bind -m vi-command '"\C-r": "\C-z\C-r\C-z"'
|
if [[ -n ${FZF_CTRL_R_COMMAND-} ]]; then
|
||||||
bind -m vi-insert '"\C-r": "\C-z\C-r\C-z"'
|
echo "warning: FZF_CTRL_R_COMMAND is set to a custom command, but custom commands are not yet supported for CTRL-R" >&2
|
||||||
|
fi
|
||||||
|
bind -m emacs-standard '"\C-r": "\C-e \C-u\C-y\ey\C-u`__fzf_history__`\e\C-e\er"'
|
||||||
|
bind -m vi-command '"\C-r": "\C-z\C-r\C-z"'
|
||||||
|
bind -m vi-insert '"\C-r": "\C-z\C-r\C-z"'
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
# CTRL-T - Paste the selected file path into the command line
|
# CTRL-T - Paste the selected file path into the command line
|
||||||
if [[ ${FZF_CTRL_T_COMMAND-x} != "" ]]; then
|
if [[ ${FZF_CTRL_T_COMMAND-x} != "" ]]; then
|
||||||
@@ -144,9 +150,14 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# CTRL-R - Paste the selected command from history into the command line
|
# CTRL-R - Paste the selected command from history into the command line
|
||||||
bind -m emacs-standard -x '"\C-r": __fzf_history__'
|
if [[ ${FZF_CTRL_R_COMMAND-x} != "" ]]; then
|
||||||
bind -m vi-command -x '"\C-r": __fzf_history__'
|
if [[ -n ${FZF_CTRL_R_COMMAND-} ]]; then
|
||||||
bind -m vi-insert -x '"\C-r": __fzf_history__'
|
echo "warning: FZF_CTRL_R_COMMAND is set to a custom command, but custom commands are not yet supported for CTRL-R" >&2
|
||||||
|
fi
|
||||||
|
bind -m emacs-standard -x '"\C-r": __fzf_history__'
|
||||||
|
bind -m vi-command -x '"\C-r": __fzf_history__'
|
||||||
|
bind -m vi-insert -x '"\C-r": __fzf_history__'
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# ALT-C - cd into the selected directory
|
# ALT-C - cd into the selected directory
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
# - $FZF_TMUX_OPTS
|
# - $FZF_TMUX_OPTS
|
||||||
# - $FZF_CTRL_T_COMMAND
|
# - $FZF_CTRL_T_COMMAND
|
||||||
# - $FZF_CTRL_T_OPTS
|
# - $FZF_CTRL_T_OPTS
|
||||||
|
# - $FZF_CTRL_R_COMMAND
|
||||||
# - $FZF_CTRL_R_OPTS
|
# - $FZF_CTRL_R_OPTS
|
||||||
# - $FZF_ALT_C_COMMAND
|
# - $FZF_ALT_C_COMMAND
|
||||||
# - $FZF_ALT_C_OPTS
|
# - $FZF_ALT_C_OPTS
|
||||||
@@ -214,8 +215,13 @@ function fzf_key_bindings
|
|||||||
commandline -f repaint
|
commandline -f repaint
|
||||||
end
|
end
|
||||||
|
|
||||||
bind \cr fzf-history-widget
|
if not set -q FZF_CTRL_R_COMMAND; or test -n "$FZF_CTRL_R_COMMAND"
|
||||||
bind -M insert \cr fzf-history-widget
|
if test -n "$FZF_CTRL_R_COMMAND"
|
||||||
|
echo "warning: FZF_CTRL_R_COMMAND is set to a custom command, but custom commands are not yet supported for CTRL-R" >&2
|
||||||
|
end
|
||||||
|
bind \cr fzf-history-widget
|
||||||
|
bind -M insert \cr fzf-history-widget
|
||||||
|
end
|
||||||
|
|
||||||
if not set -q FZF_CTRL_T_COMMAND; or test -n "$FZF_CTRL_T_COMMAND"
|
if not set -q FZF_CTRL_T_COMMAND; or test -n "$FZF_CTRL_T_COMMAND"
|
||||||
bind \ct fzf-file-widget
|
bind \ct fzf-file-widget
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
# - $FZF_TMUX_OPTS
|
# - $FZF_TMUX_OPTS
|
||||||
# - $FZF_CTRL_T_COMMAND
|
# - $FZF_CTRL_T_COMMAND
|
||||||
# - $FZF_CTRL_T_OPTS
|
# - $FZF_CTRL_T_OPTS
|
||||||
|
# - $FZF_CTRL_R_COMMAND
|
||||||
# - $FZF_CTRL_R_OPTS
|
# - $FZF_CTRL_R_OPTS
|
||||||
# - $FZF_ALT_C_COMMAND
|
# - $FZF_ALT_C_COMMAND
|
||||||
# - $FZF_ALT_C_OPTS
|
# - $FZF_ALT_C_OPTS
|
||||||
@@ -150,10 +151,15 @@ fzf-history-widget() {
|
|||||||
zle reset-prompt
|
zle reset-prompt
|
||||||
return $ret
|
return $ret
|
||||||
}
|
}
|
||||||
zle -N fzf-history-widget
|
if [[ ${FZF_CTRL_R_COMMAND-x} != "" ]]; then
|
||||||
bindkey -M emacs '^R' fzf-history-widget
|
if [[ -n ${FZF_CTRL_R_COMMAND-} ]]; then
|
||||||
bindkey -M vicmd '^R' fzf-history-widget
|
echo "warning: FZF_CTRL_R_COMMAND is set to a custom command, but custom commands are not yet supported for CTRL-R" >&2
|
||||||
bindkey -M viins '^R' fzf-history-widget
|
fi
|
||||||
|
zle -N fzf-history-widget
|
||||||
|
bindkey -M emacs '^R' fzf-history-widget
|
||||||
|
bindkey -M vicmd '^R' fzf-history-widget
|
||||||
|
bindkey -M viins '^R' fzf-history-widget
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
} always {
|
} always {
|
||||||
|
|||||||
Reference in New Issue
Block a user