Функции расширения вкладки Powershell принимают 2 параметра: строку и текущее слово.Функция должна возвращать замену для текущего слова.
Из эксперимента мне кажется, что текущее слово передается в функцию без кавычек, а возвращенное слово вставляется в строку с той же цитатойкак оригинал.Так, например, если я наберу
PS> foo "bar"<TAB>
, я получу строку bar
, переданную в функцию расширения моей вкладки (без кавычек), и мое возвращенное значение будет помещено обратно в строку в двойных кавычках.
Такое поведение вызывает проблемы в определенных случаях.Например, частичное завершение имен файлов, где я мог бы набрать C:\Pro<TAB>
, чтобы получить "C:\Program Files"
, но затем мне нужно удалить окончательную кавычку для дальнейшего расширения (скажем, набрав \Micro
, а затем снова нажав TAB.
Кроме того, возврат расширенного значения, содержащего кавычки, может быть очень запутанным:
PS> function TabExpansion($line, $lastword) {
PS> "looks like '" + $lastword + "' when quoted"
PS> }
PS>
PS> Silly 'example'<TAB>
Это приводит к несбалансированным кавычкам.
Есть ли способ избежать или обойти это поведение?
Пол.