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

如何禁用VS Code Java扩展自动补全时自动添加左括号?

关于VSCode Red Hat Java扩展自动补全添加括号的配置问题

在VSCode中使用Red Hat Java语言支持扩展时,输入new ArrayList(并触发自动补全后,会得到new ArrayList<>((,扩展自动添加的括号严重干扰正常输入流程。此外调用静态方法时,补全还会自动添加括号和分号(比如输入f触发补全foo()后,会得到foo();_),这种行为和Python、C等语言的补全逻辑不一致,希望禁用自动添加括号/分号的特性,同时保留基础的自动补全功能。

问题场景细节

典型Java补全场景

以ArrayList为例,补全操作流程如下(下划线_代表光标位置):

输入按键插入文本
nn_
ene_
wnew_
<space>new _
Anew A_
rnew Ar_
rnew Arr_
anew Arra_
ynew Array_
Lnew ArrayL_
<tab>new ArrayList<>_()
(new ArrayList<>((_)

可见补全后扩展自动添加了括号,导致手动输入(时出现重复括号。

Python/C语言补全对比场景

以Python的ASTNode为例,补全逻辑与Java不同:

输入按键插入文本
AA_
SAS_
TAST_
NASTN_
<tab>ASTNode_
(ASTNode(_

补全后仅插入类名,不会自动添加括号,需手动输入(来开启参数输入。

构造函数补全的额外差异

针对含参构造函数Class1和无参构造函数Class0,补全后的光标位置存在不一致:

  • 补全Class1时,光标会定位到参数占位符位置
  • 补全Class0时,光标会定位到括号外

配置解决方案

可以通过VSCode的设置调整Red Hat Java扩展的补全行为,实现和Python/C一致的逻辑:

  1. 打开VSCode设置(快捷键Ctrl+,),切换到JSON格式(点击右上角的{}图标)
  2. 添加以下配置项:
// 禁用方法/构造函数参数自动猜测(即不自动添加括号和参数占位符)
"java.completion.guessMethodArguments": false,
// 禁用代码片段式补全(避免自动添加分号、括号等额外内容)
"java.completion.insertSnippet.enabled": false

如果仅需针对构造函数调整,可单独添加:

"java.completion.constructorGuessArguments": false

配置完成后,Java的自动补全行为会与Python/C保持一致:补全类名或方法名后仅插入名称,不会自动添加括号、分号,需手动输入(来触发参数提示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 04:10:29