Как ввести табуляцию (отступ) в комментариях в PowerShell ISE?

Это странно.

Я знаю, что вкладка предназначена для завершения команды в PowerShell ISE, и это нормально. Но это также портит панель редактирования.

Сделай это:

  1. Файл > Создать (откроется Untitled1.ps1)

  2. Нажмите табуляцию (все нормально, вы получите отступ)

  3. введите ввод, # (комментарий) и нажмите вкладку после ожидаемого: можно получить отступ после фактического хэша: один заменит хэш на $PSVersionTable или что-то еще, что есть в командной строке в ее истории! (вкладка и Shift-вкладка кружат по ним)

Означает ли это, что никто не использует вкладки в комментариях в сценариях PowerShell или что никто не использует комментарии в сценариях PowerShell?

Могу ли я где-нибудь отключить это поведение?

Кроме того, поведение кажется непоследовательным. Если я, например. введите ##, иногда вкладка не делает завершение (тоже не входит во вкладку).

Могут ли другие воспроизвести это?

скриншот

Система: Windows 8.1 Pro PowerShell ISE


person akauppi    schedule 14.07.2014    source источник
comment
Я могу воспроизвести это. А завершение TAB работает даже в комментариях!   -  person Alireza    schedule 14.07.2014
comment
Но только если я наберу пробел после #   -  person Alireza    schedule 14.07.2014
comment
Спасибо. Так это баг..? Я понятия не имею, зачем кому-то это нужно. В любом случае PowerShell очень раздражает для начала. Это просто еще один маленький камень в багажнике.   -  person akauppi    schedule 14.07.2014
comment
Я считаю это ошибкой. И я думаю, они забыли, что автозаполнение в данном контексте не нужно. Еще одна забавная вещь — поведение TAB. Он не зависит от контекста и просто приносит (на моем ПК) подпапки профиля пользователя!   -  person Alireza    schedule 14.07.2014
comment
Вы всегда можете скопировать/вставить это из блокнота. Представьте, что вы печатаете серьезный комментарий и вам нужен TAB: D   -  person Alireza    schedule 14.07.2014
comment
@Alireza Я не думаю, что это ошибка. Как упоминалось в моем ответе, я считаю это полезным поведением.   -  person Rynant    schedule 14.07.2014
comment
В любом случае это не имеет значения, так как PSISE заменяет вкладку 4 пробелами (или достаточно пробелов, чтобы добраться до ближайшего Column%4 -eq 0 или кратного 4). Если вам нужна табуляция, используйте пробелы. Или сначала перейдите на вкладку, а затем добавьте #. Или вставьте вкладку, как было предложено.   -  person dwarfsoft    schedule 15.07.2014


Ответы (1)


Чтобы ответить на главный вопрос, вы можете ввести Alt+09 (используя цифровую клавиатуру), чтобы ввести <Tab>.

Для описанного поведения я рассматриваю это как ожидаемое поведение. Вы можете получить завершение истории, набрав # и часть предыдущей команды, а затем повторно нажав Tab, циклически прокручивается назад по соответствующей истории. Ввод только # будет соответствовать всей истории, начиная с последней команды.

 Does this mean no-one uses tabs within comments in PowerShell scripts?

Анекдотично, но я никогда не использовал табуляцию в однострочном комментарии, но я часто использую табуляцию в многострочных комментариях, заключенных в квадратные скобки <# и #>. Например.

<#
Functions
    Get-Foo
    Get-Bar

Variables
    $Foo
    $Bar
#>

Function Get-Foo { ...

С многострочными комментариями автодополнение не будет проблемой.

, or that no-one uses comments in PowerShell scripts?

Я не знаю, почему это подразумевается поведением; Я всегда использую один пробел, чтобы начать строчный комментарий.

Я нахожу это полезным при разработке сценария, поскольку я часто пробую выражения в панели команд, если я не уверен в поведении, а затем добавляю выражение в сценарий, если оно работает.

Итак, мой рабочий процесс будет таким:

  1. Ctrl-D, чтобы перейти в панель команд
  2. Введите команду
  3. Если команда сделала то, что я хотел, Ctrl-I, чтобы перейти на панель сценариев
  4. Введите #<Tab>, и строка будет добавлена ​​в скрипт.
person Rynant    schedule 14.07.2014
comment
Спасибо, отличный комментарий, который проливает свет на то, как это работает. Кроме того, я еще не изучил синтаксис многострочных комментариев. Имеет смысл, как ни странно. - person akauppi; 14.07.2014
comment
Когда нет кандидата на автозаполнение, TAB по-прежнему не работает как TAB внутри встроенных комментариев или блочных комментариев. Кажется, ведет себя правильно вне комментариев. - person StingyJack; 24.12.2017