9

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

我发现了关于这个的讨论,但没有一个提供的答案对我有用。

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

4

6 回答 6

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

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

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

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

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

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

于 2018-04-06T20:33:37.190 回答
4

我在 Mac 上使用zshwith 。Oh My Zsh

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

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

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

但是,如果fzf之后vi-mode

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

没有问题出现。

于 2021-12-29T03:03:13.517 回答
2

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

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

有了这个

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

来自 zsh-vi-mode GitHub页面


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

zvm_after_init_commands+=('[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh && enable-fzf-tab')
于 2021-11-16T04:36:02.327 回答
1

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

于 2019-04-09T20:57:14.713 回答
0

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

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

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

于 2019-01-03T13:49:04.577 回答
0

我将以下脚本放在我的 .zshrc 中并使用source ~/.zshrc

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

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

从如何为 fzf 启用热键中获得了上述脚本

解释

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

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

操作系统:Manjaro GNU-Linux

于 2021-08-07T07:02:50.267 回答