在vim中的空格后轻松对齐字符
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在vim中的空格后轻松对齐字符相关的知识,希望对你有一定的参考价值。
我想创建一个映射的vim命令,该命令可以帮助我跨多行对齐变量的分配。想象一下我在文件中有以下文本:
foo = 1;
barbar = 2;
asdfasd = 3;
jjkjfh = 4;
baz = 5;
如果我选择多行并使用下面的正则表达式,请注意所有行的第10列都在空格中,则第10列之后的杂散空格将被删除,直到等号。
:'<,'>s/^(.{10})s*(=.*)$/12/g
这是结果:
foo = 1;
barbar = 2;
asdfasd = 3;
jjkjfh = 4;
baz = 5;
执行可视块选择并在正则表达式中使用该列时,是否有一种获取当前光标位置(特别是列位置)的方法?
或者,如果可以找到所选行上任何等号的max列并插入空格,以使所有等号按列对齐,则比解决前一个问题更可取。想象一下快速转换:
foo = 1;
barbar = 2;
asdfasd = 3;
jjkjfh = 4;
baz = 5;
至:
foo = 1;
barbar = 2;
asdfasd = 3;
jjkjfh = 4;
baz = 5;
带有块选择和组合键。
有两个插件:较旧的Align - Help folks to align text, eqns, declarations, tables, etc或Tabular。
对Tabular和Align不完全满意,我最近构建了另一个类似的但更简单的插件vim-easy-align。
查看演示屏幕录像:https://vimeo.com/63506219
对于第一种情况,只需在视觉上选择行并输入命令:EasyAlign=
即可完成技巧。
如果已定义映射,例如,
vnoremap <silent> <Enter> :EasyAlign<cr>
您只需两次击键即可完成相同操作:Enter
和=
您在评论中提到的情况,
final int foo = 3;
public boolean bar = false;
可以使用“:EasyAlign * ”命令轻松对齐,或者使用上述映射,Enter,*
和空格键,屈服
final int foo = 3;
public boolean bar = false;
没有插件
在这种情况下
foo = 1
fizzbuzz = 2
bar = 3
您可以使用宏添加许多空格:
0 f = 1 0 i 空格 ESC j
其中10是一个任意数字,只是为了增加足够的空间。
将宏应用M次(对于M行)并获取
foo = 1
fizzbuzz = 2
bar = 3
然后使用宏删除多余的空格,该宏将删除所有字符,直到第N列为止:
0 f = d 1 2 | j
其中12是要对齐的列号,|是竖线(SHIFT + )。 1 2 |一起是“转到第12列”命令。
每行重复并获得
foo = 1
fizzbuzz = 2
bar = 3
您可以将两个宏合并为一个:
0 f = 1 0 i 空格 ESC d 1 1 | j
以上是关于在vim中的空格后轻松对齐字符的主要内容,如果未能解决你的问题,请参考以下文章