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)
(在这些示例中,|
应该是我的光标。)
当您只是Tab或Space从最初的安排时,您会得到:
foo |
barr |
foobar |
baz |
Run Code Online (Sandbox Code Playgroud)
这很有用,但不是我想要的。我正在寻找某种键盘快捷键,可以让我从参差不齐的多光标插入缩进到直列。
小智 47
你也可以在没有外部包的情况下使用一个小技巧来完成,只需要稍微多一些努力。就是这样:
|
在这些指令中代表一个游标。
使用Ctrl+Click 或通过选择文本块并按Ctrl+ Shift+在所有所需行上创建光标L。(选择文档)
在每个单词的末尾添加额外的空格,直到每个光标都位于或超过您想要列的位置(不管过去多远):
foo |
barr |
foobar |
baz |
Run Code Online (Sandbox Code Playgroud)(可选1)键入任何字符后跟一个空格;让我们使用c
:
foo c |
barr c |
foobar c |
baz c |
Run Code Online (Sandbox Code Playgroud)按Home使光标移动到行首:
|foo c
|barr c
|foobar c
|baz c
Run Code Online (Sandbox Code Playgroud)按→ (right arrow) 直到光标位于您想要列的位置:
foo | c
barr | c
foobar | c
baz | c
Run Code Online (Sandbox Code Playgroud)按Ctrl+ Shift+→选择以下所有的空格和c
,然后按Delete:
foo |
barr |
foobar |
baz |
Run Code Online (Sandbox Code Playgroud)(可选1 )Delete再次按下可清除我们在可选步骤中添加的额外空白字符。
1c
仅当我们要保留的行上有附加内容时,才使用后跟空格的字符。没有它,Ctrl+ Shift+→会选择的线路上的任何附加内容的第一个字,使删除棘手。
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"
将用空格(或制表符,取决于您的设置)填充行尾以匹配突出显示的最长行。