Vim 如何对齐以最大数字或最大字符串为对齐指示符的列?

Vim 如何对齐以最大数字或最大字符串为对齐指示符的列?,vim,alignment,Vim,Alignment,在vim中,如何右对齐(和左对齐?)一组数字或文本,如下所示: 发件人: 为此: 45 209 25 1 2 4 2 3 34 5 300 5 34 120 34 12 这意味着每列中的最大数字或最大字符串不会移动。 第一列是45+34,第二列是209+120,第三列是300,最后一列是12。您可以查看插件。所以如果你有 45 209 25 1 2 4 2 3 34 5 300 5 34 120 34 12 只需

在vim中,如何右对齐(和左对齐?)一组数字或文本,如下所示:

发件人:

为此:

45    209    25    1
 2      4     2    3
34      5   300    5
34    120    34   12
这意味着每列中的最大数字或最大字符串不会移动。
第一列是45+34,第二列是209+120,第三列是300,最后一列是12。

您可以查看插件。所以如果你有

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
而且,看起来现在没有相等数量的空格来分隔这些数字。因此,在使用插件之前,请将所有多个空格替换为单个空格:


看看
align
插件,它可以做到这一点,还有更多。伟大的工具在您的实用腰带

发现

经过认真的帮助/阅读,我找到了正确的
AlignCtrl
映射。。。 目视选择表格,例如使用
ggVG
,然后执行
\Tsp
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)
使用,您可以选择要对齐并点击的行:

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插件很棒,但是“Align maps”和各种命令并不容易记住。

我认为最好的做法是首先使用

:{range}s/ \+/ /g
然后调用制表

:Tab / /r1

或者使用Align和AlignMaps插件将
r
更改为
l
:选择使用V,然后\anum(AlignMaps附带Align)。anum的一个优点是它还可以处理小数点(逗号)和科学记数法

您是否使用空格来获取输入?当我使用制表符输入数字列时,它们自然是左对齐的。@inTide,yes空格(我在缓冲区中不使用制表符)请查看我的问题。(顺便说一句,我有对齐和列表插件,但不知道如何解决我的问题)。是的,我同意。DrChip(他为什么称自己为Dr.chip?;))创造了好东西,但大多数东西都很难找到,很难理解,也不总是可以使用。align插件很不错,但Tabularize插件(yoda提到)要高得多。你的插件很棒。它可以做很多事情,但比表格更难理解。我发现的另一个优点是,不能使用menu.vim或vimrc中的映射将它们放在命令行p.e中。还有。。。。该插件使用了大量以不同字母开头的地图。我希望它们更容易记住(或由用户更改)。我也不喜欢DrChip的菜单。(更糟糕的是……我以前已经试过了,唯一不知道的是我必须选择linewise。)
:{range}s/ \+/ /g
:Tab / /r1