2013-08-11 2 views
0

Скажем, у меня есть PHP код, который выглядит как этотКак выровнять элементы списка в Vim

$values = array(
    'foo' => 'bar', 
    'longfoo' => 'otherbar', 
    'baz' => 'foobar, 
); 

Есть ли способ в Vim, чтобы Allign значения массива и форматировать его, как следующий?

$values = array(
    'foo'  => 'bar', 
    'longfoo' => 'otherbar', 
    'baz'  => 'foobar, 
); 

Незначительное примечание: я использую пробелы, а не вкладки для отступов.

+0

Знайте, что это приводит к переформатированию массивов при добавлении/удалении ключей, ведущих к бессмысленным пробелам, разным в commits (при условии, что вы используете vcs). – AD7six

+0

Да, я знаю об этом. Тем не менее, я думаю, что улучшенная читаемость стоит этой цены. –

ответ

6

Плагин tabular сделает так просто. После установки, что вы могли бы просто запустить

:Tabularize /=>/ 

время на любой из линий, которые должны быть выровнены. Если вы часто используете тот же шаблон, вы даже можете настроить сопоставление с , что еще быстрее.

+0

Уход, спасибо. Вы также знаете, есть ли способ сделать табличное выравнивание текста на tabstops? Например. если для параметра 'tabstop' установлено значение 4, как я могу сделать' => 'для выравнивания на одном из столбцов 4, 8, 12, 16, ... и т. д.? –

3

Tabularize звучит как способ, но я также упомянул утилиту Unix column, которая довольно изящна и больше людей должны знать.
Unix-специфический, очевидно. (На OpenSUSE 12.3, это в пакете Util-Linux, вероятно, отличается от других дистрибутивов.)
Чтобы вызвать его в Vim, визуально выбрать строки, которые вы хотите выровнять, затем
:!column -t
Так с визуальным диапазоном, VIM заполняет для вас, когда вы нажмете : с линиями выбран, вы получите:
:'<,'>!column -t
(по умолчанию он разделяет на пробелы, но вы можете изменить это с помощью опции -s <separator>.)
это выравнивает вещи таким образом, что каждый столбец просто достаточно долго для его самого длинного члена.

2

Предлагаю плагин Align. У него есть очень удобные ярлыки, например, \tsp может позволить вам быстро выравнивать столбцы по пробелам.

Смежные вопросы