代码之家  ›  专栏  ›  技术社区  ›  dreftymac

一般用途的过滤器当你键入(又名typeahead,Incremental find,autocomplete)有吗?

  •  1
  • dreftymac  · 技术社区  · 16 年前

    背景

    最近我成了一个狂热分子 一切 我在电脑上打字时应该与 "DRY" . 如果有什么东西我必须在任何上下文中多次键入,我希望某种用户感知的自动完成选项为我做一些工作——总是——没有例外。

    (几乎)最优解

    如果您有空,请打开Firefox3.0并在地址栏中键入一些按键。你会注意到它表现出 Incremental Autocomplete 基于空格分隔的子字符串。Firefox中的另一个类似的地方是 about:config

    这是次优的,因为我不想只在Firefox中使用。我想到处都用这个。

    有没有人知道一个小部件或应用程序 没有什么 但是非常好的增量自动完成,可以作为一个通用的“到处运行”工具?允许用户执行以下操作:1)维护一个或多个“完成候选文件”;2)选择其中一个文件作为Firefox3.0风格完成的源文件;3)返回结果(如果用户取消,则返回空白),然后仅执行这三项操作?

    细节

    它的工作原理如下:

    • 步骤1:用户将csv文件(或其他易于编辑的格式)保存在硬盘中的某个位置
    • 步骤2:用户创建一个Windows脚本宿主脚本或一个批处理文件(或其他)来实例化FilterAsYouType GUI
    • 步骤3:用户运行脚本文件,脚本文件实例化GUI,告诉它使用哪个CSV文件作为所有潜在完成的源
    • 步骤5:当用户完成后,脚本将结果保存到一个变量中并对其执行一些操作

    下面是脚本的一些伪代码:

    include "GenericTypeaheadWidget";
    
    var gengui = new GenericTypaheadWidget('c:\docs\favorite_foods.csv');
    var fave_food = gengui.get_user_input();
    if(fave_food != ''){
        alert('you chose '+fave_food+'!');
    }
    

    基本原理

    我们的目标是 总是 能够从任意项的列表中自动完成,即使列表是几千个项,也不必依赖于它被构建到某个IDE或独立的应用程序中,该应用程序只接受某些类型的输入,或者相对于此任务的简单性,它有一个过于复杂的API。

    CSV(或文本或sqlite数据库)将为我提供一种自我生成“候选列表”或“历史日志”的方法,然后仅使用这些日志作为可能完成的源。

    免责声明

    我想知道有没有 简单的

    更新: Graphical Command Shell ,它捕获了这里提出的基本思想。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Eli Bendersky    16 年前

    你真的应该试试 Launchy

    而且它有开源代码,所以如果你想滚动你自己的界面,你可以借用它的自动完成代码。