Cursor让你把Ctrl+C/Ctrl+V变成Tab

一、编程AI工具首推Cursor

要是在一个月之前,那我只是推荐ChatGPT。

当然还会用通义灵码(因为它不要钱)。不过现在我已经把通义灵码仍垃圾桶了~ Cursor太他妈香了。

所以编程工具我首推Cursor。

二、怎么使用

1、Cursor 下载与安装

访问 Cursor 下载适合你操作系统的安装包

2、Cursor 为什么比其他的工具好用很多?

①可以灵活地根据代码内容组合 prompt

②分析当前 tab 中附近的代码

③分析用户主动框选的特定代码段

④分析用户选择的整个文件中的代码

⑤利用 RAG 将整个工作区的代码向量化,作为分析的上下文

3、使用指南,记住两个快捷键

Cursor 常用快捷键和 Visual Studio Code 键盘快捷键基本相同。快速上手只需要记住以下快捷键。如果你本身就是 VSCode 用户,记得导入插件和配置:

Ctrl+K

快速让 Cursor 帮你编写你需要的代码,也可以选中代码进行优化

Ctrl+L

弹出 Chat 聊天框,进行 QA

随便让它写一个方法:

这个看起来很厉害,不过这个根本就不是Cursor牛逼的地方。

前面说了:Cursor利用 RAG 将整个工作区的代码向量化,作为分析的上下文。这个牛逼点让Cursor知道怎么写出你想要的代码,上面这个代码正常情况下AI怎么会知道checkContent要怎么调用?怎么知道方法要返回什么内容?

因为它知道你写了一个这个方法:

这个很香吧,最香的我觉得还是代码补全,写代码真的太爽了。

4、Tab 代码补全

按下图打开设置,如果没用过的朋友会来到一个新世界~ 具体怎么样盆友你自己去体验吧,不是我截几张图就能说清楚的。

三、Cursor 到期了怎么办?

在 Cursor 中退出当前到期账号,谷歌搜索临时邮箱,重新注册登录,原有的cursor配置不会被清除,依然保留,白嫖成功~

在 Vue3 + ElementUI-Plus + TypeScript 中实现 Tab 标签页左右滑动,可以参考以下代码实现: ```html <template> <div class="tabs-container"> <el-tabs @tab-click="onTabClick"> <el-tab-pane v-for="(tab, index) in tabs" :key="index" :label="tab.title"> {{ tab.content }} </el-tab-pane> </el-tabs> <div class="tabs-arrow tabs-arrow-left" @click="scroll(-1)"> <i class="el-icon-arrow-left"></i> </div> <div class="tabs-arrow tabs-arrow-right" @click="scroll(1)"> <i class="el-icon-arrow-right"></i> </div> </div> </template> <script lang="ts"> import { defineComponent, ref, watch, onMounted } from 'vue' import { ElTabs, ElTabPane } from 'element-plus' interface Tab { title: string content: string } export default defineComponent({ components: { ElTabs, ElTabPane }, setup() { const tabs = ref<Tab[]>([ { title: 'Tab 1', content: 'Tab 1 Content' }, { title: 'Tab 2', content: 'Tab 2 Content' }, { title: 'Tab 3', content: 'Tab 3 Content' }, { title: 'Tab 4', content: 'Tab 4 Content' }, { title: 'Tab 5', content: 'Tab 5 Content' }, { title: 'Tab 6', content: 'Tab 6 Content' }, { title: 'Tab 7', content: 'Tab 7 Content' }, { title: 'Tab 8', content: 'Tab 8 Content' } ]) const scrollRef = ref<HTMLDivElement | null>(null) const onTabClick = (tab: any) => { const index = tabs.value.findIndex(item => item.title === tab.props.label) if (index !== -1) { const scrollOffset = scrollRef.value?.offsetLeft || 0 const tabOffset = index * 120 // 每个 Tab 的宽度 const diff = tabOffset - scrollOffset const scrollWidth = scrollRef.value?.offsetWidth || 0 const containerWidth = scrollRef.value?.parentElement?.clientWidth || 0 if (diff + 120 > scrollWidth) { // 如果当前 Tab 被遮挡,则向右滑动 scrollRef.value?.style?.transform = `translateX(${-(diff + 120 - scrollWidth)}px)` } else if (diff < 0) { // 如果当前 Tab 在左侧被遮挡,则向左滑动 scrollRef.value?.style?.transform = `translateX(${Math.max(-tabOffset, 0)}px)` } } } const scroll = (direction: number) => { const scrollWidth = scrollRef.value?.offsetWidth || 0 const containerWidth = scrollRef.value?.parentElement?.clientWidth || 0 const scrollOffset = scrollRef.value?.offsetLeft || 0 const minOffsetLeft = containerWidth - scrollWidth let offsetLeft = scrollOffset + direction * 100 offsetLeft = Math.max(offsetLeft, minOffsetLeft) offsetLeft = Math.min(offsetLeft, 0) scrollRef.value?.style?.transform = `translateX(${offsetLeft}px)` } watch(tabs, () => { // 监听 tabs 变化,每次更新后重新计算 Tab 容器的宽度和位置 onMounted(() => { const scrollWidth = scrollRef.value?.offsetWidth || 0 const containerWidth = scrollRef.value?.parentElement?.clientWidth || 0 if (scrollWidth > containerWidth) { scrollRef.value?.style?.transform = `translateX(0px)` } else { scrollRef.value?.style?.transform = `translateX(${(containerWidth - scrollWidth) / 2}px)` } }) }) return { tabs, scrollRef, onTabClick, scroll } } }) </script> <style scoped> .tabs-container { position: relative; width: 100%; height: 100%; overflow: hidden; } .el-tabs__nav-wrap { display: flex; flex-wrap: nowrap; transition: transform 0.3s ease-out; } .el-tabs__header { overflow-x: hidden; white-space: nowrap; } .el-tabs__header .el-tabs__item { width: 120px; } .el-tabs__active-bar { display: none; } .tabs-arrow { position: absolute; top: 50%; transform: translateY(-50%); cursor: pointer; z-index: 1; } .tabs-arrow-left { left: 10px; } .tabs-arrow-right { right: 10px; } </style> ``` 在上述代码中,定义了一个 `tabs` 数组,用于存储 Tab 的标题和内容。同时,定义了一个 `scrollRef` 引用,用于获取 Tab 容器的 DOM 元素。 `onTabClick` 方法在 Tab 被点击时触发,通过计算当前 Tab 的位置和容器的位置关系,判断是否需要进行左右滑动。 `scroll` 方法接收一个 direction 参数,代表滑动方向。在方法中,首先获取 `el-tabs__nav-wrap` 元素的宽度、`el-tabs__header` 元素的宽度和 `el-tabs__nav-wrap` 元素的偏移量等信息,然后根据 direction 计算出滑动后的偏移量,最后将偏移量设置为 `el-tabs__nav-wrap` 元素的 transform 属性的值。左右箭头通过绝对定位来实现,点击事件绑定到 `scroll` 方法上。 最后,对 `el-tabs__nav-wrap` 元素和子元素的样式进行自定义,使其能够支持左右滑动。其中,将 `el-tabs__nav-wrap` 元素设置为 flex 布局,并禁用了换行。将 `el-tabs__header` 元素的 overflow-x 属性设置为 hidden,同时将 `el-tabs__item` 元素的宽度设置为 120px(每个 Tab 的宽度),并将 `el-tabs__active-bar` 元素隐藏。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值