The tabular plugin

The tabular vim plugin can be used for some cool text manipulation. Say we have some command output we want to make more readable:

~/forks/tektoncd/pipeline/docs
❯ grep -rHin 'weight:'
variables.md:4:weight: 15
taskruns.md:4:weight: 2
labels.md:4:weight: 10
metrics.md:4:weight: 14
pipelineruns.md:4:weight: 4
runs.md:4:weight: 2
resources.md:4:weight: 6
workspaces.md:4:weight: 5
install.md:4:weight: 1
migrating-v1alpha1-to-v1beta1.md:4:weight: 18
deprecations.md:4:weight: 19
auth.md:4:weight: 7
tekton-controller-performance-configuration.md:4:weight: 16
conditions.md:4:weight: 11
podtemplates.md:4:weight: 12
events.md:4:weight: 2
container-contract.md:4:weight: 8
tekton-bundle-contracts.md:4:weight: 8
tasks.md:4:weight: 1
migrating-from-knative-build.md:4:weight: 17
pipelines.md:4:weight: 3
logs.md:4:weight: 9
enabling-ha.md:4:weight: 13

If we put it in a vim buffer, it's as easy as calling:

:Tabularize /:
variables.md                                   : 4 : weight : 15
taskruns.md                                    : 4 : weight : 2
labels.md                                      : 4 : weight : 10
metrics.md                                     : 4 : weight : 14
pipelineruns.md                                : 4 : weight : 4
runs.md                                        : 4 : weight : 2
resources.md                                   : 4 : weight : 6
workspaces.md                                  : 4 : weight : 5
install.md                                     : 4 : weight : 1
migrating-v1alpha1-to-v1beta1.md               : 4 : weight : 18
deprecations.md                                : 4 : weight : 19
auth.md                                        : 4 : weight : 7
tekton-controller-performance-configuration.md : 4 : weight : 16
conditions.md                                  : 4 : weight : 11
podtemplates.md                                : 4 : weight : 12
events.md                                      : 4 : weight : 2
container-contract.md                          : 4 : weight : 8
tekton-bundle-contracts.md                     : 4 : weight : 8
tasks.md                                       : 4 : weight : 1
migrating-from-knative-build.md                : 4 : weight : 17
pipelines.md                                   : 4 : weight : 3
logs.md                                        : 4 : weight : 9
enabling-ha.md                                 : 4 : weight : 13

Bonus: buffer filtering

After some block selection editing,

variables.md                                    weight: 15
taskruns.md                                     weight: 2
labels.md                                       weight: 10
metrics.md                                      weight: 14
pipelineruns.md                                 weight: 4
runs.md                                         weight: 2
resources.md                                    weight: 6
workspaces.md                                   weight: 5
install.md                                      weight: 1
migrating-v1alpha1-to-v1beta1.md                weight: 18
deprecations.md                                 weight: 19
auth.md                                         weight: 7
tekton-controller-performance-configuration.md  weight: 16
conditions.md                                   weight: 11
podtemplates.md                                 weight: 12
events.md                                       weight: 2
container-contract.md                           weight: 8
tekton-bundle-contracts.md                      weight: 8
tasks.md                                        weight: 1
migrating-from-knative-build.md                 weight: 17
pipelines.md                                    weight: 3
logs.md                                         weight: 9
enabling-ha.md                                  weight: 13

we can use the external sort program to sort the entries based on their respective weights:

%!sort -n -t ':' -k2
install.md                                      weight: 1
tasks.md                                        weight: 1
events.md                                       weight: 2
runs.md                                         weight: 2
taskruns.md                                     weight: 2
pipelines.md                                    weight: 3
pipelineruns.md                                 weight: 4
workspaces.md                                   weight: 5
resources.md                                    weight: 6
auth.md                                         weight: 7
container-contract.md                           weight: 8
tekton-bundle-contracts.md                      weight: 8
logs.md                                         weight: 9
labels.md                                       weight: 10
conditions.md                                   weight: 11
podtemplates.md                                 weight: 12
enabling-ha.md                                  weight: 13
metrics.md                                      weight: 14
variables.md                                    weight: 15
tekton-controller-performance-configuration.md  weight: 16
migrating-from-knative-build.md                 weight: 17
migrating-v1alpha1-to-v1beta1.md                weight: 18
deprecations.md                                 weight: 19

Source: tabular

Last updated