前言
大家好,我是寒暄,今天来聊聊Cursor AI 编程工具。
最近一直在花时间研究怎么开发一款功能完善的终端模拟器。目的是优化 cube-shell
这款ssh远程运维工具,目前这款开源软件功能已经相当完善了,但是美中不足的是终端功能一直不完善。尤其是使用命令进行文件编辑的时候,部分linux 发行版本支持十分有限。
尝试使用qtermwidget组件(C++)
由于ssh 使用的是QT 的python官方绑定 Pyside6进行开发,现在市面上并没有功能比较完善的Pyside6 终端组件可以使用。唯一功能比较完善的QT组件 qtermwidget 开源项目是使用 QT进行开发的,它支持大多数系统的终端仿真模拟。可是它并没有提供Pyside6的python绑定。前几天尝试使用qtermwidget制作Pyside6绑定虽然成功了但是再打包缓解期一直报QT版本冲突,使用各种手段最后依然没有解决---😮💨
以下是使用qtermwidget移植的终端,效果还不错。
尤其是在终端编辑文件方面,比之前自己实现的的好太多了,尤其是可以使用鼠标快速定位到文件内容的指定的地方,而自己实现的终端只能使用键盘上下键盘慢慢的移动到指定的位置。为了把这个ssh的终端功能做好,这段时间都成了我的心病。
使用Cursor移植qtermwidget
经过各种翻阅资料,我发现市面上确实没有针对Pyside6的终端框架或者相似的组件。于是乎,我就下定决定,准备移植qtermwidget这个项目。准备把c++ QT代码直接转成python代码。
这是目前使用Cursor 进行移植的代码。经过反反复复的调试和修改,目前已经完成的差不多了。
这个移植的代码80%的逻辑都是使用Cursor进行编写的,不得不说Cursor在编码方面真的是行业的天花板。不论是从逻辑编写,还是从代码重构方便,还是对需求记忆方面的能力都是相当的炸裂。
使用移植项目创建终端
"""
最小化Shell演示
最简单的实现:显示shell提示符,输入命令,查看输出
"""
import sys
from PySide6.QtGui import QFont, QColor
from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout
# 添加项目路径
from qtermwidget_python.qtermwidget import QTermWidget
from qtermwidget_python.qtermwidget.terminal_display import KeyboardCursorShape
class MinimalShell(QWidget):
"""最小化shell窗口"""
def __init__(self):
super().__init__()
self.setWindowTitle("最小Shell Demo")
self.setGeometry(400, 400, 700, 500)
# 创建布局
layout = QVBoxLayout(self)
# 创建终端
self.terminal = QTermWidget()
# 设置字体
font = QFont("monospace", 12)
self.terminal.setFont(font)
self.terminal.setColorScheme("Ubuntu")
# 添加到布局
# 确保布局正确
layout.setContentsMargins(0, 0, 0, 0)
layout.setSpacing(0)
layout.addWidget(self.terminal)
# 启动shell
self.terminal.startShellProgram()
display = self.terminal.m_impl.m_terminalDisplay
# 强制设置最佳光标属性
display._cursor_color = QColor(255, 255, 255) # 白色
display._cursor_shape = KeyboardCursorShape.BlockCursor
# 强制刷新
display.update()
if __name__ == '__main__':
app = QApplication(sys.argv)
shell = MinimalShell()
shell.show()
shell.raise_() # 确保窗口置顶
shell.activateWindow() # 激活窗口
sys.exit(app.exec())
以下是移植完成之后创建的终端。
项目代码恢复
但是就在今天我之前的努力差点就付之东流啊。
就在我像往常一样,使用Cursor进行bug的修复,结果突然莫名其妙他就执行了以下命令。
项目下面的代码全部都被他删掉了,我的天,我他么当时人都麻了,这Cursor怎么调教的,这是bug吧,还能直接执行这么危险的代码。
于是我立马就问Cursor
你告诉我我现在整个项目都被你删了,也没有备份这怎么办?
接着就尝试恢复代码,执行了以下命令。
结果各种尝试,恢复失败了。这哪行呀,这肯定得恢复啊。
于是我又问,Cursor
你这还原的是你自己删除的文件吗?这很明显就不是你删除的那些文件,你直接把你用命令行直接删除的文件恢复吧
结果又给出以下结果。
再次尝试问它
你直接执行了以下,删除语句,看你怎么给我恢复文件到删除之前吧:cd /Users/hanxuan/Python/PyTTY/qtermwidget_python && find . -name "*.py*" -delete
说实话,真的很神奇,最后还真叫他把删除的代码给恢复了,虽然丢失了一些bug修复的逻辑。但是幸运的是项目代码算是找回来了。
总结
自从使用了Cursor进行开发测试,开发效率成指数级提升。Cursor 作为当前最前沿的 AI 编程助手,其开发价值不仅体现在提升个体开发效率上,更在团队协作、产品创新和技术演进等方面带来显著变革。
但是在进行复杂项目或者对于项目实现逻辑很复杂的项目一定要进行代码备份,防止AI助手意外删除源码的风险,此次Cursor进行的这样的删除命令说实话真的可能是个很严重的bug,希望官方能快速修复。
评论区