右对齐由空格分隔的特定列

时间:2012-01-11 09:10:42

标签: vim alignment tabular

示例:

Monte Bianco 4.807 France/Italy
Monte Rosa 4.634 Italy/Switzerland
Dom 4.545 Switzerland/Italy
Weisshorn 4.505 Switzerland
Cervino (Matterhorn) 4.478 Italy/Switzerland
Suphan Dagi 4.434 Turkey   

我正在尝试创建2个新菜单选项(在menu.vim中):

  • 右对齐第1列
  • 右上角对齐

我无法找到如何仅对齐表格中间的第一列,仅对齐最后一列或特定列。

Monte Bianco 4.807              France/Italy
Monte Rosa 4.634           Italy/Switzerland
Dom 4.545                  Switzerland/Italy
Weisshorn 4.505                  Switzerland
Cervino (Matterhorn) 4.478 Italy/Switzerland
Suphan Dagi 4.434                     Turkey   

我知道我可以使用它来对齐最新专栏

Tabular /^\(.\{-}\s\{1,}\)\{1,}/l0l0r0 

但我想知道的是如何在行尾之前找到最新的对齐参数
(例如上面的例子“Spaces”)并在此之后对齐所有文本(不计算列数)。

这可能吗?

我根本不知道如何仅对齐第一列或特定列。

1 个答案:

答案 0 :(得分:1)

为了正确对齐第一个以空格分隔的列,剩下的就是其余部分 它们对齐到左侧,使用以下:Tabular命令,

:Tab/^\S*\s\+\zs/r1l0l0

同样,要右对齐最后一列,请运行

:Tab/\s\@<!\ze\s\+\S*$/l1l0r0

如果列分隔符必须包含至少两个空格字符,请修改 命令如下。

:Tab/\(\s\{2,}.*\)\@<!\s\{2,}\zs/r1l0l0

:Tab/\s\@<!\ze\s\{2,}\(.*\s\{2,}\)\@!/l1l0r0