如何通过VSCode扩展API获取活动终端中选中的文本
获取VSCode终端中选中的文本内容
VSCode API并未直接提供获取终端选中文本的方法,但可以通过触发内置复制命令+读取剪贴板的方式间接实现,以下是具体方案:
实现思路
终端选中的文本可通过VSCode内置的workbench.action.terminal.copySelection命令复制到剪贴板,再通过vscode.env.clipboard.readText()读取剪贴板内容,从而获取选中的文本。
代码示例
import * as vscode from 'vscode'; async function getTerminalSelectedText(): Promise<string | undefined> { const activeTerminal = vscode.window.activeTerminal; if (!activeTerminal) { return undefined; } // 触发终端选中内容复制命令 await vscode.commands.executeCommand('workbench.action.terminal.copySelection'); // 读取剪贴板中的选中文本 const selectedText = await vscode.env.clipboard.readText(); return selectedText; } // 调用示例 getTerminalSelectedText().then(selectedText => { if (selectedText) { console.log('终端选中文本:', selectedText); } else { console.log('未激活终端或无选中内容'); } });
注意事项
- 该方案依赖VSCode默认的终端复制行为,若用户修改了
workbench.action.terminal.copySelection的绑定或禁用了复制功能,可能无法正常工作。 - 如果终端无选中内容,
readText()会返回剪贴板的历史内容,建议在调用前提示用户确保终端内有选中的文本。 - 跨平台兼容:该方法无需依赖系统特定命令,在Windows、macOS、Linux环境下均可正常使用。
内容的提问来源于stack exchange,提问作者user1637487
相关产品推荐
相关产品推荐

