问题描述
我已经使用 fzf
一段时间了,发现它真的很棒,但是我想让它做一件事,但我认为我没有在谷歌上搜索正确的词。
我在 neovim
终端上将它与 zsh
一起使用,我想要做的是让它只搜索我输入的目标目录。
$ vi folder_name/ # Ctrl + T here
目前,当我点击 Ctrl+T
时,它会搜索当前目录,而不仅仅是 folder_name
的内容。
通过 Plug
安装并在 .zshrc
中安装:
source ~/.fzf.zsh
export FZF_DEFAULT_COMMAND='ag --hidden --ignore .git -l -g ""'
export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
我尝试删除导出行,因为我认为这可能是它的默认行为,但没有骰子。
我怎样才能做到这一点?
解决方法
我对 Linux 不太熟悉,但是 ctrl-t 似乎只是在命令行中插入结果。与似乎从缓冲区生成前缀并将其作为路径传递给 find 命令的完成函数进行比较。
尝试使用完成功能或将它们用作指南
,我想不出内置的方法来做到这一点,但我们可以在终端中实现任何事情!
首先想到的是创建一个函数来自动执行此操作,并通过添加键绑定使其更快。
使用 zsh,您可以设置自己的 CTRL 键绑定。例如,我建议使用 CTRL - f 。我认为这不应该与任何其他绑定发生冲突。我们可以使用 bindkey
命令调用我们的函数。
将这些项目放入您的 .zshrc 中以使其可用。
# Set CTRL + f to call our function
bindkey -s '^f' 'FzfViDir^M'
function FzfViDir()
{
# Use fzf to get into the right folder. The ls command sends folder names to fzf
cd $(ls -d */ | fzf)
# Now fzf will only search the directory you have chosen
vi $(fzf)
}