← AI-native IDEs: Cursor, Copilot, and the new editor workflow
02 / 07 · 50 min

Cursor deep dive: Tab, Cmd+K, and Agent

A deep dive into Cursor: Tab predictions of the next edit, inline edits via Cmd+K, the multi-file Agent (Composer), and @-symbols for precise context.

Lesson content is currently available in Russian.

What you will learn

  • →Использовать Cursor Tab как инструмент серийных правок, а не только вставки кода.
  • →Делать точечные изменения через Cmd+K с итеративными уточнениями.
  • →Ставить задачи Agent с checkpoints и подбирать контекст @-символами.

Tab: предсказание следующей правки

Cursor Tab — не классический автокомплит. Он предсказывает правки: не только вставку нового кода у курсора, но и изменение существующих строк, и показывает предложение как мини-дифф. Клавиши: Tab — принять, Esc — отклонить, Cmd+→ — принять частично, по слову. Самая сильная возможность — прыжки: после одной вашей правки Tab предсказывает следующее место изменения и предлагает перепрыгнуть туда той же клавишей. Переименовали поле в типе — Tab проведёт вас по всем использованиям в файле: Tab, Tab, Tab — и серийная правка закончена без поиска с заменой.

Попробуйте на практике: измените сигнатуру функции и следите за подсказками — Cursor предложит обновить вызовы, импорты и типы по цепочке. Это превращает Tab из «печатной машинки» в инструмент рефакторинга на микроуровне.

Два практических совета. Первый: когда пишете прозу, комментарии или работаете в паре, подсказки отвлекают — отключайте их временно через Snooze в настройках Tab. Второй, важнее: не входите в «Tab-транс», когда рука жмёт клавишу быстрее, чем глаза читают предложение. Правило простое — каждый серый блок прочитывается до принятия. Это секунда на строку, и именно эта секунда отличает ускорение от накопления незамеченных ошибок.

Cmd+K: точечные инлайн-правки

Cmd+K (Ctrl+K на Windows/Linux) — вторая передача внутри Cursor: точечная правка без ухода из файла. Выделите фрагмент, нажмите Cmd+K, опишите изменение — «перепиши на async/await», «добавь обработку пустого массива», «типизируй параметры» — и Cursor покажет дифф прямо в редакторе: зелёное добавлено, красное удалено. Принять — Cmd+Enter, отклонить — Cmd+Backspace. Без выделения Cmd+K генерирует новый код в позиции курсора.

Дифф не обязан быть финальным: в то же поле можно дописать уточнение — «то же самое, но без сторонних библиотек» — и предложение перестроится. Такой цикл из двух-трёх уточнений быстрее, чем идеальный промпт с первого раза. В контекст инструкции можно добавлять @-символы, если правка должна учитывать соседний файл или документацию.

Отдельный бонус — Cmd+K в терминале Cursor: естественный язык превращается в команду. «покажи 10 последних коммитов с файлами» станет корректным git log с флагами — полезно для редко используемых команд, которые вечно приходится гуглить.

Граница применимости: Cmd+K хорош, пока изменение помещается в один экран и один файл. Если инструкция начинается со слов «и ещё поменяй в другом файле» — это уже задача для Agent, а не для инлайн-правки.

Agent: многофайловая работа с checkpoints

Панель агента открывается по Cmd+I. В выпадающем списке три режима: Agent — полная автономия с поиском по кодовой базе, правками нескольких файлов и запуском терминальных команд; Ask — только вопросы и ответы без правок; Manual — правки строго в тех файлах, которые вы приложили, без терминала. Начинающим полезна лестница доверия: сначала Ask, чтобы получить план, затем Manual для контролируемых правок, затем полноценный Agent.

Перед изменениями агент создаёт checkpoint — снимок состояния, к которому можно откатиться кнопкой Restore, если прогон ушёл не туда. Это ваша страховка, но она не отменяет git: чистое рабочее дерево до запуска агента остаётся обязательной гигиеной.

Два правила эффективной постановки задачи. Первое — цель плюс проверка: не «поправь валидацию», а «валидация email должна отклонять адреса без домена; npm test в папке server должен пройти». Агент, у которого есть команда верификации, сам замыкает цикл: правка — прогон — исправление. Второе — один прогон, одна задача: не сваливайте в один запрос фикс бага, рефакторинг и обновление зависимостей. Итерации по текущей задаче продолжайте в том же треде — контекст сохранится; новую задачу начинайте новым тредом, чтобы не тащить нерелевантную историю.

@-символы: точный контекст вместо большого

Качество ответа определяется контекстом, и в Cursor контекст собирается @-символами прямо в поле запроса:

  • @Files и @Folders — конкретные файлы и папки;
  • @Code — отдельный символ: функция, класс, константа;
  • @Docs — официальная документация популярных библиотек и добавленные вами URL;
  • @Git — диффы и история коммитов;
  • @Web — живой поиск в интернете;
  • @Recent Changes — ваши недавние правки.

Под капотом Cursor индексирует кодовую базу: строит embeddings по файлам, чтобы семантический поиск находил релевантный код даже без явных @-указаний. Каталоги с генерированным кодом, билд-артефактами и секретами стоит исключить из индекса через файл .cursorignore — меньше шума в поиске и меньше лишнего в контексте.

Главный принцип: точный контекст бьёт большой. Модель, получившая два действительно относящихся к делу файла, отвечает лучше, чем модель, в которую высыпали всю папку src: релевантные детали тонут в шуме, а окно контекста не бесконечно. Антипаттерн — прикладывать всю кодовую базу «на всякий случай» к каждому запросу. Паттерн — думать как ревьюер: какие файлы понадобилось бы открыть человеку, чтобы ответить на этот вопрос? Их и прикладывайте. Если не знаете, какие именно, — сначала спросите агента в режиме Ask, где живёт нужная логика: поиск по индексу справится.

Practice

Час внутри Cursor

В своём репозитории: (1) сделайте серийную правку через Tab-прыжки — переименование поля или изменение сигнатуры; (2) перепишите одну функцию через Cmd+K минимум с одним уточнением; (3) поставьте Agent задачу с целью и командой проверки, приложив контекст @-символами, и примите результат по диффу.

Deliverable

Три коммита (по одному на инструмент) и заметка 5–7 предложений: где какой инструмент оказался быстрее и почему.

Checkpoint

Опишите свой прогон Agent: как вы сформулировали цель и команду проверки, какой контекст приложили и что проверяли в диффе перед принятием?

  • ✓ Задача поставлена через цель и проверяемый критерий, а не через диктовку правок.
  • ✓ Контекст собран точечно @-символами, а не «всей папкой на всякий случай».
  • ✓ Дифф просмотрен пофайлово до принятия, checkpoint/Restore упомянут как страховка.

Check yourself

Чем Cursor Tab отличается от классического автокомплита?

01Чем Cursor Tab отличается от классического автокомплита?

Как принять инлайн-правку после Cmd+K?

02Как принять инлайн-правку после Cmd+K?

Зачем агент создаёт checkpoint перед изменениями?

03Зачем агент создаёт checkpoint перед изменениями?

Чем режим Manual отличается от Agent?

04Чем режим Manual отличается от Agent?

Почему «приложить всю папку src» — антипаттерн?

05Почему «приложить всю папку src» — антипаттерн?

Sources

Cursor deep dive: Tab, Cmd+K, and Agent · AI-native IDEs: Cursor, Copilot, and the new editor workflow · VORCL