Fzf –基础知识第1部分–布局

2021-02-06 19:51:01

这是我从阅读fzf README的第一部分中学到的,并注意了。现在,我对基础知识,尤其是如何控制外观有了更好的设置和理解。

在少做多做的背景下,我决定开始更多地了解“命令行模糊查找器” fzf。学习更多并不困难,因为尽管已经使用了一段时间,但我从未真正阅读过任何文档,因此只是从头开始。

因此,我从主自述文件的第一部分开始,这就是我所发现的。

我在本文中提供的示例摘自反映SAP TechEd 2020 Developer Keynote存储库的目录和文件结构,该存储库具有多个目录和子目录,许多具有不同扩展名的文件,隐藏的文件和目录(我不只是在说(.git /目录),以及我们经常要排除的内容,例如任何node_modules /目录。相当有代表性,对说明很有用。

我使用的是旧版本的fzf,因为我尚未对其进行升级;快速冲泡更新;稍后进行brew brew fzf升级,而我使用的是最新版本。对于我来说,这不是绝对必要的,但是这样做可以使我更加意识到修复和功能会随之而来的事实,并使我接触到一些我可能不了解的选项。因此已经有了间接但有用的优势。

我已经安装了按键绑定按键绑定(以使fzf在Ctrl-T和Ctrl-C上作出反应),所以仍然可以。

我一直在使用箭头键在fzf呈现的列表中上下移动。真可惜!现在,我了解到我可以使用Vim样式的键绑定向上移动(Ctrl-J)和向下移动(Ctrl-K),这使我感觉不太干净。甚至还有鼠标滚轮的支持,但是说的越少越好。

无论如何,是时候讨论这篇文章的主题了-如何影响fzf的外观或布局。

开箱即用,fzf会使用您当前终端的整个高度来显示选择,这或多或少是我到目前为止最常使用fzf的方式:

但这不是必须的。在“选项”的“布局”类别中,有--height,您可以告诉--fzf仅使用终端高度的一定百分比。

而且,从调用fzf时我所在的那一行跳到我要做出选择的屏幕底部,对我来说有点不舒服。

我含糊(但错误地)认为--layout = reverse选项(也在“布局”类别中)与所显示选项的排序顺序有关。事实证明,可以使用--tac选项颠倒顺序(取自tac的名称,它是独立于fzf的命令,其名称与cat相反,请参见?),并且--layout = reverse与选择的一般介绍。

因此,通过--layout = reverse,我可以通过将选择的位置放在列表的顶部而不是底部,来减少这种烦恼,如下所示:

我发现还有其他一些选择可以使外观更好,但这些主观性更高。

首先,我可以使用Layout选项--border围绕所有内容设置边框。实际上,可以为此选项指定多个值。默认情况是在所有四个边上都做一个圆角边框。

然后,我可以通过在--Layout选项中为--info选项指定值inline来节省一些空间,以使统计信息显示在与输入相同的行上。

在本次和下一次腹痛中,由于某种原因,边框的右边缘无法正确显示或在腹痛中再现;试想一下,所有选项都被很好地装箱了。

在离开“布局”类别之前,还有两个其他选项可以起到很好的效果,尤其是在制作dmenu或rofi样式弹出菜单时。它们是--margin和--padding。我发现要获得弹出菜单效果,有必要不使用height选项(--height)来获得全屏显示效果:

就我所学到的控制外观而言,就是这样。 Wiki上实际上还有很多其他内容。

现在请注意,呈现给我的选择列表中有17688个条目。这很多,远远超出了我实际想要选择的范围。下次,我将看几个fzf环境变量,其中一个控制fzf使用什么命令,以及如何更改该命令以影响选择列表中显示(或不显示)的内容,因此我可以解决大量的条目发行。