有没有办法在双击时不选择单词后的空格?

Doo*_*ake 40 windows double-click selection whitespace

在 Windows 中,双击单词时的默认行为似乎是选择该单词以及该单词后面的任何空格(空格或制表符)。您可以在所有程序中看到这种行为,所以我假设这不是每个程序的设置。这可能对其他操作系统很常见,但我不知道从个人经验。

这是可以在任何地方的操作系统中配置的东西还是我必须忍受的东西?

小智 24

我双击这个词,但按住第二次单击并轻轻拖动它。出于某种原因,选择多个完整单词(双击并拖动)之后不会选择空格,因此您可以双击并仅拖动一个单词。

  • 不幸的是**此解决方案不适用于 Windows 10 2004 中的大多数应用程序**。我在记事本、Word 365、Firefox 82、我的手机中测试了它(其中按单词选择根本不起作用!)。该解决方案的工作方式如 Chrome 和 Edge 浏览器 86 中所述。另一方面,在 Notepad++ 或 VS Code 中双击不会选择尾随空格。 --- 无论如何,我不知道使用未完成的双击进行单词选择的技巧。 (5认同)

Sno*_*Fan 19

据我所知,这是默认行为。

我经常做的是双击单词,然后按住 shift 并按左箭头键(应用程序允许)。我发现这是最快的方法,而不是尝试用鼠标精确选择要仔细检查的单词,这通常有点棘手和繁琐。


lol*_*lov 11

一种快速选择没有尾随空格的单词的方法

  1. 双击一个词。
  2. 第二次单击后不要松开鼠标按钮,将鼠标向左移动一点。
  3. 释放。

在 Windows 10(内部版本 17758)上测试。

演示动画

  • 这*仅*适用于某些应用程序...例如,适用于 Chrome,不适用于 Firefox、记事本或 Word(在 Word 中,只有在释放第二次单击时才会显示所选内容) (3认同)
  • MacOS 也是如此 (2认同)

小智 7

对我来说最简单的方法:双击首先选择带有以下空格的单词,然后按住shift并单击同一个单词(或单击任何其他单词以扩展选择)。这将选择没有空格的单词。


Joe*_*Joe 6

最简单的方法是双击,但第二次单击时不要释放鼠标按钮。然后在按住鼠标按钮的同时稍微向上(或向下)拖动。现在您只能选择单词,末尾不带空格。

  • 你应该说它在哪里起作用,因为它不是系统范围的。例如,这适用于 Chromium 浏览器。 (3认同)

Deb*_*ner 6

这种行为在文字处理器上具有一定的意义。当您想要删除、剪切或移动某个单词时,您通常需要在该单词后面添加空格;至少,这是其背后的理由。但这对于只读内容毫无意义,尤其是在浏览器上。由于没有系统范围的解决方案,因此我将重点关注浏览器。


火狐浏览器

这在 Firefox 中很容易修复:它有layout.word_select.eat_space_to_next_word设置。转到about:config,搜索此设置并将其设置为 false。


Chrome / 其他 Chromium 浏览器 / Electron 应用程序

不幸的是,Chrome 和其他 Chromium 浏览器没有简单的修复方法。前面三个答案中提到的技巧(双击,但在第二次单击时,稍微移动光标)通常适用于 Chromium 浏览器。我的问题是:

  1. 如果您不需要尾随空格,则每次都需要执行此操作
  2. 它适用于单击鼠标按钮或单击触摸板按钮,但不适用于“点击”触摸板,因为双击并在触摸板上移动会模拟单击和拖动。

为了帮助解决 1.,在 AutoHotkey 上编写了以下解决方法:

#If WinActive("ahk_class Chrome_WidgetWin_1")
  ~LButton::
    if (A_TimeSincePriorHotkey < 400) and (A_TimeSincePriorHotkey <> -1)
      MouseMove, 1, 0, 0, R
    return
#If
Run Code Online (Sandbox Code Playgroud)

如果您在 Chromium 浏览器上双击(即在 400 毫秒内),它会在您释放鼠标键之前将光标移动一个像素,以便仅选择该单词。

如果您使用鼠标,或者实际上用力在触摸板(或按钮,如果有的话)上单击两次,则效果很好。但如果双击触摸板则效果不佳。大概这是因为,当您第一次点击触摸板时,它不会立即将点击​​发送到系统,因为它还不知道您是否真的想要点击或执行其他操作,例如双击并移动,这意味着单击并拖动。因此,如果您实际上双击,它会在第二次点击结束时将两次单击作为单个事件发送,因此 AutoHotkey 不会干扰。(但是,如果您双击的速度足够慢,第一次点击本身会作为点击发送,但又足够快,第二次点击/点击仍然算作双击,那么它就可以工作;但要正确执行是很困难的。)

所以我修改如下:

#If WinActive("ahk_class Chrome_WidgetWin_1")
  ~LButton::
    if (A_TimeSincePriorHotkey < 400) and (A_TimeSincePriorHotkey <> -1)
    {
      MouseMove, 3, 0, 0, R
      MouseClick
      MouseClickDrag, Left, 0, 0, -1, 0, 0, R
    }
    return
#If
Run Code Online (Sandbox Code Playgroud)

因此,我放弃了第一次双击,因为我无法干扰它,并使用上述技巧重做双击。第一次鼠标移动是为了防止这些新的单击被解释为三次/四次单击,从而选择整个段落。事实证明,为此至少需要移动 3 个像素。因此,请确保不要单击单词的右边缘!

三次单击以选择段落仍然可以正常使用。但是,双击并拖动以选择多个整个单词,或三次单击并拖动以选择多个整个段落则不然,因为这是我们用来选择单个单词的功能。但如果您偶尔也使用这些功能,则可以在 AutoHotkey 菜单中添加一个项目,以便在需要时禁用此特定的解决方法。

此解决方法适用于所有 Chromium 浏览器以及从 Chromium 继承相同文本选择的 Electron 应用程序(我在 Whatsapp 上进行了测试),因为它们都具有ahk_class Chrome_WidgetWin_1. 如果您只想让它在浏览器或特定应用程序上运行,可以通过更改 if 语句来实现,例如#If WinActive("ahk_exe vivaldi.exe")在我的例子中,因为我使用 Vivaldi。


AutoHotkey 非常灵活,您可以将它用于在浏览器和 Electron 应用程序之外工作的系统范围解决方案。例如,每当您双击任意位置(使用与上述相同的方法检测)时,AutoHotkey 都会检查选择中是否包含尾随空格,如果包含,则发送 Shift + 向左箭头。我没有打扰,因为浏览器是这种行为最让我恼火的地方。