You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让PowerShell自动补全不插入函数的左括号?

解决PowerShell补全.NET方法名时自动插入左括号的问题

当补全.NET静态方法名(比如输入[Io.File]::A按Tab)时,PowerShell默认会自动添加左括号,要禁用这个行为,有两种方案:

方案一:全局禁用括号自动补全

这个方法会关闭所有场景下的括号自动补全(包括手动输入(时自动补全)),设置简单:

临时生效(当前会话)

运行以下命令:

Set-PSReadLineOption -AutoCloseBrackets $false

永久生效

  1. 查看PowerShell配置文件路径:
$PROFILE
  1. 用文本编辑器打开该文件,添加上述命令,保存后重启PowerShell即可。

方案二:仅针对.NET方法补全禁用左括号

如果想保留其他括号的自动补全,只修改.NET方法的补全行为,可以自定义参数补全器:

将以下代码添加到PowerShell配置文件中:

Register-ArgumentCompleter -Native -CommandName '*' -ScriptBlock {
    param($wordToComplete, $commandAst, $cursorPosition)
    $completions = [System.Management.Automation.CompletionResult[]]@()
    $originalCompletions = [Microsoft.PowerShell.PSConsoleReadLine]::GetCompletions($wordToComplete, $commandAst, $cursorPosition)
    foreach ($completion in $originalCompletions) {
        if ($completion.CompletionText -match '::\w+\($') {
            $newText = $completion.CompletionText -replace '\($', ''
            $completions += [System.Management.Automation.CompletionResult]::new($newText, $newText, $completion.ResultType, $completion.ToolTip)
        } else {
            $completions += $completion
        }
    }
    return $completions
}

保存后重启PowerShell,补全.NET方法名时就不会自动插入左括号了。

内容的提问来源于stack exchange,提问作者blueorchid3

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 13:27:53