如何正确设置高级 FZF_DEFAULT_COMMAND 环境变量以使其与安装了 fzf 插件的 ohmyz.sh 正常工作?

如何正确设置高级 FZF_DEFAULT_COMMAND 环境变量以使其与安装了 fzf 插件的 ohmyz.sh 正常工作?

我是 z shell 和 ohmyz.sh 的新手。

我的 zshrc 中有以下内容,用于将 fzf 与 rg 集成。这正是 fzf 自述文件中的显示方式:

FZF_BASE=/usr/local/bin
DISABLE_FZF_AUTO_COMPLETION="true"
DISABLE_FZF_KEY_BINDINGS="true"
INITIAL_QUERY=""
RG_PREFIX="rg --column --line-number --no-heading --color=always --smart-case "
FZF_DEFAULT_COMMAND="$RG_PREFIX '$INITIAL_QUERY'" \
  fzf --bind "change:reload:$RG_PREFIX {q} || true" \
      --ansi --disabled --query "$INITIAL_QUERY" \
      --height=50% --layout=reverse

它有点有效,但我看到一些奇怪和破碎的行为:

  1. 奇怪的行为是,当我重新加载 zshell 时,fzf 会立即启动,而无需我按键或输入命令。它工作得很好,但除此之外。

  2. 损坏的行为是,当我手动输入 时fzf,会启动搜索,但 FZF_DEFAULT_COMMAND 设置为插件使用的内容。

export我尝试通过在前面打耳光来修复此行为FZF_DEFAULT_COMMAND,但是当我重新加载 zsh 时,出现错误:

/Users/me/.zshrc:export:313: not valid in this context: --bind

接下来我关闭 ohmyzsh 插件并将代码修改为:

FZF_DEFAULT_COMMAND="$RG_PREFIX '$INITIAL_QUERY'" \
  fzf --bind "change:reload:$RG_PREFIX {q} || true" \
      --ansi --disabled --query "$INITIAL_QUERY" \
      --height=50% --layout=reverse
export FZF_DEFAULT_COMMAND

这种方法可行,但同样,一旦我加载 zsh,它就会启动 fzf。而且搜索的格式被 ansi 字符破坏且丑陋。

答案1

好的,问题在于将此代码放入 .zshrc 中。它不会去那里。它位于单独的脚本文件或函数中。

相关内容