直到最近(我想不到 1 年前),在 Chromium/Chrome 中编辑字段时,Home和键的行为与我数十年来使用计算机所期望的行为相同——这些键的行为与Endtextarea
仍然全部展出其他我的系统上的应用程序,包括:
- Firefox 正在编辑
textarea
- Gedit 文本编辑器
但是有一天(大概是在我的系统上更新 Chromium 之后),这种行为突然改变了。
为什么/如何/何时(在哪个版本和哪个提交中)发生了这种变化,更重要的是,我如何恢复原始/标准/理智的行为Home?
注意:我在 Windows 上的 Chrome 上进行了测试,没有出现此问题,因此此错误似乎仅限于 Linux 上的 Chromium/Chrome仅有的, 因为某些原因。
我的测试用例
Home要测试/重现字段内部的行为textarea
,请转到https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea并在文本字段中输入或粘贴以下内容:
Paragraph 1
Paragraph 2
Paragraph 3
原始/理智/预期的行为
当我按下 时Home,光标应该移动到行首。始终如此。没有其他动作。如果是已经在行首(包括空白行),那么它就不应该移动到任何地方。
例如:当光标位于空白行的开头时(此处表示|
):
Paragraph 1
Paragraph 2
|
Paragraph 3
,按下Home不应导致光标移动,并且它应该保留在这里:
Paragraph 1
Paragraph 2
|
Paragraph 3
新的/损坏的/不想要的行为
当光标位于行尾、中间或行首以外的任何位置时,Home可按预期工作。
当光标位于非空白线,Home按预期工作。
但当光标位于空白的线(此处用 表示|
):
Paragraph 1
Paragraph 2
|
Paragraph 3
,按下Home会使光标移动到场地而不是线,像这样:
|Paragraph 1
Paragraph 2
Paragraph 3
(End在这种情况下按还坏了,但至少不那么严重:它只会导致光标向下移动到下一行,就像我按下了 一样↓ Down。)
新的行为就像我按下了Ctrl+Home一样——当然,这也是我会如果我按下了通缉将文本光标移动到场地- 但是我仅有的要求移至行首,谢谢。
我觉得很奇怪,任何键的行为都会取决于您在缓冲区中的位置/哪个字符恰好位于当前插入点的右侧(\n
)。这就像在工作← Left,如果您的光标位于空格之前,它就像Ctrl+一样← Left向左移动一个单词,而否则只向左移动一个字符。
到目前为止,我基本上已经设法解决了这个奇怪的错误。但意外变化的神秘性和怪异性仍然让我恼火。
当我编辑包含许多段落的大型帖子(在 GitLab、StackExchange 等上)时,它仍然会不时地绊倒我。一次意外地Home在“错误”的地方按下了 ,它就会将我带到字段的顶部,让我迷失了自己所在的位置,这非常令人恼火,因为我可能需要很长时间才能回到原来的位置并重新理清思路。
Home如果我已经在一行的开头,为什么还要按?
嗯,这与主题无关,但我想这是一个合理的问题。
发生这种情况的一种情况是,如果我尝试系统地在一系列行中的每一行开头添加前缀。在编辑 Markdown 注释时,我可能想要引用某些行,因此我会将其添加>
到每行的开头,或者我可能想要缩进一段文本,以便它成为列表项的一部分,因此我会在每行的开头添加 4 个空格。
要在浏览器中高效地执行此操作(而不是在vim
我更愿意编辑文本的地方),需要反复按下一系列按键,例如Home > Space ↓ Down。如果每次要按下 时都必须小心翼翼地停下来思考“您在哪里”,那么这个简单的、无需思考的过程就不再有效Home。