मछली के कार्य में धर्मान्तरित मछली का उपयोग करें (मछली में आरजीए-एफजीएफ का उपयोग करें)

Dec 06 2020

मैं इस बैश / zsh फ़ंक्शन को मछली में बदलने की कोशिश कर रहा हूं। मैं rga-fzf का उपयोग करना चाहता हूं जो ripgrep-all के साथ मिलकर fzf का उपयोग करके zsh / bash के लिए एक फ़ंक्शन है ।

(मेरी डिफ़ॉल्ट शेल मछली है)

यहाँ zsh / फिश फंक्शन है:

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 to "$अरगव "

किसी भी तरह की सहायता का स्वागत किया जाएगा!

संपादित करें यदि मैं लाइन को वापस इसमें बदलता हूं:

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

फिर त्रुटि हो गई है लेकिन यह अभी भी फ़ोल्डर खोलता है और fzf नहीं

EDIT 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 नहीं खुल रहा है।

EDIT 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 दिशानिर्देश 2-2019.pdf जैसा कुछ है

इसलिए मम्म एक कदम करीब है, लेकिन वास्तव में उपयोग नहीं कर रहा है rgaऔर fzfएक साथ।

जवाब

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

यह अंत में क्या काम किया है!