在 Sublime Text 2 中,如何缩进到在锯齿状边缘上有多个光标的直列?

Gla*_*eep 34 text-editing sublime-text

假设我在几行上有多个光标,如下所示:

foo|
barr|
foobar|
baz|
Run Code Online (Sandbox Code Playgroud)

如何自动将每行末尾的空白推到平坦的边缘,如下所示?:

foo    |
barr   |
foobar |
baz    |
Run Code Online (Sandbox Code Playgroud)

(在这些示例中,|应该是我的光标。)

当您只是TabSpace从最初的安排时,您会得到:

foo    |
barr    |
foobar    |
baz    |
Run Code Online (Sandbox Code Playgroud)

这很有用,但不是我想要的。我正在寻找某种键盘快捷键,可以让我从参差不齐的多光标插入缩进到直列。

小智 47

你也可以在没有外部包的情况下使用一个小技巧来完成,只需要稍微多一些努力。就是这样:

| 在这些指令中代表一个游标。

  1. 使用Ctrl+Click 或通过选择文本块并按Ctrl+ Shift+在所有所需行上创建光标L。(选择文档

  2. 在每个单词的末尾添加额外的空格,直到每个光标都位于或超过您想要列的位置(不管过去多远):

    foo     |
    barr     |
    foobar     |
    baz     |
    
    Run Code Online (Sandbox Code Playgroud)
  3. 可选1)键入任何字符后跟一个空格;让我们使用c

    foo     c |
    barr     c |
    foobar     c |
    baz     c |
    
    Run Code Online (Sandbox Code Playgroud)
  4. Home使光标移动到行首:

    |foo     c
    |barr     c
    |foobar     c
    |baz     c
    
    Run Code Online (Sandbox Code Playgroud)
  5. → (right arrow) 直到光标位于您想要列的位置:

    foo    | c
    barr   |  c
    foobar |    c
    baz    | c
    
    Run Code Online (Sandbox Code Playgroud)
  6. Ctrl+ Shift+选择以下所有的空格和c,然后按Delete

    foo    |
    barr   |
    foobar |
    baz    |
    
    Run Code Online (Sandbox Code Playgroud)
  7. (可选1 )Delete再次按下可清除我们在可选步骤中添加的额外空白字符。


1c仅当我们要保留的行上有附加内容时,才使用后跟空格的字符。没有它,Ctrl+ Shift+会选择的线路上的任何附加内容的第一个字,使删除棘手。

  • 这起初看起来很扭曲,但它是一个巧妙的黑客。适合粘贴正确对齐的列。可以使用文本糕点插件粘贴下一列。 (2认同)

d_r*_*ail 10

你可以使用 wbond 的Sublime Alignment

它可能需要您将其添加到您的设置文件中(首选项>包设置>对齐>设置-用户:

// The mid-line characters to align in a multi-line selection, changing
// this to an empty array will disable mid-line alignment
"alignment_chars": ["=", "|"],
// If the following character is matched for alignment, insert a space
// before it in the final alignment
"alignment_space_chars": ["=", "|"]
Run Code Online (Sandbox Code Playgroud)

替换“|” 与您想要对齐的任何字符。

编辑: 正如 mtoast 发现的那样,添加"\n"到“alignment_chars”会产生预期的效果。 可能不需要将新行字符添加到“alignment_space_chars”,并且可能会删除文本。但是,通过我有限的测试,我没有看到任何区别。

按住control并单击每行的末尾。然后按对准热键(用于Linux的默认值是ctrl+ alt+ a)。您会发现光标与最远的光标位置对齐。

Edit2:"alignment_space_chars"如果突出显示文本块并且 Sublime Alignment 找不到其他要对齐的内容(例如等号),则添加换行符将删除文本。

此外,如果 Sublime Alignment 找不到其他要对齐的内容,则添加换行符"alignment_chars"将用空格(或制表符,取决于您的设置)填充行尾以匹配突出显示的最长行。

  • 还有一个类似的包:[Align Tabular](https://github.com/randy3k/AlignTab),它更灵活一些(你可以对齐多个字符)。 (3认同)