在 Sublime Text 2 中,如何缩进到具有多个粗糙边缘的光标的直列?

在 Sublime Text 2 中,如何缩进到具有多个粗糙边缘的光标的直列?

假设我在多条线上有多个游标,如下所示:

foo|
barr|
foobar|
baz|

我怎样才能自动将每行末尾的空白推到平坦的边缘,就像这样?:

foo    |
barr   |
foobar |
baz    |

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

当你只是TabSpace从初始安排时,你会得到这个:

foo    |
barr    |
foobar    |
baz    |

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

答案1

你可以使用 wbond 的崇高对齐

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

// 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": ["=", "|"]

将“|”替换为您要对齐的任何字符。

编辑: mtoast 发现,"\n"在“alignment_chars”中添加换行符可获得预期效果。 在“alignment_space_chars”中添加换行符可能没有必要,而且可能会删除文本。但是,在我有限的测试中,我没有发现任何差异。

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

编辑2:"alignment_space_chars"如果您突出显示一块文本并且 Sublime Alignment 无法找到其他可以在此行上对齐的内容(例如等号),则添加换行符将会删除文本。

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

答案2

您也可以不使用外部包,只需稍微多花点功夫,使用一个小技巧即可完成此操作。操作方法如下:

| 在这些指令中代表光标。

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

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

    foo     |
    barr     |
    foobar     |
    baz     |
    
  3. 可选1)输入任意字符后跟一个空格;我们使用c

    foo     c |
    barr     c |
    foobar     c |
    baz     c |
    
  4. Home使光标移至行首:

    |foo     c
    |barr     c
    |foobar     c
    |baz     c
    
  5. → (right arrow) 直到光标到达您想要的列的位置:

    foo    | c
    barr   |  c
    foobar |    c
    baz    | c
    
  6. Ctrl++选择所有以下空格,然后Shift按:cDelete

    foo    |
    barr   |
    foobar |
    baz    |
    
  7. 可选1Delete再次按下以清除我们在可选步骤中添加的多余空格字符。


1c仅当行中有需要保留的附加内容时,我们才会使用后面跟空格的字符。如果没有它, Ctrl++Shift选择行中任何附加内容的第一个单词,这会使删除变得很棘手。

答案3

对于那些想要缩进除和之外的字符的人=|我可以安装结盟打包并修改文件Sublime Text > Preferences > Package Settings > Alignment > Settings - User如下:

{
  "alignment_chars": [
    "{create",
   ]
}

然后我选择了以下代码:

  let!(:admin_user) {create(:admin_user, :admin)}
  let!(:another_admin_user) {create(:admin_user, :admin)}
  let!(:superadmin_user1) {create(:admin_user, :superadmin)}
  let!(:superadmin_user2) {create(:admin_user, :superadmin)}
  let!(:nonadmin_user) {create(:admin_user)}

并按下Command + Ctrl + A使其对齐。

  let!(:admin_user)        {create(:admin_user, :admin)}
  let!(:another_admin_user){create(:admin_user, :admin)}
  let!(:superadmin_user1)  {create(:admin_user, :superadmin)}
  let!(:superadmin_user2)  {create(:admin_user, :superadmin)}
  let!(:nonadmin_user)     {create(:admin_user)}

所有内容都被移动到了文本可以占据的最左边的列,{create同时仍然保持对齐。

相关内容