Бывает, что сталкиваешься с такой вот табличкой:
Есть разные утилиты для выравнивания таблиц. Но обычно можно обойтись и без них — ведь наш файл и так открыт в vim, который умеет почти всё. Процесс выравнивания можно посмотреть на gif-анимации или mp4-видео.
Идея такая:
Поставить между столбцами достаточно пробелов, чтобы самый левый элемент из
второго столбца был правее самого правого элемента из первого столбца. В
рассматриваемом *.tex формате столбцы разделены знаком &, поэтому и
используется замена вида :%s/&/ &/g. Количество пробелов зависит
от длины ячеек таблицы.
Выделить пустой столбец в режиме блочного выделения по Ctrl +
V. Затем сдвинуть всё правее выделения влево <. Повторить
необходимое количество раз, нажав точку .. Так на видео и анимации
выравнивается первый столбец. Это не самый быстрый вариант, а показан он для
того, чтобы было понятнее, что происходит.
После выделения пустого столбца вместо <....... можно сделать 20<. Так
выравниваются остальные столбцы на видео и анимации.
Около 5 лет назад я стал изучать vim, узнав, что он умеет работать со столбцами. До сих пор это одна из моих любимых и часто используемых способностей vim. Vim восхищает!
Линуксовая утилита column поставляется в стандартном комплекте большинства
дистрибутивов. Например, команда
column -t filename
выровняет колонки, используя пробел в качестве разделителя между столбцами. В
нашем случае разделителем является амперсанд &. С помощью флага -s утилите
column можно указать разделитель:
column -t -s '&' filename
Получится качественное выравнивание, но сам знак разделителя исчезнет. Я не
нашёл, как заставить column сохранять разделитель, поэтому решил сделать так:
column.Осуществить это для диапазона строк (например, с 3 по 23) можно следующим образом (спасибо анонимному замечанию в комментариях):
:3,23s:&:__&:g :3,23!column -t -s '__'
Первая команда добавит перед каждым знаком & два нижних подчёркивания __.
Вторая команда вызовет внешнюю программу column с указанием __ в качестве
разделителя.
Для записи mp4-видео использовал программу peek. Очень проста и удобна в
использовании. Она позволяет писать и gif, но у меня в анимации получались
небольшие зависания, поэтому пользовался менее удобной консольной утилитой
byzanz. Для показа нажимаемых клавиш использовал
screenkey.
Если у вас есть предложения, как сделать этот процесс ещё короче, обязательно дайте знать в комментариях.