Использование переменных в качестве аргументов команды в Zsh - PullRequest
0 голосов
/ 05 января 2019

Я пытаюсь написать функцию для zsh, чтобы найти файлы с помощью fzf и напрямую открыть их в моем редакторе. Аргументы для вызова fzf хранятся в переменной следующим образом:

FZF_FILE_PREVIEW="--preview 'cat {}) 2> /dev/null | head -200'"

функция выглядит так:

fzf_find_edit() {
    local file=$(fzf ${FZF_FILE_PREVIEW})
    if [[ -n $file ]]; then
        $EDITOR $file
    fi
}

Но, похоже, FZF_FILE_PREVIEW не раскрывается правильно, потому что, когда я запускаю функцию, я получаю:

unknown option: --preview 'cat {}) 2> /dev/null | head -200'

Если я запускаю напрямую

fzf --preview 'cat {}) 2> /dev/null | head -200'

работает как положено.

Как заставить переменную правильно расширяться?

1 Ответ

0 голосов
/ 11 января 2019

С помощью канала IRC zsh я решил, что решить эту проблему:

Переменной присваивается массив, используя ():

FZF_FILE_PREVIEW=(--preview 'cat {}) 2> /dev/null | head -200')

и затем можно ссылаться как:

file=($(fzf ${FZF_FILE_PREVIEW}))

только при экспорте массива это сложно:

export FZF_CTRL_T_OPTS=${(j< >)${(@q-)FZF_FILE_PREVIEW}}

объединяет элементы массива, дальнейшее объяснение в документах .

...