Powershell 选项卡扩展函数采用 2 个参数,即到目前为止的行和“当前单词”。该函数应返回当前单词的替换。
从实验来看,在我看来,当前单词没有任何引号传递给函数,并且返回的单词被插入到与原始单词相同的行中。所以,例如,如果我输入
PS> foo "bar"<TAB>
我将把字符串bar
传递给我的标签扩展函数(不带引号),我的返回值将放回双引号中。
在某些情况下,此行为会导致问题。例如,文件名的部分完成,我可能会在其中键入C:\Pro<TAB>
get "C:\Program Files"
,但随后我需要删除最后的引号以进一步扩展(例如,通过键入\Micro
然后再次按 TAB.
此外,返回包含引号的扩展值可能非常混乱:
PS> function TabExpansion($line, $lastword) {
PS> "looks like '" + $lastword + "' when quoted"
PS> }
PS>
PS> Silly 'example'<TAB>
这会导致报价不平衡。
有没有办法避免或解决这种行为?
保罗。