- GH Copilot
- Copilot Chat (Editor/Github.com)
- Copilot in the CLI
- Copilot Enterprise (Github.com 聊天/PR 摘要)
- MS Copilot
- Bing Chat -> Copilot
- Cortana -> Copilot
- Office/Windows/iOS/Android
- 状态菜单:右下角状态栏中,可以配置对当前文件类型的 Copilot 禁用/启用状态(例如 Markdown 文件默认禁用,你可能想要启用它)
- 聊天:三种形式为内联提示/会话弹层/侧边栏会话,不同形式支持的指令不一样
- 闪光图标:点击触发内联提示
- 拖放会话:侧边栏会话可以拖放到底栏或右侧栏
- ctrl + enter: 多版本提示 vs 即时单次提示(ghost text)
- opt + [ 或 opt + ]: 下一个版本提示/上一个版本提示
- tab: 全部完成
- cmd + right arrow: 部分完成
- cmd + i: 内联提示,选区指令
- shift + cmd + i: 会话弹层
// 光标停留在代码末尾,会出现影子文本(快捷键作用于所有影子文本,包括注释/句子,不仅仅是代码)
// 按 tab 全部采用,按 cmd + right arrow 部分采用(按词)
// 按 opt + ] or opt + [ 循环下一个版本/上一个版本
const memo = (fn, cache = new Map()) =>
// 选中下面一行,按 ctrl + enter 可以生成多个版本的实现
const memo = (fn, cache = new Map()) => {}mindmap
root{{提示}}
新建
自动完成
头脑风暴
迭代
答疑
重构
测试
/explain解释选择的代码/tests为选择的代码生成单元测试/fix针对所选代码中的问题提出修复建议/doc为所选代码生成文档/new创建新工作区的脚手架代码/newNotebook创建 Jupyter Notebook/api询问有关 VS Code 扩展开发的问题/help帮助(显示所有可用指令)/clear开启新对话
限制对话场景或主题
@vscodeVS Code 本身相关问题@workspace工作区相关问题@terminal终端相关问题
#selection切换上下文,相当于回到内联对话#editor限制在所有打开的文件中#file指定某个具体的文件(需要在侧边栏会话中使用)#terminalLastCommand最后一次在终端中运行的命令#terminalSelection终端选中的文本
@x /y #z:
@workspace /tests #file:foo.js@workspace /fix #terminalSelection
- 注释生成代码、函数名生成代码:越具体越有效
- 代码生成文档:
generate markdown doc - Q&A 模式:行内结果返回快于会话模式,可自定义角色
- 重构:例如语言类型转换(
change to ts), 结构转换(change to fc,没错 Copilot 懂 React 黑话)等等 - 数据预处理:例如从 CSV 生成 JSON
- 翻译:由提示翻译句子,或者由 i18n 模板文件批量翻译
- 减少工作区打开的文件数量
比较:
// 如何居中元素?// q: FlatList 如何向前加载?// Roles: copilot
// 20 年经验的前端开发专家
// Role: me
// 初入门的开发者
//
// me: 怎么迭代 NodeList?终端版本刚刚进入 GA 阶段,尽管在 VSCode 中终端也得到相同的提示结果,但脱离编辑器使用更为方便。
安装:
brew install gh
gh auth login
gh extension install github/gh-copilot
gh copilot --help
# 可选,配置别名简化使用
echo 'eval "$(gh copilot alias -- zsh)"' >> ~/.zshrc
ghcs # = gh copilot suggest
ghce # = gh copilot explain
# 更进一步简化
echo 'alias ??="ghcs"' >> ~/.zshrc示例:
ghcs "提取主分支的 src/Toolbar.tsx"
ghcs "计算 src 目录所有文件的行数"
?? "转换当前目录所有图片的尺寸,宽度为 200"
?? "mp4 转 wave, 24K 采样率,单通道"- change to fc (function component):可能造成代码丢失
经验:
- 先写测试代码
- 越少的转换步骤越好