我想创建一个映射的 vim 命令,帮助我跨多行对齐变量的分配。想象一下,我在文件中有以下文本:
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;
有没有办法在执行可视块选择并在正则表达式中使用该列时获取当前光标位置(特别是列位置)?
或者,如果可以找到所选行上任何等号的最大列并插入空格,以便所有等号按列对齐,这比解决前面的问题更可取。想象一下快速转换:
foo = 1;
barbar = 2;
asdfasd = 3;
jjkjfh = 4;
baz = 5;
至:
foo = 1;
barbar = 2;
asdfasd = 3;
jjkjfh = 4;
baz = 5;
带有块选择和组合键。