如何解决 fzf 的 CTRL-t 键绑定问题?

sam*_*set 17 terminal homebrew command-line fzf

我最近发现了这个名为fzf的命令行工具。我按照说明安装了它,它确实有效,除了CTRL-T键绑定之外。尽管如此,我按照他们的说明安装了带有键绑定的特殊内容,并且我还尝试安装从 git 存储库下载的 fzf,而不是通过自制程序,所有CTRL-T键绑定仍然是交换最后两个字符。

我找到了有关问题的讨论,但所提供的答案都不适合我。

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

T_T*_*T_T 11

我在 Mac 上使用zshwith 。Oh My Zsh

如果我把fzf之前放在vi-mode插件设置.zshrc

plugins=(... fzf ... vi-mode ...) 
Run Code Online (Sandbox Code Playgroud)

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

但是,如果fzf是在vi-mode之后

plugins=(... vi-mode ... fzf ...) 
Run Code Online (Sandbox Code Playgroud)

没有问题出现。


小智 6

如果您从存储库克隆 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
Run Code Online (Sandbox Code Playgroud)

Control-T 键绑定。这通常是由您的.zshrc

[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh
Run Code Online (Sandbox Code Playgroud)

其中应包含其参考.fzf.zsh

source "$HOME/.fzf/shell/key-bindings.zsh"
Run Code Online (Sandbox Code Playgroud)

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