如何正确对齐(并左对齐?)vim中的数字或文本块,如下所示:
从:
45 209 25 1
2 4 2 3
34 5 300 5
34 120 34 12
到此:
45 209 25 1
2 4 2 3
34 5 300 5
34 120 34 12
这意味着每列中的最大数字或最大字符串不会移动 在第一列中,它是45 + 34,在第二列209 + 120中,在第三列300中和在最后一列12中。
答案 0 :(得分:5)
看看align
插件,它可以做到这一点以及更多。实用带上的好工具!
找到here
经过一些严肃的vimhelp /阅读后,我找到了正确的AlignCtrl
映射...
以视觉方式选择表格,例如使用ggVG
,然后执行\Tsp
,即<leader>Tsp
然后我明白了:
45 209 25 1
2 4 2 3
34 5 300 5
34 120 34 12
来自vimhelp:
\Tsp : use Align to make a table separated by blanks |alignmap-Tsp|
(right justified)
答案 1 :(得分:3)
您可以查看Tabularize插件。所以如果你有像
这样的东西45 209 25 1
2 4 2 3
34 5 300 5
34 120 34 12
只需在可视模式下选择这些行并输入:Tab/
,然后将其格式化为
45 209 25 1
2 4 2 3
34 5 300 5
34 120 34 12
此外,您现在看起来没有相同数量的空格来分隔数字。因此,在使用插件之前,请使用the following regex:
将所有多个空格替换为单个空格%s![^ ]\zs \+! !g
答案 2 :(得分:3)
使用Align plugin,您可以选择要对齐的行并点击:
<Leader>Tsp
来自Align.txt
\Tsp : use Align to make a table separated by blanks |alignmap-Tsp|
(right justified)
(帮助提及\
,因为它是默认的领导者,但如果您将其更改为其他内容,则必须相应地进行调整)
只是尝试我的安装,我得到了以下结果:
45 209 25 1
2 4 2 3
34 5 300 5
34 120 34 12
在我看来,Align插件很棒但是“对齐贴图”和各种命令并不容易记住。
答案 3 :(得分:2)
我认为最好的办法是先用
吃掉所有多个空格:{range}s/ \+/ /g
然后致电Tabularize
:Tab / /r1
或者将r
更改为l
。
答案 4 :(得分:2)
使用Align和AlignMaps插件:选择使用V,然后选择\ anum(AlignMaps自带Align)。 \ anum的一个优点是它还可以处理小数点(逗号)和科学记数法。