Fix FZF integration in to ZSH

This commit is contained in:
Fabio Scotto di Santolo
2025-07-25 09:20:32 +02:00
parent 600b31a5ad
commit 927e0cbb56
2 changed files with 29 additions and 34 deletions

27
zsh/.profile.d/fzf.sh Normal file → Executable file
View File

@@ -1,8 +1,31 @@
#!/usr/bin/env bash
is_debian_based() {
# Checking /etc/os-release
if [[ -f /etc/os-release ]]; then
. /etc/os-release
if [[ "$ID_LIKE" == *"debian"* ]] || [[ "$ID" == "debian" ]]; then
return 0 # OK: Debian-based
fi
fi
# Alternative check: /etc/debian_version
if [[ -f /etc/debian_version ]]; then
return 0 # OK: Debian-based
fi
return 1 # NO Debian-based
}
# Add fzf keybindings and enhancements
export FZF_CTRL_T_COMMAND="fd --type f"
export FZF_ALT_C_COMMAND="fd --type d"
if is_debian_based; then
export FZF_CTRL_T_COMMAND="fdfind --type f"
export FZF_ALT_C_COMMAND="fdfind --type d"
else
export FZF_CTRL_T_COMMAND="fd --type f"
export FZF_ALT_C_COMMAND="fd --type d"
fi
export FZF_CTRL_R_OPTS="--preview 'echo {}'"
# Export Catppuccin Mocha theme for FZF

View File

@@ -76,7 +76,6 @@ plugins=(
aws
colored-man-pages
command-not-found
fzf
gitignore
mise
zoxide
@@ -122,35 +121,8 @@ fpath=(~/.zsh $fpath)
autoload run-help
autoload -Uz compinit && compinit -u
# Key bindings using bindkey and fzf-tmux where possible
# Ctrl+R: Enhanced reverse history search
bindkey '^R' fzf-history-widget
export FZF_HOME=$HOME/.oh-my-zsh/custom/plugins/fzf
source <(fzf --zsh)
source "$FZF_HOME/shell/key-bindings.zsh"
source "$FZF_HOME/shell/completion.zsh"
# Ctrl+T: Fuzzy find file
bindkey '^T' fzf-file-widget
# Alt+C: Fuzzy change directory
bindkey '^[c' fzf-cd-widget
# Additional useful bindings
# Alt+H: Search and insert from history
fzf-history-widget() {
BUFFER=$(fc -l 1 | fzf --tac +s --no-sort --preview 'echo {}' | sed 's/^[ 0-9]*//')
CURSOR=$#BUFFER
zle reset-prompt
}
zle -N fzf-history-widget
fzf-file-widget() {
local file
file=$(fzf --preview 'bat --style=numbers --color=always --line-range :500 {}' 2> /dev/null) && LBUFFER+="$file"
zle reset-prompt
}
zle -N fzf-file-widget
fzf-cd-widget() {
local dir
dir=$(fd --type d | fzf --preview 'tree -a -C {} | head -100') && cd "$dir"
zle reset-prompt
}
zle -N fzf-cd-widget