Есть ли что-то, что может автоматически выравнивать символы знака равенства (=) в текстовых файлах?

Нам нужно выровнять символ = в наших файлах terraform с самым длинным именем переменной. Есть ли инструмент, который может сделать это автоматически?

Например

thomas = "train"
harrypotter = "wizard"
roger = "rabbit"

...станет...

thomas      = "train"
harrypotter = "wizard"
roger       = "rabbit"

Бонусные баллы: в основном я использую PyCharm, поэтому, если бы это был плагин для PyCharm, я был бы вне себя от радости.

Ответы (3)

Smart Align — это плагин PyCharm, который делает именно это. Только,

Windows и Linux

  1. Нажмите в файл
  2. Ctrl + а
  3. Alt + ⇧ + -

Мак

  1. Нажмите в файл
  2. ⌘ + а
  3. ⌥ + ⇧ + -

Сделанный

Просто установите плагин Terraform and HCL от Jetbrains. Он также поддерживает подсветку синтаксиса и многие другие функции.

После того, как вы его установили, откройте файл и нажмите «Ctrl+Alt+L», чтобы переформатировать код.

Возможно, проверьте настройки «Выровнять свойства» в «Настройки» -> «Редактор» -> «Стиль кода» -> «Конфигурация Terraform» и там, на последней вкладке справа, под названием «Другое» (см. Скриншот). Должно быть «На равных», но это настройка по умолчанию.

введите описание изображения здесь

Как заставить этот плагин выровнять все логические блоки одинаково? Насколько я вижу, он только выравнивает каждый логический блок отдельно.
@James Я не думаю, что плагин может это сделать. Форматирование применяется к блокам по отдельности, а не одинаково ко всему файлу. Ваш первоначальный вопрос не подразумевал, что это запрошенная функция, но если вам это нравится, то Smart align может быть лучшим решением для вас :)
Спасибо, и извините за упущение. Я не думаю, что смогу спросить, знаете ли вы, как добавить смарт-алину в конфигурацию предварительной фиксации, не так ли?

Как обычно - утилиты оболочки Unix спешат на помощь! В частности, столбец :

$ column -t
thomas = "train"
harrypotter = "wizard"
roger = "rabbit"

thomas         = "train"
harrypotter    = "wizard"
roger          = "rabbit"

И, конечно, это работает и с файлами:

$ cat my_file.txt
thomas = "train"
harrypotter = "wizard"
roger = "rabbit"
$ column -t my_file.txt
thomas         = "train"
harrypotter    = "wizard"
roger          = "rabbit"
Красиво и просто! Ваш ответ может выиграть от добавления примера, показывающего, как обрабатывать ввод из файла. В любом случае, проголосовал!
@RockPaperLz-MaskitorCasket: я думал, что это очевидно, но ладно.
Да, это очевидно для тех из нас, кто знает, насколько это просто. :)