双重或三重"点击选择文字"功能的约定?

Joh*_*ohn 7 user-interface conventions

几乎任何涉及文本的成熟程序都实现了"双击以选择单词",并且在某些情况下,"三次单击以选择像整行一样的其他内容"作为特征.我发现这些功能很有用,但它们在程序之间往往不一致.

示例 - 某些程序的双击不会选择单词后面的结束空格,但大多数程序都会这样做.有些人认为 - 字符是单词的结尾,有些则不然.我喜欢选择整个段落,因为当我三次点击它时,我写这篇文章,VS web开发人员2005没有三重点击支持,而超编辑32将在三次点击时选择一行.我们可以提出关于如何跨程序实现双击和三击模式匹配的无数不一致.

如果没有其他人达成关于模式匹配应该如何工作的约定,担心如何在我的程序中实现这种行为.

我的问题是,是否存在一个约定(约定?可能是MS或Linux约定?),它们规定了这些特性应该如何对最终用户起作用?它们是什么,如果有的话?

Mic*_*lag 13

我不相信你想要的规格水平有一个标准,也许不应该.Apple人机界面指南是最完整的.关于选择内容(与控件或离散数据对象相对),他们说:

双击最常用作其他操作的快捷方式,例如...以选择单词.三击选择应用程序定义的下一个逻辑单元.在文字处理文档中,单击三个单词可选择包含单词...的段落.在单词中双击可选择单词.选择应该提供"聪明"的行为; 例如,如果用户删除了所选单词,则也应该删除该单词后面的空格...在某些情境中 - 例如,在编程语言中 - 允许用户同时选择左右括号(或者一对中的大括号或括号),以及它们之间的所有字符,双击其中一个."(p115-116)

Apple非常关注字符是什么,不包含在单词中.

微软的Windows用户交互体验指南说:

对于某些类型的可选对象,每次单击都会扩展单击的效果.例如,在文本框中单击可设置输入位置,双击选择一个单词,然后三击选择一个句子或段落.(P430)

Java Swing外观设计指南说:

双击(快速连续两次单击鼠标按钮而不移动鼠标)用于选择较大的单位(例如,选择文本字段中的单词).... 三次单击(快速连续三次单击鼠标按钮而不移动鼠标)用于选择更大的单位(例如,在文本字段中选择整行).... 文本行中的三次单击会取消选择任何现有选择并选择该行.

侏儒人机界面指南不要说太多关于什么双链和三击应该做的.

这使您可以自由选择最适合您的用户.双击和三倍点击是专家快捷键,因此他们的行为应旨在最大限度地提高效率.考虑为什么用户正在选择一些东西并进行设计以使其变得最简单和最快速.

例如,显然双击单词时包含尾随空格背后的基本原理是用户通常选择一个单词以便将其复制或粘贴到文本中的另一个位置.这意味着您自动包含尾随空格,以防止用户在源处手动删除剩余的额外空间,并在目标处添加单词分隔空间.

同样,如果用户选择一行代码或段落进行复制或将其移动到其他位置,那么您可能希望包含换行符,以便用户不会在源处留下空行并强制手动添加换行符目的地(假设他们不想采取行/段并将其与另一行/段合并.

如果选择的目的不是复制和移动句子中的文本,那么这些都不适用,并且您不一定要包括尾随空格或换行符.这就是为什么不应该有标准的原因.

另一种方法是执行Apple称为智能剪切和粘贴(参见人机界面指南)或Microsoft Word的智能剪切和粘贴,其中空格,换行符和其他调整在切割,复制,粘贴和删除时通过算法计算出来,而不是选择时.