Бывает, что сталкиваешься с такой вот табличкой:
Есть разные утилиты для выравнивания таблиц. Но обычно можно обойтись и без них — ведь наш файл и так открыт в 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.
Если у вас есть предложения, как сделать этот процесс ещё короче, обязательно дайте знать в комментариях.