假设我在多条线上有多个游标,如下所示:
foo|
barr|
foobar|
baz|
我怎样才能自动将每行末尾的空白推到平坦的边缘,就像这样?:
foo |
barr |
foobar |
baz |
(在这些例子中,|
应该是我的光标。)
当你只是Tab或Space从初始安排时,你会得到这个:
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
您也可以不使用外部包,只需稍微多花点功夫,使用一个小技巧即可完成此操作。操作方法如下:
|
在这些指令中代表光标。
Ctrl使用+Click 或选择一段文本并按Ctrl+ Shift+在所有所需的行上创建光标L。(选择文档)
在每个单词的末尾添加额外的空格,直到每个光标都位于或超过您想要的列的位置(无论超过多远):
foo | barr | foobar | baz |
(可选1)输入任意字符后跟一个空格;我们使用
c
:foo c | barr c | foobar c | baz c |
按Home使光标移至行首:
|foo c |barr c |foobar c |baz c
按→ (right arrow) 直到光标到达您想要的列的位置:
foo | c barr | c foobar | c baz | c
按Ctrl++选择所有以下空格,然后Shift按:→
c
Deletefoo | barr | foobar | baz |
(可选1)Delete再次按下以清除我们在可选步骤中添加的多余空格字符。
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
同时仍然保持对齐。