Skip to content

使用 Cmd + 右方向键,光标不会定位到当前行的最后一位,而是下一行的首位 #184

@laden666666

Description

@laden666666

Description
在官方 Playground 中,使用 Cmd + 右方向键,光标不会定位到当前行的最后一位,而是下一行的首位。这与 word、slate 等主流编辑器的行为是不一样的。

Recording
这是 editablejs 的行为,定位行尾时到了下一行:
Image

这是 slatejs 的行为,注意看光标位置,能够在一行内首尾切换:
Image

Sandbox
在官方 Playground 即可复现,因为英文单词直接存在空格,效果不明显,使用中文复现效果更佳。

Steps

  1. 输入一大段中文或无分割的英文字母,让内容自然折行
  2. 将光标定位到行中间
  3. 反复使用快捷键: Cmd + 左 和 Cmd + 右
  4. Cmd + 左可以定位到行首,但是 Cmd + 右却定位到下一行的行首,而不是当前行的行尾。

Expectation

  • Cmd + 右 能和 word、slatejs 等主流文本编辑器一样,能把光标定位到行尾。
  • Windows 上支持 end 和 home 快捷键,功能与 Cmd + 左、Cmd + 右 一致

Environment

  • Editable Version: 我猜应该任意版本都有问题,
  • Operating System: Macos(理论上 Window 中 end 快捷键也能复现,但是貌似 editablejs 未支持该快捷键)
  • Browser: Chrome, 我觉得任意 PC 端浏览器都能复现

Context
我猜是 editablejs 使用的 slatejs 作为选择位置状态,而 slatejs 因为浏览器天然第支持这个功能,所以即便是选择位置在下一行的行首,也会显示到这一行的行尾。而 editablejs 因为是自己做的光标展示,所以无法实现这个功能。
所以 editablejs 是不是应该增加一个额外的状态 —— 光标当前选择的位置:

  • 当前的字符的前面
  • 当前选择字符的上一个字符的后面

这样就能对齐浏览器自身的行为。且在上一个字符的后面时,对 Cmd + 左 的行为改为是跳到上一行的行首。这样改动应该是最小的。

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions