【发布时间】:2018-01-02 04:30:18
【问题描述】:
我已经处理这个问题将近一个月了,我感到很沮丧,非常感谢任何帮助。
我正在尝试为我的takenote 命令编写一个小部件。小部件的目的是将~/notes 文件夹中的所有降价文件提供给fzf,以便用户可以选择其中一个并开始编辑它。
在用户输入takenote 并按下<tab> 后,我希望小部件能够运行。
这是_takenote.zsh 小部件定义:
#compdef takenote
local file=$( find -L "$HOME/notes/" -print 2> /dev/null | fzf-tmux +m )
zle reset-prompt
compadd $file
return 1
很遗憾,上面的代码因为zle reset-prompt而不起作用,如果我删除它,结果会是这样的:
选择文件后会变成:
如您所见,这会破坏提示和命令本身。
在我看来,我需要做的是做一个zle reset-prompt
在调用 compadd 之前,但这只能在我将函数绑定到键时才有效,否则,我将收到以下错误:
小部件只能在 ZLE 处于活动状态时调用
【问题讨论】:
-
到目前为止运气好吗?如果您管理得当,我会使用该解决方案。
-
不,抱歉!已经很久了,我没有找到解决办法。不过我真的很想知道答案。也许你可以投票赞成这个问题?
-
@animaacija,我试过试一试,但似乎需要更多的努力。我可以给你一个可能会有所帮助的指针。这是为
vim完成的,您可以根据自己的情况进行调整。见github.com/junegunn/fzf/issues/227 -
@ExistMe,连续第三次赏金 :-)。你有机会看看我发布的链接吗
-
@tarun-lalwani 谢谢,我花了一天时间在你建议的链接上,但没有成功:) 它有多复杂,我觉得我对
zle和它的状态一无所知。我想说这主要是一个zle widget问题而不是fzf
标签: widget zsh completion zsh-zle fzf