【fzf】터미널상에서 파일명 검색과 전문 검색을 Preview 첨부로 하고 싶다
파일명 검색은 fzf로 준비되어 있는 KeyBind(Ctrl+T)를 커스터마이즈 합니다
$(brew --prefix)/opt/fzf/install 때 자동으로 설정합니다.widget 함수에 대한 자세한 내용은
/usr/local/opt/fzf/shell/key-bindings.zsh에서 확인할 수 있습니다.메모를 쓰는 것 같습니다.
bat, rg, fd) 사용 macOS, zsh에서의 동작 만 확인했습니다 junegunn/fzf: A command-line fuzzy finder
man page
그 전에 내 fzf default option입니다. --height 는 지정이 있는 쪽이 보기 쉽고 좋아합니다. .zshrc export FZF_DEFAULT_OPTS=" --height 90% --reverse --border --prompt='➜' --margin=0,1 --inline-info --tiebreak=index --no-mouse --filepath-word --color fg:-1,bg:-1,hl:33,fg+:250,bg+:235,hl+:33 --color info:37,prompt:37,pointer:230,marker:230,spinner:37 --bind='ctrl-w:backward-kill-word,ctrl-x:jump,down:preview-page-down' --bind='ctrl-z:ignore,ctrl-]:replace-query,up:preview-page-up' --bind='ctrl-a:toggle-all,?:toggle-preview' " bindkey의 설정에 대해서는 여기
개행 있어 Text가 개인적으로 싫었기 때문에 실제로는 배열, 연상 배열을 사용해 기술하고 있습니다
즉 이렇게 ↓
.zshrc
# fzf
export FZF_COMPLETION_TRIGGER=','
typeset -Tgx FZF_DEFAULT_OPTS fzf_default_opts " "
fzf_default_opts=(
'--height=90%'
'--reverse'
'--border'
'--inline-info'
'--prompt="➜ "'
'--margin=0,2'
'--tiebreak=index'
'--no-mouse'
'--filepath-word'
)
() {
local -A color_map=(
[fg]='-1'
[bg]='-1'
[hl]='33'
[fg+]='250'
[bg+]='235'
[hl+]='33'
[info]='37'
[prompt]='37'
[pointer]='230'
[marker]='230'
[spinner]='37'
)
for x in "${(k)color_map[@]}"; do
fzf_color_opts+=("${x}:${color_map[${x}]}")
done
fzf_default_opts+=( '--color="'"${(j.,.)fzf_color_opts}"'"' )
}
() {
local -a fzf_bind_opts=()
local -A bind_map=(
[?]='toggle-preview'
[ctrl-a]='toggle-all'
['ctrl-]']='replace-query'
[ctrl-w]='backward-kill-word'
[ctrl-x]='jump'
[ctrl-z]='ignore'
[up]='preview-page-up'
[down]='preview-page-down'
)
for x in "${(k)bind_map[@]}"; do
fzf_bind_opts+=("${x}:${bind_map[${x}]}")
done
fzf_default_opts+=( '--bind="'"${(j:,:)fzf_bind_opts}"'"' )
}
연상 배열의 기술이 version5.5 이상의 zsh가 아니면 읽을 수 없습니다
보통 평문이라도 k
외형은 이런 느낌

파일 이름 검색
기본 동작은 "현재 디렉토리 아래의 파일 디렉토리 검색"입니다.
이번에는 다음과 같이 사용자 정의하고 싶습니다.
fd로 변경. 검색 대상은 파일에만 bat 명령 사용) 설명이 여기
.zshrc
export FZF_CTRL_T_COMMAND="fd --type f "
export FZF_CTRL_T_OPTS="
--select-1 --exit-0
--bind 'ctrl-l:execute(tmux splitw -h -- nvim {})'
--bind '>:reload($FZF_ALT_C_COMMAND -H -E .git )'
--bind '<:reload($FZF_ALT_C_COMMAND)'
--preview 'bat -r :100 --color=always --style=header,grid {}'"
이런 상태가 됩니다

전체 텍스트 검색
현재 디렉토리 아래의 파일을 전체 텍스트 검색. 선택한 파일을 명령줄에 붙여넣기
man에있는 설명을 참고로합니다.
쿼리를 변경할 때마다
rg 검색이 실행됩니다.만든 것
fzf-ripgrep-widget
#!/usr/bin/env zsh
main() {
LBUFFER="${LBUFFER}$(__fzf_ripgrep)"
local ret=$?
zle reset-prompt
return $ret
}
__fzf_ripgrep() {
emulate -L zsh
rg_cmd="rg --smart-case --line-number --color=always --trim"
selected=$(FZF_DEFAULT_COMMAND=":" \
fzf --bind="change:top+reload($rg_cmd {q} || true)" \
--bind="ctrl-l:execute(tmux splitw -h -- nvim +/{q} {1} +{2})" \
--ansi --phony \
--delimiter=":" \
--preview="bat -H {2} --color=always --style=header,grid {1}" \
--preview-window='down:60%:+{2}-10')
local ret=$?
[[ -n "$selected" ]] && echo ${${(@s/:/)selected}[1]}
return $ret
}
main
.zshrc
autoload -Uz fzf-ripgrep-widget
zle -N fzf-ripgrep-widget
bindkey '\ef' fzf-ripgrep-widget
움직임

검색 결과가 미리보기 내에서 추적하여 만족
단지 하이라이트가 조금 미묘한 것과, 검색 결과 window의 format이 유감
감상
몇 가지 문제가 남아 있지만 이것이 현재 MAX
Rust 관련 명령을 건드려 Rust 굉장합니다.
Reference
이 문제에 관하여(【fzf】터미널상에서 파일명 검색과 전문 검색을 Preview 첨부로 하고 싶다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sho-t/items/dca82d5e27b16da12318텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)