The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Duplicate tip

This tip is very similar to the following:

These tips need to be merged – see the merge guidelines.

Tip 893 Printable Monobook Previous Next

created 2005 · complexity intermediate · author Michael Fitz · version 5.7

Suppose you have some numbers in an ugly format:

```123
2.5678
-13.44
100.5
+47.11
```

You want to have them nice aligned with 5 decimals written out.

First, we align any line left to the beginning:

```:%s§^\s*§§

123
2.5678
-13.44
100.5
+47.11
```

Now we split at the decimal-point (if any) and shift the fractional part wide to the right and add five '0' at the end (because we want 5 fractional digts).

```:%s§\([-+]\?\d\+\)\.\?\(\d*\$\)§\1                        !\200000§

123                        !00000
2                        !567800000
-13                        !4400000
100                        !500000
+47                        !1100000
```

This tricky substitue aligns the fractional part at column 15:

```:%s§\%15c\s*!§!§

123           !00000
2             !567800000
-13           !4400000
100           !500000
+47           !1100000
```

Now we shift the integral part back by exchanging it with leading spaces (and replacing '!' by decimal-point):

```:%s§\(^\S*\)\(\s*\)!§\2\1.§

123.00000
2.567800000
-13.4400000
100.500000
+47.1100000
```

Now we truncate each fractional part to 5 digits:

```:%s§\%21c\d*§§

123.00000
2.56780
-13.44000
100.50000
+47.11000
```

Finally we add a '+'-sign where it's missing:

```:%s§\s\(\d\)§+\1§

+123.00000
+2.56780
-13.44000
+100.50000
+47.11000
```

I usually use the (german) paragraph-sign '§' to surround the substitute-patterns, because this letter is very seldom used in any IT-related context.

### Using AlignMaps

See VimTip139 for AlignMaps which provides the `\anum` (actually <Leader>anum) to do something similar:

```123
2.5678
-13.44
100.5
+47.11
```

It doesn't append the zeros, just does a numeric alignment. `\anum` also handles the use of commas instead of periods, European style.

### Using Tabular

A column of numbers can be aligned with the Tabular plugin as well:

```1231
342.234
23.322
35252
23.232355
0.555421231```
```:'<,'>Tabularize /\./r0l0l0
```
``` 1231
342.234
23.322
35252
23.232355
0.555421231```

Any symbol may be used instead of the period and more complex patterns are also possible.