Когда я первый раз открыл Cursor, я потратил минут двадцать на то, чтобы понять, почему оно вообще лучше VS Code. Внешне — почти одно и то же. Те же вкладки, тот же Explorer слева, тот же терминал снизу. Я даже закрыл и переоткрыл, думал — не установилось нормально.
Потом нажал Cmd+K над случайной функцией и попросил её переписать. И вот тут что-то щёлкнуло. Не потому что результат был идеальным — он был средненьким. Просто я понял, что нахожусь не в редакторе с плагином, а в чём-то, что работает иначе. Вот про эти семь дней и расскажу — что пробовал, где обжёгся, и что в итоге осталось в привычке.
День первый: не трогай настройки, сначала поломай что-нибудь
Самая частая ошибка, которую я наблюдал у коллег — они сразу лезут в Settings, читают документацию, смотрят YouTube-туториалы на час. Я тоже так начал. Час убил на чтение, потом ещё полчаса на настройку Rules for AI. И ничего из этого не понял, пока не начал просто работать.
Совет себе тогдашнему: возьми реальный кусок своего кода — не hello world, а что-то живое — и попроси Cursor объяснить. Напиши в чате «объясни, что делает эта функция», и посмотри что будет. Это быстрее любого туториала показывает, понимает ли модель твой контекст.
У меня был кусок легаси на Python, который я сам не до конца понимал. Cursor разобрал его корректно, нашёл баг, который там жил года два. Вот после этого я понял: инструмент рабочий.
Cmd+K против Cmd+L — это не одно и то же
Неделю я путался, когда что использовать. Потом разобрался, и стало проще.
Cmd+K — это инлайн-редактирование. Стоишь на конкретном куске кода, нажимаешь, пишешь задачу. Cursor меняет именно этот кусок, прямо в файле, с diff-превью. Хорошо для локальных задач: переписать функцию, добавить обработку ошибок, сменить API-вызов.
Cmd+L — это чат сбоку. Он видит весь файл (или несколько, если добавить), отвечает текстом, может предложить изменения. Хорошо когда нужно обсудить что-то, понять архитектуру, спросить «почему это падает».
Я сначала всё делал через чат — привык к ChatGPT. Это медленно: копируешь код туда, копируешь обратно. Когда переключился на Cmd+K для мелких правок, скорость выросла раза в два.
Контекст решает всё — и это не метафора
На третий день я начал злиться. Cursor давал странные ответы, предлагал импортировать библиотеки которых в проекте нет, называл функции не так, как у меня принято. Я уже думал, что переоценил инструмент.
Оказалось — я просто не давал ему контекст. Открывал один файл, спрашивал про код, который зависит от пяти других. Cursor не телепат.
Есть несколько способов это починить. Первый — добавить файлы через @ в чате. Пишешь @utils.py и он подтягивает содержимое. Второй — файл .cursorrules в корне проекта. Туда я написал, что за проект, какой стек, как называются основные сущности, какой стиль кода принят. Буквально двадцать строчек. После этого ответы стали заметно более попадающими в цель.
Третий способ, который открыл позже — Cmd+Enter вместо Enter в чате. Отправляет запрос с учётом всей кодовой базы, не только открытых файлов. Медленнее, зато на вопросы вроде «где у меня используется этот класс» отвечает честно.
Tab-автодополнение: неделю игнорировал, потом не смог без него
Cursor предсказывает не следующую строчку, а сразу несколько — с учётом того что ты только что написал и что делает функция вокруг. Это не IntelliSense.
Я первые дня три это игнорировал — отключаю автодополнения везде, раздражают. Потом коллега показал трюк: начал писать функцию, остановился на середине, подождал секунду. Cursor предложил ровно то, что я собирался написать.
Не всегда. Иногда ерунду. Но процентов шестьдесят попаданий, а Tab нажать дешевле чем печатать. Я переключился на стратегию «принимай если подходит, отклоняй если нет» — и это реально экономит время.
Отдельно понравилось как оно работает с тестами. Написал один тест, перешёл на следующую строку — Cursor предложил следующий с другим кейсом. Логично, потому что паттерн очевидный. Но всё равно приятно.
Где я наступил на грабли
Было несколько ситуаций, когда Cursor уверенно выдавал неправильный код. Не ошибки синтаксиса — логические проблемы, которые не сразу видно.
Один раз попросил рефакторнуть кусок работы с датами. Он переписал, всё выглядело чисто. Я принял изменения почти не глядя. Через день обнаружил, что timezone-логика сломана — Cursor использовал метод, который ведёт себя иначе в edge cases. Час отлаживал.
После этого взял за правило: любой код, который касается денег, дат, авторизации или внешних API — проверяю сам, даже если выглядит правильно. Cursor хорош в восьмидесяти процентах случаев. Но эти двадцать бывают дорогими.
Ещё одна ловушка — галлюцинации с документацией. Иногда он ссылается на методы, которых нет, или на параметры, которые были в старой версии библиотеки. Лечится просто: незнакомый метод — проверяю в официальной доке перед коммитом.
К концу недели: что реально осталось в привычке
Из всего что пробовал, в ежедневную работу вошло вот что.
Cmd+K для локальных правок — постоянно. Быстрее чем думать самому, когда задача простая: переименовать переменные по функции, добавить логирование, перевести синхронный код в async.
Чат с @-файлами — когда разбираю чужой код или ищу баг. Открываю нужные файлы, описываю симптом, прошу выдвинуть гипотезы. Работает лучше чем StackOverflow для специфичных проблем.
.cursorrules — один раз написал на каждый проект, больше не трогаю. Возврат ощутимый.
Tab — просто включён, принимаю когда подходит.
А вот Composer — штука когда Cursor сам пишет несколько файлов по описанию задачи — использую редко. Для нового кода с нуля иногда полезно. Но он генерирует много бойлерплейта, который потом нужно чистить, и я пока не уверен что это быстрее чем написать самому.
Cursor не заменяет умение думать о коде. Он убирает трение между «я понимаю что нужно сделать» и «я это написал». Иногда это полчаса в день, иногда больше — зависит от задач. Честно говоря, я ожидал большего волшебства в первые дни. Волшебство пришло позже, когда выработалась интуиция на то, когда его спрашивать, а когда проще написать самому.
