vim生产率分析仪

vim生产率分析仪,vim,text,analysis,Vim,Text,Analysis,背景 我正在寻找为vim构建生产力分析器,它可以无声地为用户执行的特定重复任务显示更有效的解决方案。提示可能显示在咆哮、状态行等中 别笑,但这个想法来自克利比: 当然,我不想建立另一个有趣的东西,如活力,我是关于认真的效率分析,这可能是特别有用的vim新手 问题 这有意义吗?是否有任何理论涵盖了这种分析?我觉得你的想法非常有趣。如果语气合适,这样的功能可能会有所帮助,而且不仅仅是新手 但我看到了很多困难: 你会用“正确的方法”来完成前一项任务,还是用一种不考虑其正确性的更短的方法?例如,新的V

背景

我正在寻找为vim构建生产力分析器,它可以无声地为用户执行的特定重复任务显示更有效的解决方案。提示可能显示在咆哮、状态行等中

别笑,但这个想法来自克利比: 当然,我不想建立另一个有趣的东西,如活力,我是关于认真的效率分析,这可能是特别有用的vim新手

问题


这有意义吗?是否有任何理论涵盖了这种分析?

我觉得你的想法非常有趣。如果语气合适,这样的功能可能会有所帮助,而且不仅仅是新手

但我看到了很多困难:

  • 你会用“正确的方法”来完成前一项任务,还是用一种不考虑其正确性的更短的方法?例如,新的Vim用户可以执行
    Vjjjd
    删除4行,您是否建议
    V3jd
    4dd
    dip
    (如果合适)或任何其他解决方案
  • 你如何定义“正确的方式”?在这里达成一致意见,或者在某个邮件列表上,或者询问一组著名的Vim专家
  • 您将如何定义您正在分析的任务?任务的边界是什么

不管怎样,这是一个好主意。

在我的脑海里:

  • 这需要相当数量的人工智能/模糊分类。很难分析用户“试图做什么”(通常用户不清楚,并且会偏离方向:哦,在我在这里的时候修复这个打字错误;将评论对齐…好的,现在开始另一项任务)
    讽刺的是,我认为当用“Vim Pro”的方式做事情时,这会变得更容易(但如果这样的话,发现它就没有用了,因为它已经是最优的了!)

  • 还有,TIMTOWTDI;你不能只是说“这是最好的方法”。这取决于口味、手位置、键盘布局、插件可用性等等

  • 我认为到目前为止,真正学习这种东西的最好方法是

    • 阅读文档
    • 以下堆栈溢出[vim]

怀疑论被抛在脑后,我可以看到具有类似提示功能的插件有很好的市场:

我会想到“总是开着”的提示,就像你在俗气的国际象棋引擎中看到的那样(显示可到达的区域、被攻击的区域、风险、串、叉以及交换组合结果的可视化):

  • 你可以在页边空白处显示标记的位置(这样人们会更加注意它们,尤其是
    等等)。现在可以这样做的插件是:在屏幕截图中,注意
    A
    b
    的标记,但也注意{和(以及类似的文本运动)的位置(我刚才看到了
    和其他人。)1

  • :set relativeEnumber
    已经有助于让用户想到
    13j
    ,而不是
    jjj
    ——但是在这里可以看到我的偏好

  • 我可以看到语法突出显示插件,其中包含的文本对象(单词、单词、句子、段落或标识符、parenblock、braceblock)将以越来越深的背景色突出显示,你会得到很好的暗示,依我看

  • 我可以看到按“o”键将光标移动到视觉选择的另一端的提示

  • 标准的matchit在提示匹配括号方面已经非常有用(尽管它没有以实际的clippy风格提示您可以使用
    %
    来实现)

  • +标志
    功能的其他鼓舞人心的用途是:(除了放置图形标志外,还使用气球提示);我可以看到这一点得到了很好的利用(如果只是指向某些文档主题)

关于文本对象highlighter,我怀疑它可能已经存在。我现在就去看看


1我认为要获得更多分数,我需要做(?)

:让g:showmarks\u包含+=“[]”
:ShowMarksOn
我还建议将UpdateTime设置为快速(比如500毫秒)

我个人的看法是,类似clippy的工具很难处理。正如上面提到的人,我认为最困难的部分是在编写文本时理解用户的意图。如果你把它放在一边,并有一个清晰的方法为你的意图添加语义,你的生活会变得容易得多

因此,我想作为第一步,输入输出序列工作流可以更容易地测试和获得结果,而不是实时建议

我在考虑编写一个通用的vi前端,将其应用于各种编辑器/文本框(例如:洋泾浜)

这种思维过程的结果之一是,输入语言应该是有点规则的(或最多是无上下文的)。因此,vi实例的输入可以用状态机表示。这并没有得到充分的证明,而是一个模糊的猜测!显然,需要更多的努力来确定重复命令(例如:13j)可能无法将语言转换为上下文无关语法

如果vi输入语言是常规语言,您可能会有机会使用有界模型检查来计算状态图中的一系列状态转换,从而产生所需的输出。我认为目前进行有界模型检查的最有效方法是通过反例,并将问题简化为sat实例(仅谷歌一例)

我很想听听你对此的看法,所以请发表评论,如果还有其他事情,我们可以试着聊一聊

编辑 我认为您可以尝试做编译器所做的标准优化器工作

然而,并不是说特别是宏
q[a-z]
@[a-z]
可能很难找到和替换
 :let g:showmarks_include+="<>[]"
 :ShowMarksOn