试了下 Cursor 和所谓的 Vibe Coding

最近经常听到 “Vibe Coding”(氛围编程)这个词,大概意思就是不用一行行敲代码,直接用自然语言描述需求,让 AI 去生成和修改代码。带着点好奇,我下载了最近讨论挺多的 Cursor 编辑器试了试。

简单体验下来,感觉确实和之前的 AI 补全插件不太一样,它更像是一个知道你整个项目结构的助手。这里随便聊聊我最近用它的一些体会。

以前的插件和 Cursor 的区别

平时用 Copilot 这类工具,主要是帮我们补全下一行,或者写个小函数。

Cursor 给我的感觉是,它的颗粒度变大了。你不用停留在某一行的细节里,可以直接跨好几个文件跟它提需求。比如你要加个评论功能,它可以同时去改你的数据模型表、后端的路由文件、前端的 UI 组件。

几个用得还算顺手的功能

试用期间,有这么几个操作是用得比较多的:

1. Tab 补全

它的 Tab 补全不仅仅是接后面的字,有时候你改了一个接口字段,走到下面某个调用的地方,它会自动预测出你想补全相关的逻辑:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
export interface UserProfile {
id: string;
name: string;
// 比如我在这儿加了个角色字段
role: 'admin' | 'member';
}

export function createDefaultProfile(id: string): UserProfile {
return {
id,
name: 'test',
// 刚敲一个回车,它可能就把 role: 'member' 提示出来了
role: 'member',
};
}

2. 行内修改 (Cmd + K)

遇到以前写的一坨回调地狱,或者想快速改个写法,直接选中按 Cmd + K,输入你的要求:

1
2
3
4
5
6
7
8
9
// 选中之前的回调代码,输入:"改成 async/await 加上 try-catch"
async function readConfig() {
try {
const rawContent = await fs.readFile('/path/to/config.json', 'utf8');
return JSON.parse(rawContent);
} catch (error) {
console.error(error);
}
}

它会直接在原地给你替换掉,看着还挺爽的。

3. 多文件生成 (Composer)

这是我觉得它稍微有点东西的地方。按 Cmd + I 唤出 Composer,可以直接给它布置“大作业”。

1
2
3
4
5
比如我会这样写需求:
"给项目加个评论模块。
需要在 prisma 里加 Comment 表;
在 api/comments 写个带基础过滤的后端路由;
在前端加个简单的列表展示。样式照着现有的 Tailwind 风格写。"

它能同时生成和修改好几个文件,你可以在旁边一个一个审核同意。

4. @ 引用上下文

这招能减少它胡说八道的几率。你可以用 @ 把当前项目的某个特定文件喂给它,比如 @api.ts 这个文件里的鉴权逻辑,搬到我现在的代码里。或者直接 @codebase 搜整个项目,不过搜整个项目有时候感觉还是有点偏差。

一些局限和坑

虽然看着很美好,但在真实项目里用,还是有不少局限的:

  1. 不能一次步子迈太大:要是你一上来就让它“写个电商系统”,它肯定给你搞得乱七八糟。还是得拆成很细的需求,比如“先建个用户表”,“再写个查询接口”。小步走才比较稳。
  2. 单测不能省:它生成的代码有时候边界条件处理得很粗糙,看着跑通了,其实一遇到异常数据就崩。还是得老老实实写点测试用例护航,或者干脆让它自己先写单测再写业务代码。
  3. 你得知道整个架构长啥样:它擅长干苦力活,但数据库怎么设计、模块间怎么通信,这些大方向还是得自己心里有数。你不管,它就随便瞎写。

随便总结一下

Cursor 这类工具确实省了不少敲键盘的力气,那种不用频繁查 API 文档的感觉还挺顺的。不过写代码的核心终究不是敲字,而是理清业务逻辑和系统设计。

整体来说体验还行,能少干点重复性的体力活。感兴趣的朋友可以去官网下个试试,反正基础功能也能白嫖。

------ 有问题请 留言给我哦! 也欢迎入群讨论! 点我呀! ------

评论加载中…

0%