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

VSCode扩展开发:provideInlineCompletionItems无法使用求助

问题排查与修复

你的代码存在两处关键问题,导致内联补全无法生效:

1. Range范围参数顺序错误

vscode.Range的构造规则是起始位置在前,结束位置在后,你当前写的new vscode.Range(position.translate(0, txt.length), position)把「当前位置后移txt长度的位置」设为起始点,当前位置设为结束点,生成了反向的无效范围(起始位置大于结束位置),VSCode会直接忽略这类补全项。

如果只是需要在当前光标位置插入hi,不需要替换已有内容,可以直接省略range属性;若要替换光标后的内容,再调整range的位置顺序。

2. 补全项结构不规范

虽然VSCode兼容普通对象模拟InlineCompletionItem,但更稳妥的方式是直接实例化官方提供的vscode.InlineCompletionItem类。同时text属性已被废弃,建议使用insertText(实际插入的文本),若显示文本与插入文本一致,可直接传入文本内容作为构造参数。

修复后的代码

const vscode = require('vscode');

function activate(context) {
    const provider = {
        provideInlineCompletionItems: async (document, position, context, token) => {
            const txt = 'hi';
            // 实例化标准InlineCompletionItem,省略range则在当前位置插入补全内容
            return [new vscode.InlineCompletionItem(txt)];
        }
    };
    vscode.languages.registerInlineCompletionItemProvider({ pattern: "**" }, provider);
}

function deactivate() {}

module.exports = { activate, deactivate };

额外验证步骤

  • 确认扩展已激活:按F1输入Extensions: Show Active Extensions,检查你的扩展是否在列表中。
  • 触发补全逻辑:在空白文件中输入任意字符,内联补全默认会在用户输入时自动触发。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 00:01:09