-rw-r--r-- fzf.zsh
1 # 2 # fzf settings 3 # 4 5 if type fzf > /dev/null 6 then 7 # I considered disabling ctrl-t to set it to type out fz, but the default 8 # ctrl-t can be helpful for e.g. pytest, selecting and pasting paths. 9 #bindkey -s '^t' "fv\n" 10 11 #--preview 'bat -n --color=always {}' 12 #--bind 'ctrl-/:change-preview-window(down|hidden|)' 13 export FZF_DEFAULT_OPTS=" 14 --tmux 15 --walker-skip .git,node_modules,target,.mypy_cache,.venv,__pycache__,.DS_Store,ws 16 " 17 export FZF_CTRL_T_COMMAND="" 18 source <(fzf --zsh) 19 20 _fzf-file-widget () { 21 INIT_BUFFER="$LBUFFER" 22 [[ -z "$INIT_BUFFER" ]] && LBUFFER="vim " 23 24 local suffix="" 25 [[ -n "$CLAUDE_CONTEXT_ID" ]] && suffix=".$CLAUDE_CONTEXT_ID" 26 local context_file="$HOME/.local/share/claude/context-files${suffix}" 27 local selected 28 selected=$({ 29 if [[ -f "$context_file" ]]; then 30 local f rel 31 while IFS= read -r f; do 32 [[ -f "$f" ]] || continue 33 rel="${f#$PWD/}" 34 echo "$rel" 35 done < <(tail -r "$context_file") 36 fi 37 fd --type f --strip-cwd-prefix 2>/dev/null 38 } | awk '!seen[$0]++' | fzf) 39 40 if [[ -n "$selected" ]]; then 41 LBUFFER="${LBUFFER}${(q)selected}" 42 zle accept-line 43 else 44 LBUFFER="$INIT_BUFFER" 45 fi 46 } 47 48 zle -N _fzf-file-widget 49 bindkey -M vicmd '^P' _fzf-file-widget 50 bindkey -M viins '^P' _fzf-file-widget 51 fi 52