崇高的文字:主页键不会移动到行首

Sublime text: Home key not moving to the beginning of line

我在 sublime text 中做了以下操作:

Ctrl + A (select all)
Ctrl + Shift + L (into column selection)
Home 

我希望所有光标都转到每一行的开头。但是在某些行中,光标不会转到行的开头

以下是默认设置中 home 键的定义

{ "keys": ["home"], "command": "move_to", "args": {"to": "bol", "extend": false} },

所有使用Home键将光标跳到行首的键绑定使用move_to命令移动光标位置并指定在 to 参数中 "bol" 的值。这不仅包括“裸”键,还包括扩展选择的移位版本,等等。

to"bol" 值告诉 move_to 将光标移动到行首,但它在两个不同的行首“状态”之间切换:

  1. 行文本开始的位置(对于缩进行),这是该行的“软”开头。
  2. 第 1 列,这是该行的“硬”开头

根据光标当前所在的位置,您会得到一个或另一个,但再次按下该键会将位置翻转到另一个状态。

例如,给定如下 Python 示例,其中 | 是光标所在的位置:

def somefunc():|
    print("Hello")|

您第一次按 Home 时,光标将跳转到打印中的 p,因为那是该行的“软”开头。当光标在那里时,如果您再次按 Home,光标将跳转到该行的“硬”开头。再次按 Home 会将光标放回 p。对于 def 行,当您按下该键并停留在那里时,光标将跳到第一列,因为它根本没有缩进。

一般的想法是,在大多数情况下,当您想跳转到行首时,是因为您想对从那里开始的文本进行编辑而不考虑缩进(在上面的示例中,假设你想将 print 换成 log,如果你按下 Home 时你不需要向右箭头很多来回到功能).

在您的特定情况下,您可以在按下该键时看到这种情况;仅包含缩进白色 space 的行跳转到开头,物理上从第 1 列开始的行也是如此。所有其他行都跳转到 soft bol

如果您在文件或内容中工作,其中空行没有任何尾随白色 space 并且是真正的“空白”,那么您可以通过按 来做您想做的事第二次回家。在这种情况下,当前位于 soft bol 的所有行都将跳转到 hard bol,并且任何已经位于 hard bol 的行都将保留在那里(因为该行是空的)。

在您的情况下,这将不起作用,因为所有空白行都包含 space,因此按下该键会将这些行交换到 soft bol,而其他行将交换到 hard bol 相反,你最终会得到一个奇怪的翻转,永远不会让你到达你想去的地方。

解决此问题的一种方法是使用 trim_trailing_white_space 命令首先从行中删除所有尾随白色 space,在这种情况下,您可以按 Home两次。

此命令是在您保存文件并在首选项中打开 trim_trailing_white_space_on_save 时执行的命令,但默认情况下它不绑定到任何键或菜单项。所以要做到这一点,你首先必须将它绑定到一个键,将它添加到命令面板,打开设置并先保存内容,等等。

或者,您可以在用户绑定中绑定备用键(或重新绑定 Home 键)以指定 hardbolto ,这将使该键无论如何总是跳到第 1 列:

{ 
    "keys": ["home"], 
    "command": "move_to", 
    "args": {"to": "hardbol", "extend": false},
}