我想创建一个映射的 vim 命令,帮助我在多行中对变量进行赋值时进行对齐。假设我有以下文本文件:
foo = 1;
barbar = 2;
asdfasd = 3;
jjkjfh = 4;
baz = 5;
如果我选择多行并使用下面的正则表达式,请注意所有行中第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;
使用块选择和按键组合。
:'<,'>s/\%V *//
。 - Vaughn Cato