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

修改VSCode扩展中provideCompletionItems补全功能的触发命令

VSCode扩展自定义命令触发补全功能修改方案

核心修改思路

让原有补全提供者仅响应自定义命令发起的补全请求,同时注册自定义命令的执行逻辑,主动触发带私有标识的补全调用,和默认的Trigger Suggest命令完全隔离。

完整修改后的代码

扩展入口代码(extension.ts)

import * as vscode from 'vscode';

// 私有触发标记,选用正常编码场景下几乎不会输入的特殊字符即可
const PRIVATE_TRIGGER_MARK = '∑';

export function activate(context: vscode.ExtensionContext) {
    const command = 'getairesponse';    

    const supportedLanguages = ['c','cpp','csharp','java','javascript', 'php', 'python', 'SQL', 'HTML', 'plaintext'];

    // 注册补全提供者,仅响应私有标记触发的补全请求
    const completionProvider = vscode.languages.registerCompletionItemProvider(supportedLanguages, {
        async provideCompletionItems(document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken, context: vscode.CompletionContext) {
            // 非自定义命令触发的补全请求直接跳过
            if (context.triggerCharacter !== PRIVATE_TRIGGER_MARK) {
                return undefined;
            }
            const editor = vscode.window.activeTextEditor;
            if (!editor) {
                return undefined;
            }
            const cursorPosition = editor.selection.active;
            const inputContent = editor.document.getText(new vscode.Range(0, 0, cursorPosition.line, cursorPosition.character));
            const completionContent = await getOutput(inputContent);
            return [new vscode.CompletionItem(completionContent)];
        }
    });

    // 注册package.json中声明的自定义命令
    const aiCompletionCommand = vscode.commands.registerCommand(command, async () => {
        const editor = vscode.window.activeTextEditor;
        if (!editor) {
            return;
        }
        // 主动触发补全,传入私有触发标记,仅匹配自己的补全提供者
        await vscode.commands.executeCommand('editor.action.triggerSuggest', {
            triggerCharacter: PRIVATE_TRIGGER_MARK
        });
    });

    context.subscriptions.push(completionProvider, aiCompletionCommand);
} 

可选:配置快捷键(package.json)

如果需要给自定义命令绑定触发快捷键,可在contributes字段下新增快捷键配置:

"contributes": {
    "commands": [
        {
            "command": "getairesponse",
            "title": "Get AI Response"
        }
    ],
    "keybindings": [
        {
            "command": "getairesponse",
            "key": "ctrl+shift+.",
            "mac": "cmd+shift+.",
            "when": "editorTextFocus"
        }
    ]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:18:02