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

VSCode扩展:CompletionItemProvider输入|时无补全结果问题

问题解决:VSCode扩展CompletionItemProvider无补全内容显示

你的问题出在VSCode的补全过滤机制上:当输入|触发补全后,VSCode会默认用补全项的label和当前输入的前缀(也就是|)做匹配,而你定义的Sample1、Sample2和|完全不匹配,所以被过滤掉了,最终显示“No suggestions”。另外代码里的变量未声明,属于不良编码习惯,也需要修正。

修改后的代码如下:

context.subscriptions.push(vscode.languages.registerCompletionItemProvider(
  '*', 
  {
    provideCompletionItems(document, position, token) {
      // 声明局部变量,避免全局污染
      const item1 = new vscode.CompletionItem("Sample1");
      const item2 = new vscode.CompletionItem("Sample2");
      
      // 设置filterText为空字符串,跳过VSCode的默认前缀匹配过滤
      item1.filterText = '';
      item2.filterText = '';
      
      // 可选:显式设置插入内容(默认会使用label,此处可省略,但显式设置更清晰)
      item1.insertText = "Sample1";
      item2.insertText = "Sample2";
      
      // 可选:设置补全项的类型图标,提升视觉体验
      item1.kind = vscode.CompletionItemKind.Text;
      item2.kind = vscode.CompletionItemKind.Text;
      
      return [item1, item2];
    }
  },
  '|' // 触发字符
));

关键修改说明:

  • filterText = '':强制VSCode不对补全项做前缀匹配,确保输入|后所有定义的补全项都能显示出来。
  • 变量声明:用const声明局部变量,避免全局变量泄漏的风险。
  • kind设置:给补全项添加对应类型的图标,让用户能快速识别补全项的类型(可选,但推荐)。

现在重新加载扩展,输入|后就能看到Sample1和Sample2的补全选项了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 06:40:46