Regex 在vim中轻松对齐空格后的字符
我想创建一个映射的vim命令,帮助我跨多行对齐变量的赋值。假设我在一个文件中有以下文本:Regex 在vim中轻松对齐空格后的字符,regex,vim,cursor,Regex,Vim,Cursor,我想创建一个映射的vim命令,帮助我跨多行对齐变量的赋值。假设我在一个文件中有以下文本: foo = 1; barbar = 2; asdfasd = 3; jjkjfh = 4; baz = 5; 如果我选择多行并使用下面的正则表达式,注意第10列是所有行的空白,第10列后面的空白将被删除,直到等号为止 :'<,'>s/^\(.\{10}\)\s*\(=.*
foo = 1;
barbar = 2;
asdfasd = 3;
jjkjfh = 4;
baz = 5;
如果我选择多行并使用下面的正则表达式,注意第10列是所有行的空白,第10列后面的空白将被删除,直到等号为止
:'<,'>s/^\(.\{10}\)\s*\(=.*\)$/\1\2/g
在执行可视块选择并在正则表达式中使用该列时,是否有方法获取当前光标位置(特别是列位置)
或者,如果可以找到所选行上任何等号的最大列,并插入空格,以便所有等号按列对齐,则最好解决前面的问题。想象一下快速转换:
foo = 1;
barbar = 2;
asdfasd = 3;
jjkjfh = 4;
baz = 5;
致:
有一个块选择和一个键组合。有两个插件:旧的,或者。不完全满足于表格和对齐,我最近构建了另一个类似但更简单的插件,名为 查看演示屏幕: 对于第一种情况,只需目视选择行并输入命令
:EasyAlign=
,即可完成此操作
如果已定义映射,例如
vnoremap <silent> <Enter> :EasyAlign<cr>
可以使用“:EasyAlign*\”命令轻松对齐,或使用上述映射,输入、*
,然后按空格键对齐
final int foo = 3;
public boolean bar = false;
没有插件
在这种情况下
foo = 1
fizzbuzz = 2
bar = 3
可以使用宏添加多个空格:
0f=10iSPACEESCj
其中10是一个任意数字,只是为了增加足够的空间
应用宏M次(对于M行)并获取
然后使用一个宏删除多余的空格,该宏将删除所有字符,直到某些列N:
0f=d12 | j
其中12是要对齐的列号,|是竖线(SHIFT+\)。12 |是一个“转到第12列”命令
对每一行重复上述步骤,并获取
foo = 1
fizzbuzz = 2
bar = 3
可以将两个宏组合为一个宏:
0f=10ispacescd11 | j您可以做的一件事是删除可视块开头的空白,如下所示:
:“表格非常好:对于您的示例,您只需在块的任何一行上执行:Tab/=
。这正是我所需要的。你知道如何让它在两行“final int foo=3”和“public boolean bar=false”中对齐每个标记吗?我到处闲逛,但运气不太好。
final int foo = 3;
public boolean bar = false;
foo = 1
fizzbuzz = 2
bar = 3
foo = 1
fizzbuzz = 2
bar = 3
foo = 1
fizzbuzz = 2
bar = 3