bash를 fish 함수로 변환 (fish에서 rga-fzf 사용)

Dec 06 2020

이 bash / zsh 함수를 물고기로 변환하려고합니다. ripgrep-all 과 함께 fzf를 사용하는 zsh / bash 함수 인 rga-fzf를 사용하고 싶습니다 .

(내 기본 쉘은 물고기입니다)

다음은 zsh / fish 함수입니다.

rga-fzf() {
    RG_PREFIX="rga --files-with-matches"
    local file
    file="$( FZF_DEFAULT_COMMAND="$RG_PREFIX '$1'" \ fzf --sort --preview="[[ ! -z {} ]] && rga --pretty --context 5 {q} {}" \ --phony -q "$1" \
                --bind "change:reload:$RG_PREFIX {q}" \ --preview-window="70%:wrap" )" && echo "opening $file" &&
    xdg-open "$file"
}

이것은 내가 내 자신에있어 얼마나 멀리, 그리고 일부 도움 이 게시물 도움이 - 그리고 이 게시물 .

function fif
    set RG_PREFIX rga --files-with-matches
    set -l file
    set file (
        set FZF_DEFAULT_COMMAND $RG_PREFIX "$1" \ fzf --sort --preview test ! -z {} && rga --pretty --context 5 $argv {} \
                --phony -q "$1" \ --bind "change:reload:$RG_PREFIX $argv" \ --preview-window="70%:wrap" ) && open "$file"
end

그러나 이제는 단순히 (현재) 폴더와 알림이 열립니다.

error: Found argument '--phony' which wasn't expected, or isn't valid in this context

내가 변경하면 $1 to $argv 그러면 변경 사항이 없습니다. 내가 변해도 변하지 않아$argv to "$argv "

어떤 도움이라도 대단히 감사하겠습니다!

줄을 다시 변경하면 편집 하십시오.

            fzf --sort --preview "[[ ! -z {} ]] && rga --pretty --context 5 {q} {}" \

그런 다음 오류가 사라지지만 여전히 폴더가 열리고 fzf가 열립니다.

2 편집

나는 다시 변경했습니다 {q}

이제 다음과 같이 읽습니다.

function fif
    set RG_PREFIX rga --files-with-matches
    set -l file
    set file (
        set FZF_DEFAULT_COMMAND $RG_PREFIX "$argv" \
            fzf --sort --preview "[[ ! -z {} ]] && rga --pretty --context 5 {q} {}" \
                --phony -q "$1" \ --bind "change:reload:$RG_PREFIX {q}" \
                --preview-window="70%:wrap"
    ) &&
    open "$file"
end

오류가 사라졌습니다. 그러나 문제는 지속되며 실제로 fzf를 열지 않습니다.

편집 3 나는 첫 번째 세트에서 뭔가 잘못했습니다. 이것은 안된다

set RG_PREFIX rga --files-with-matches 

그러나

set -x RG_PREFIX rga --files-with-matches

또한 fzf 뒤의 () 사이의 모든 것은 동일하게 유지되어야하므로 현재 여기에 있습니다.

function fif
    set -x RG_PREFIX rga --files-with-matches
    set -l file
    set file (
        FZF_DEFAULT_COMMAND="$RG_PREFIX '$1'" \ fzf --sort --preview="[[ ! -z {} ]] && rga --pretty --context 5 {q} {}" \ --phony -q "$1" \
                --bind "change:reload:$RG_PREFIX {q}" \ --preview-window="70%:wrap" ) && open "$file"
end

이제 최소한 fzf를 열지 만 실제로 rga를 사용하여 문서를 필터링하지 않으며 (fzf는 폴더에서 사용 가능한 모든 파일을 엽니 다) 미리보기 창에 다음이 표시됩니다.

fish: Unknown command: '[[ ! -z FILENAME ]]' 
fish: 
[[ ! -z 'FILENAME' ]] && rga  --pretty --context 5 '' 'FILENAME'

FILENAME은 Guidelines 2-2019.pdf와 유사합니다.

한 걸음 더 가까이 음 때문에, 실제로 사용하지 rgafzf함께.

답변

1 ABeehive Dec 08 2020 at 01:26
function fif
    set -x RG_PREFIX rga --files-with-matches
    set -l file
    set file (
        FZF_DEFAULT_COMMAND="$RG_PREFIX '$argv'" \
            fzf --sort --preview="[ ! -z {} ] && rga --pretty --context 5 {q} {}" \
                --phony -q "$argv" \ --bind "change:reload:$RG_PREFIX {q}" \
                --preview-window="70%:wrap"
    ) &&
    open "$file"
end

이것이 결국 효과가 있었던 것입니다!