我是 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
它有点有效,但我看到一些奇怪和破碎的行为:
奇怪的行为是,当我重新加载 zshell 时,fzf 会立即启动,而无需我按键或输入命令。它工作得很好,但除此之外。
损坏的行为是,当我手动输入 时
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 中。它不会去那里。它位于单独的脚本文件或函数中。