Vim:将文本对齐到列

quhf5bfb  于 2023-08-05  发布在  其他
关注(0)|答案(4)|浏览(131)

假设我有以下文本:

key:value1 key:value234 key:val0
key:val1 key:value1 key:value5
key:value65799 key:value356 key:3790

字符串
有没有可能把它转换成某种对齐的列?

key:value1          key:value234            key:val0
key:val1            key:value1              key:value5
key:value65799      key:value356            key:3790


当然,我可以用制表符代替分隔空格,但仅凭这一点并没有帮助。

rjzwgtxy

rjzwgtxy1#

在类Unix系统上:

:%!column -t

字符串

m4pnthwp

m4pnthwp2#

我通常会先将空格转换为#,然后使用Align根据#对齐,然后删除#。

:%s/\ /#/g
:'<,'>Align#
:%s/\ /#/g

字符串
结果如下。

key:value1      key:value234  key:val0
key:val1        key:value1    key:value5
key:value65799  key:value356  key:3790

hmmo2u0o

hmmo2u0o3#

如果你不介意使用插件,请参阅tabular
在这里,您可以直观地选择线条并用途:

:'<,'>Tabular/ /

字符串
还有vim-easy-align

n53p2ov0

n53p2ov04#

基于正则表达式的解决方案如下:
:%s/\s/ /g,然后是:
:%s/\([^,]\{20}\)\(\s\+\)/\1/g
最好的问候。

相关问题