copilot使用指导
其实在上学期(2022年9月)我就成功申请了github学生认证, 拿到了免费使用copilot的机会. 但是那时copilot还不支持在代理服务器上使用, 于是体验AI编程的想法被搁置. 昨天心血来潮尝试了一下, 发现可以用代理服务器连接copilot了, 于是迫不及待开始学习体验
快捷键
Copilot 也提供了一些快捷键,可以很方便地使用。
- 接受建议:
Tab
- 拒绝建议:
Esc
- 打开Copilot:
Ctrl + Enter
(会打开一个单独的面板,展示10个建议) - 下一条建议:
Alt/Option + ]
- 上一条建议:
Alt/Option + [
- 触发行内Copilot:
Alt/Option + \
(copilot还没有给出建议或者建议被拒绝了,希望手工触发它提供建议)
HTTP代理
有些用户(几乎所有中国大陆用户)可能会遇到连接不上的问题, 报错信息 GitHub Copilot could not connect to server. Extension activation failed: "connect ETIMEDOUT xxx.xxx.xxx:443"
对于中国大陆用户, 首先你要有一个代理软件, 在设置中找得到代理地址和端口. 比如 127.0.0.1:7890
然后打开VSCode的设置, 搜索 http.proxy
, 输入 127.0.0.1:7890
(你的代理地址和端口)
然后就可以啦
copilot使用场景
解决算法问题
你可以先写出函数头, 然后在注释中解释函数的作用, 传入的参数和返回的参数, 然后copilot可以自动帮你生成代码
# 使用heap sort对数组排序 (自己写的)# 1. 将数组转换为最大堆# 2. 将最大堆的根节点与最后一个节点交换# 3. 将剩余的节点重新构造为最大堆# 4. 重复2,3步骤直到剩余节点数为1def heap_sort(arr): #(自己写的) n = len(arr) # 将数组转换为最大堆 for i in range(n//2-1, -1, -1): heapify(arr, n, i) # 将最大堆的根节点与最后一个节点交换 # 将剩余的节点重新构造为最大堆 for i in range(n-1, 0, -1): arr[i], arr[0] = arr[0], arr[i] heapify(arr, i, 0) return arrdef heapify(arr, n, i): #(自己写的) # 将数组转换为最大堆 # n: 数组长度 # i: 当前节点索引 largest = i l = 2*i + 1 r = 2*i + 2 if l < n and arr[l] > arr[largest]: largest = l if r < n and arr[r] > arr[largest]: largest = r if largest != i: arr[i], arr[largest] = arr[largest], arr[i] heapify(arr, n, largest)# 编写5组测试数据并进行测试 #(自己写的)test_data = [ [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [10, 9, 8, 7, 6, 5, 4, 3, 2, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]]for data in test_data: print(heap_sort(data))
可以看到, 在这个样例中, 50行代码, 我只写了四行注释, 其他代码和注释还有测试样例都是一直按 Tab
键生成的, 不要太爽
写注释
在行数上面一行写下 /**
, copilot可以自动为你写下注释
# 使用heap sort对数组排序# 1. 将数组转换为最大堆# 2. 将最大堆的根节点与最后一个节点交换# 3. 将剩余的节点重新构造为最大堆# 4. 重复2,3步骤直到剩余节点数为1 /** * @param {number[]} nums * @return {number} */def heap_sort(arr): n = len(arr) # 将数组转换为最大堆 for i in range(n//2-1, -1, -1): heapify(arr, n, i) # 将最大堆的根节点与最后一个节点交换 # 将剩余的节点重新构造为最大堆 for i in range(n-1, 0, -1): arr[i], arr[0] = arr[0], arr[i] heapify(arr, i, 0) return arr /** * @param {number[]} arr * @param {number} n * @param {number} i * @return {number} */ def heapify(arr, n, i): # 将数组转换为最大堆 # n: 数组长度 # i: 当前节点索引 largest = i l = 2*i + 1 r = 2*i + 2 if l < n and arr[l] > arr[largest]: largest = l if r < n and arr[r] > arr[largest]: largest = r if largest != i: arr[i], arr[largest] = arr[largest], arr[i] heapify(arr, n, largest)# 编写5组测试数据并进行测试test_data = [ [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [10, 9, 8, 7, 6, 5, 4, 3, 2, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]]for data in test_data: print(heap_sort(data))
lol 但是python的注释语法貌似不是 /**
Hope you have fun with copilot!
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果