vim的生产力分析器

时间:2011-10-12 04:48:04

标签: vim text analysis

背景

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

不要笑,但这个想法来自Clippy:http://en.wikipedia.org/wiki/Office_Assistant 当然,我不想建立另一个有趣的东西,如活力,我是关于严重的效率分析,这可能对vim新手特别有用。

问题

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

3 个答案:

答案 0 :(得分:8)

脱离我的头顶:

  • 这需要相当数量的AI /模糊分类。很难分析用户“正在尝试做什么”(通常用户不清楚并且会受到偏见:哦,我在这里时修复那个错字;对齐那个评论......好吧,现在用另一个任何事情)具有讽刺意味的是,我认为在做“Vim Pro”的时候,这会变得更容易(但是因为它已经是最佳的,所以发现它是没有用的!)

  • 另外,TIMTOWTDI;你不能只是说'这是最好的方式'。这取决于品味,手感,键盘布局,插件可用性等等。

  • 我认为到目前为止,实际学习这类事情的最好方法是

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

怀疑主义落后,我可以看到一个具有提示功能的插件的良好市场:

我会想到'永远在线'的提示,就像你在俗气的国际象棋引擎中看到的那样(显示可到达的领域,受到攻击的领域,风险,串,叉和交换组合结果的可视化):

  • 您可以在边距中显示标记的位置(这样人们就会更加了解它们,尤其是<,&gt;等)。现在执行此操作的插件是屏幕截图中的ShowMarks,请注意ab的标记,还要(nifty!) {的位置和类似的文字动作(我刚见过>.和其他人) 1

      

    enter image description here

  • :set relativenumber已经有助于让用户想到13j而不是jjjjjjjjjjjjj - 但请在此处查看我的偏好Moving the point between in charactors by quick search

  • 我可以看到语法高亮插件发生在封闭的textobjects(单词,WORD,句子,段落或标识符,parenblock,braceblock)将以增加的背景颜色阴影突出显示。如果我们想到一种覆盖有用提示的方法(用于文本对象运动的键),你会得到非常好的暗示,IMO。

  • 我可以看到一个提示,按'o'将光标移动到视觉选择的另一端

  • 标准matchit在暗示匹配括号方面已经非常有用(虽然它没有暗示你可能会使用%实际的clippy风格)

  • +signs功能的其他鼓舞人心的用途是:errormarker.vim(除了放置图形符号外,还使用气球提示);我可以看到这很好用(如果只是指出某些文档主题)enter image description here

关于文本对象荧光笔,我怀疑它可能已经存在。我现在要看看


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

 :let g:showmarks_include+="<>[]"
 :ShowMarksOn

我还建议将updatime设置为快速(例如500ms)

答案 1 :(得分:4)

我发现你的想法非常有趣。使用正确的音调,这样的功能可能会有所帮助,而不仅仅适用于新手。

但我看到了一些困难:

  • 您是否会显示“正确的方式”来执行上一个任务或更短的方式而不考虑其正确性?例如,新的Vim用户可以Vjjjd删除4行,如果合适或其他解决方案,您建议V3jd4dddip吗?
  • 你怎么定义“正确的方法”呢?在SO或某些邮件列表上达成共识,或向一群有信誉的Vim专家询问?
  • 您如何定义正在分析的任务?任务的界限是什么?

无论如何,这是一个很好的主意。

答案 2 :(得分:0)

我个人意见就是这样,一个像工具一样的clippy很难处理。正如上面提到的人,我认为最困难的部分是在撰写文本时了解用户的意图。如果你放弃它并有一个明确的方式为你的意图添加语义,你的生活可以变得更容易!

因此,作为第一步,输入输出序列工作流程可以更容易测试并从中获得结果,而不是实时建议。

我正在考虑编写一个通用的vi前端,将它应用于各种编辑器/文本框(即:pidgin)。

这个思考过程的结果之一是输入语言应该有些规律(或者最多没有上下文)。因此,vi实例的输入可以由状态机表示。这还没有完全证明,而是一个模糊的猜测!显然,必须更多地考虑重复命令(例如:13j)是否可能无法将语言转换为上下文无关语法。

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

我想听听您对此的意见,所以请发表评论,如果还有更多内容,我们可以尝试聊聊此事。

修改

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

然而,特别是宏q[a-z] @[a-z]可能很难找到和替换。我认为,这是NP完成。