【问题标题】:How to solve CTRL-t key binding issue for fzf?如何解决 fzf 的 CTRL-t 键绑定问题?
【发布时间】:2018-03-10 09:16:16
【问题描述】:

我最近发现了这个名为fzf 的命令行工具。我按照说明安装了它,它确实可以工作,除了 CTRL-T 键绑定。尽管如此,我还是按照他们的说明安装了带有键绑定的特殊东西,并且我还尝试安装从 git repo 下载的 fzf,而不是通过自制软件,所有 CTRL-T 键绑定仍然是交换最后两个字符。

我发现this 对此进行了讨论,但所提供的答案均不适合我。

编辑:您可以在第一个视频here 中看到我想要实现的目标。 编辑 2:我正在使用 MacOs 的终端。

【问题讨论】:

  • 就我而言,ctrl+t 拆分当前窗口,fzftmux 面板中运行,这是您想要的吗?
  • @nbari 我想要实现的是第一个嵌入视频中显示的内容:brendandawes.com/blog/fzf
  • 我猜有些东西覆盖了你的 ctrl-t 映射。输入 :call fzf#vim#maps('n') 并搜索 '<C-T>。你看到了什么?
  • @sudavid4 不起作用,输入到 mac 终端的那一行给了我这个错误:-bash: syntax error near unexpected token `('
  • 不在 vim 的终端中!

标签: command-line terminal homebrew fzf


【解决方案1】:

如果你从存储库中克隆 fzf,它包含一个名为 fzf/shell/key-bindings.zsh 的文件,它引用了

fzf-file-widget() {
  LBUFFER="${LBUFFER}${__fsel}"
  local ret=$?
  zle redisplay
  typeset -f zle-line-init >/dev/null && zle-line-init
  return $ret
}
zle -N fzf-file-widget
bindkey "^T" fzf-file-widget

Control-T 键绑定。这通常来自您的.zshrc

[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh

应该在.fzf.zsh:中包含它的引用:

source "$HOME/.fzf/shell/key-bindings.zsh"

如果您的键绑定不起作用,那么您的键绑定可能会被您的 zshrc 覆盖,或者可能不会被您的 zshrc 调用。

【讨论】:

  • 嗨,我做了您在此处概述的几乎所有操作,但仍然无法使键绑定正常工作。我正在使用 zsh;使用自制软件安装并运行 /usr/local/opt/fzf/install,这促使我安装键绑定并将这些行添加到我的 .zshrc 中。但是,**TAB 有效。您能提供一些故障排除帮助吗?
【解决方案2】:

我在 Mac 上使用 zshOh My Zsh

如果我在.zshrc 的插件设置中将fzf 放在vi-mode 之前就像

plugins=(... fzf ... vi-mode ...) 

Ctrl-t 无法显示^TCtrl-r 也不起作用。

但是,如果fzf 出现在vi-mode 之后,就像

plugins=(... vi-mode ... fzf ...) 

没有问题出现。

【讨论】:

    【解决方案3】:

    如果您使用的是zsh-vi-mode,则替换此行

    [ -f ~/.fzf.zsh ] && source ~/.fzf.zsh
    

    有了这个

    zvm_after_init_commands+=('[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh')
    

    来自 zsh-vi-mode GitHub page


    嘘!如果你使用fzf-tab,你可能还想启用它

    zvm_after_init_commands+=('[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh && enable-fzf-tab')
    

    【讨论】:

      【解决方案4】:

      当我通过set -o vi 启用“vi 模式”时,我注意到 CTRL-T 不起作用(在 bash 中)。

      【讨论】:

        【解决方案5】:

        我设法使 CTRL-t 组合键按需要工作。我错过了一步。

        在使用/usr/local/opt/fzf/install 安装有用的键绑定和模糊完成后,我使用[ -f ~/.fzf.bash ] && source ~/.fzf.bash 手动更新了fzf.bash。重新启动终端后,它现在可以工作了。

        编辑:另外,需要将此行添加到您的 .bash_profile 或 .bashrc 中:source ~/.fzf.bash

        【讨论】:

          【解决方案6】:

          我将以下脚本放入我的 .zshrc 并使用 source ~/.zshrc 获取它

          if [ -x "$(command -v fzf)"  ]
          then
              source /usr/share/fzf/key-bindings.zsh
          fi
          

          现在键绑定(CTRL-T、CTRL-R 和 ALT-C)对我有用。

          how to enable hotkeys for fzf得到上述脚本

          解释

          您在 /usr/share/fzf 或更深的几个目录中有 key-bindings.zsh。 如果安装了 fzf,上述脚本仅来源 key-bindings.zsh

          其余的工作是key-bindings.zsh 的一部分,坦率地说,我没有费心 明白。

          操作系统:Manjaro GNU-Linux

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-10-08
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多