我最近发现了这个名为fzf的命令行工具。我按照说明安装了它,它确实可以工作,除了CTRL-T键绑定。尽管如此,我还是按照他们的说明安装了带有键绑定的特殊东西,并且我还尝试安装从 git repo 下载的 fzf,而不是通过自制软件,所有CTRL-T键绑定仍然是交换最后两个字符。
我发现了关于这个的讨论,但没有一个提供的答案对我有用。
编辑:您可以在第一个视频中看到我想要实现的目标。编辑 2:我正在使用 MacOs 的终端。
如果您从存储库克隆 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 调用。
我在 Mac 上使用zsh
with 。Oh My Zsh
如果我fzf
之前vi-mode
在插件设置中.zshrc
放入
plugins=(... fzf ... vi-mode ...)
Ctrl-t
不工作显示^T
。Ctrl-r
也不起作用。
但是,如果fzf
之后vi-mode
像
plugins=(... vi-mode ... fzf ...)
没有问题出现。
如果您使用的是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')
我注意到CTRL-T当我启用“vi 模式”时(在 bash 中)不起作用set -o vi
。
我设法使 CTRL-t 组合键按需要工作。我错过了一步。
在安装有用的键绑定和模糊完成后/usr/local/opt/fzf/install
,我fzf.bash
手动更新了[ -f ~/.fzf.bash ] && source ~/.fzf.bash
. 重新启动终端后,它现在可以工作了。
编辑:此外,需要将此行添加到您的 .bash_profile 或 .bashrc:source ~/.fzf.bash
中。
我将以下脚本放在我的 .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