Код PowerShell Tidy или Reformat?
Возможный дубликат:
Есть ли форматировщик кода PowerShell/красивый принтер?
Кто-нибудь знает инструмент, который вы можете использовать для переформатирования/выбора кода Powershell: -
Например: -
if ($c -eq "Cat")
{
$a="Bubble"
}
else
{
$a="Trouble"
}
Write-Host $a
To: -
if ($c -eq "Cat")
{
$a="Bubble"
}
else
{
$a="Trouble"
}
Write-Host $a
т.е. tabbing If Statementments и т.д., я знаю, что они были инструментами для этого с VB, но я еще не видел никого для Powershell?
Ответы
Ответ 1
Быстрое обновление - теперь это на GitHub: https://github.com/DTW-DanWard/PowerShell-Beautifier
В PowerShell я написал мощный очиститель принтера/кода PowerShell. Он очищает пустое пространство, группы кода отступов, заменяет псевдонимы командами, исправляет обсадку на командах, параметрах, типах и т.д. Вы можете использовать его для форматирования файла на месте или для чтения исходного файла и вывода результата в другом файле.
Ответ 2
Быстрый каракули, который работает с вашим кодом:
$tab = ' '
$indent = 0
switch -regex -file ./x.ps1 {
'{\s*$' { $tab * $indent++ + $_ }
'^\s*}' { $tab * --$indent + $_ }
'^\s*$' { "" }
'[^{}]' { $tab * $indent + $_ }
}
Нет гарантий надежности. Это может сделать странные вещи с кодом, который сильно использует однострочные блоки или закрывает блок не в отдельной строке. Но кроме этого это может сработать.
Ответ 3
Быстрый тест с Notepad ++ указывает, что макрос TextFX-> TextFX Edit -> Reindent C++
работает по вашему желанию. Не знаю, насколько хорошо он обрабатывает более сложные образцы.
Также обратите внимание, что у NP ++ есть макрос форматирования языка для PowerShell. Несколько неожиданно, редактор PowerGui Script, похоже, не имеет аккуратной функции.
Ответ 4
Если вы используете gvim (и плагины powershell), вы можете легко отступать всю строку своего кода, когда захотите, набрав (когда вы в командном режиме):
gg=G
Ответ 5
Возможно, будет сложно найти версию Windows, но проверьте http://www.gnu.org/software/indent/. Вероятно, он отлично справляется с кодом powershell.