我最近发现了一个名为fzf的命令行工具。我按照说明安装它,它确实有效,除了 CTRL - T 键绑定。虽然,我根据他们的指示安装了特殊的东西和键绑定,我也尝试安装从git repo下载的fzf而不是通过homebrew,所有的 CTRL - T < / kbd>密钥绑定仍然是交换最后两个字符。
我发现this对此进行了讨论,但所提供的答案都没有对我有用。
编辑:你可以在第一个视频here中看到它想要实现的目标。 编辑2:我正在使用MacO终端。
答案 0 :(得分:2)
如果从存储库中克隆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可能无法调用。
答案 1 :(得分:0)
我设法使CTRL-t键组合按需要工作。我错过了一步。
在使用/usr/local/opt/fzf/install
安装有用的键绑定并模糊完成之后,我用fzf.bash
手动更新了[ -f ~/.fzf.bash ] && source ~/.fzf.bash
。重新启动终端后,它现在可以工作了。
编辑:另外,此行需要添加到您的.bash_profile或.bashrc中:source ~/.fzf.bash
。
答案 2 :(得分:0)
我注意到set -o vi
启用了“ vi模式”时,CTRL-T不起作用(以bash表示)。
答案 3 :(得分:0)
我将以下脚本放在我的 .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