0

我正在尝试为 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'

它按预期工作。

如何让变量正确扩展?

4

1 回答 1

0

在 zsh IRC 频道的帮助下,我想办法解决这个问题:

使用 () 为变量分配一个数组:

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}}

加入数组的元素,在docs中有进一步的解释。

于 2019-01-11T13:53:45.127 回答