[功能改进建议] f键单字符编号范围更加汇聚&历史记录搜索框支持类似fzf的空格分词级联筛选&添加显示标签页编号的功能
聚焦f键点击功能的编号范围
需求分析
f键点击功能的设计目标,应该是用尽可能少的按键让用户精准点击特定的页面元素.现在版本的主要问题是,编码过长,以我使用的12345五列四行 20键编码为例,如果页面上的可点击元素超过20个,就会出现两次按键以上才能实现点击的场景. 而当代浏览器用户使用高分辨率大屏的占比不低,许多网页的功能也比较丰富,可点击元素众多,20键编码也仍需fxx点击3次按键是常有的情况. 因此我设想提出一种可以将多数场景中的元素编码数量降低到降低到20个以下的方案:
- 用户打开一个网页,目光聚焦一般从上往下滑动,当此屏中没有想要点击的元素时,会滚动或翻屏下划,直到遇到想要点击的元素或者退出本页浏览.根据个人经验,当用户点击某个不切换页面的元素后,例如赞/踩/暂停/换一换等按钮,其下一次点击的对象在近距空间的概率比在远距空间更大.
- 因此,我们可以根据滚动的方向,以及上一次点击的位置来"预测"用户此次按下f时想要点击的元素落在哪个范围的概率更大.
- 当此点击模式下用户按下f后,通过预测算法将单字符编码的可点击元素汇聚在一个矩形范围内集中展示,同时,显示此矩形框,通过矩形框的位置提示用户调整下一步的输入.
代码实现可行性
个人猜测此插件是通过读取网页源代码并遍历DOM元素来识别所有的可点击元素,然后以我不了解的方式筛选出当前屏幕上可见的元素并对其进行编码和展示. 因此,如果要实现我所设想的新功能:
- 当前页面浏览域内的本地变量中需要存储用户上一次的方向操作以及上一次点击位置相对于当前页面中心位置的向量,编码函数根据这两个变量来调整矩形框的位置.(前一个变量的影响因子更大)
- 确定矩形框位置之后,优先从矩形内上一次点击的位置开始,其次从矩形的中心点开始,从小到大,逐步扩大搜索范围进行搜索.
- 每次迭代内,当搜索到的可点击元素的数量等于用户设置的编码字符数量时,停止单字符编码范围的搜索函数并执行函数,返回到普通编码函数中继续执行.
搜索框空格分词级联筛选
如标题所示. 现有的历史记录搜索的痛点在于,需要从历史记录中查找的网页一般是到达路径不明确或者到达链路过长的网页. 对于前者,用户是记不住能精准筛选的关键词的,宜组合多个关键词来进行交互式模糊查找. 对于后者,到达链路过长,很可能意味着用户在相关联的父级路径下也留下了许多浏览记录,那么即使用户比前一种情况记得更多的关键词信息,它所期望的目标网页也还是有可能排序在其父路径网页之后,仍需根据初步筛选的结果作为提示继续输入筛选
标签页显示编号
就像在ide中都会显示行号以方便通过行号跳转到具体行一样,vimrc中既然支持上下切换标签页,也支持在前面输入数字参数重复执行此动作.那么势必需要有一个能够展示当前浏览器窗口中所有标签页序号的功能. 我建议做成相对序号显示,功能被调用好,自动展开收缩的标签页标题列表,当前标签页序号编号为0,上下各自从1递增计数,表示从当前标签页跳转到目标所需要输入的数字.
聚焦f键点击功能
目前元素应该是基于CSS匹配的
我是通过 env 绑定特定域名编写特定CSS匹配规则来简化操作的。如 #1239 可以快速定位 headings
此外,我觉得 fxx 三个键位是可接受的。 我将f使用的字母设定为左手区字母,且主要是 home row 键, 连续击两键和击一键速度相差不大
搜索框问题
我记得 developer 说过在浏览器内通过 JS 实现模糊搜索会产生性能问题
标签页显示编号
默认就有编号,不过不是相对编号。 默认情况下下,在 Vomnibar开启状态时按 Alt 键会显示编码(你可以自定义编号和是否直接显示)然后按下编号键就可以直接跳转至tab
我觉得不如直接 Vomnibar.activateTabs 状态下进行搜索
p.s. shift+6 (即^键) 可以直接跳转至上一个tab
标签页显示编号
默认就有编号,不过不是相对编号。 默认情况下下,在 Vomnibar开启状态时按 Alt 键会显示编码(你可以自定义编号和是否直接显示)然后按下编号键就可以直接跳转至tab 在我按T或b激活Vomnibar的时候,我的标签页不会在按下alt的时候显示序号,不管是垂直标签页还是水平的都不行
在我按T或b激活Vomnibar的时候,我的标签页不会在按下alt的时候显示序号,不管是垂直标签页还是水平的都不行
在我的 Windows Google Chrome 和 Arch Linux Firefox and Chromium 上这是默认行为。
see #614