From d621cbec64642ebf565e377f7c905e438e491033 Mon Sep 17 00:00:00 2001 From: Fabio Scotto di Santolo Date: Thu, 24 Jul 2025 18:19:58 +0200 Subject: [PATCH] Added FZF plugin for ZSH --- .gitmodules | 3 +++ zsh/.oh-my-zsh/custom/aliases.zsh | 1 + zsh/.oh-my-zsh/custom/plugins/fzf | 1 + zsh/.profile.d/fzf.sh | 18 ++++++++++------ zsh/.zshrc | 34 +++++++++++++++++++++++++++++++ 5 files changed, 51 insertions(+), 6 deletions(-) create mode 160000 zsh/.oh-my-zsh/custom/plugins/fzf diff --git a/.gitmodules b/.gitmodules index 9fb0cc5..7b27a2f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -25,3 +25,6 @@ [submodule "zsh/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting"] path = zsh/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting url = https://github.com/zsh-users/zsh-syntax-highlighting.git +[submodule "zsh/.oh-my-zsh/custom/plugins/fzf"] + path = zsh/.oh-my-zsh/custom/plugins/fzf + url = https://github.com/junegunn/fzf.git diff --git a/zsh/.oh-my-zsh/custom/aliases.zsh b/zsh/.oh-my-zsh/custom/aliases.zsh index 74151a9..d3612f2 100644 --- a/zsh/.oh-my-zsh/custom/aliases.zsh +++ b/zsh/.oh-my-zsh/custom/aliases.zsh @@ -20,6 +20,7 @@ alias ls="eza --color=always --group-directories-first --icons" # Replace some more things with better alternatives if is_debian_based; then alias bat='batcat' + alias fd='fdfind' fi alias cat='bat --style header --style snip --style changes --style header --pager never' diff --git a/zsh/.oh-my-zsh/custom/plugins/fzf b/zsh/.oh-my-zsh/custom/plugins/fzf new file mode 160000 index 0000000..4efcc34 --- /dev/null +++ b/zsh/.oh-my-zsh/custom/plugins/fzf @@ -0,0 +1 @@ +Subproject commit 4efcc344c35e8bb7e6ba7bb23e5885051420b361 diff --git a/zsh/.profile.d/fzf.sh b/zsh/.profile.d/fzf.sh index fd4ebc1..af2d5f1 100644 --- a/zsh/.profile.d/fzf.sh +++ b/zsh/.profile.d/fzf.sh @@ -1,9 +1,15 @@ #!/usr/bin/env bash -# Export Catppuccin Frappe theme for fzf +# Add fzf keybindings and enhancements +export FZF_CTRL_T_COMMAND="fd --type f" +export FZF_ALT_C_COMMAND="fd --type d" +export FZF_CTRL_R_OPTS="--preview 'echo {}'" + +# Export Catppuccin Mocha theme for FZF export FZF_DEFAULT_OPTS=" \ ---color=bg+:#414559,bg:#303446,spinner:#F2D5CF,hl:#E78284 \ ---color=fg:#C6D0F5,header:#E78284,info:#CA9EE6,pointer:#F2D5CF \ ---color=marker:#BABBF1,fg+:#C6D0F5,prompt:#CA9EE6,hl+:#E78284 \ ---color=selected-bg:#51576D \ ---color=border:#414559,label:#C6D0F5" +--height 60% --layout=reverse --border \ +--color=bg+:#313244,bg:#1E1E2E,spinner:#F5E0DC,hl:#F38BA8 \ +--color=fg:#CDD6F4,header:#F38BA8,info:#CBA6F7,pointer:#F5E0DC \ +--color=marker:#B4BEFE,fg+:#CDD6F4,prompt:#CBA6F7,hl+:#F38BA8 \ +--color=selected-bg:#45475A \ +--color=border:#313244,label:#CDD6F4" diff --git a/zsh/.zshrc b/zsh/.zshrc index 337ca2a..8cb42cc 100644 --- a/zsh/.zshrc +++ b/zsh/.zshrc @@ -76,6 +76,7 @@ plugins=( aws colored-man-pages command-not-found + fzf gitignore mise zoxide @@ -120,3 +121,36 @@ 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 + +# 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