PHPSTorm – это шикарный инструмент. Он меня сильно избаловал подсветкой HTML внутри PHP строк, функциями типа “Structural Brace Matching” или своим уникальным поведением Ctrl+Z, когда отмена не происходит, если кусок кода не находится в поле видимости. Но в этой IDE есть и раздражающие вещи. Одна из них – режим LightEdit, который становится хуже с каждой версией.

Иногда я люблю поредактировать файлы прямо на боевом сервере, используя WinSCP и PHPStorm в качестве редактора. Вот только PHPStorm открывает такие файлы по умолчанию в режиме LightEdit, где не работает практически ни одна “удобная фича”, есть только минимальная подсветка кода. Наконец-то, у меня дошли руки это исправить.

Я решил потестировать разные LLM-модели, которые должны “писать код за программистов”. Cursor и Windsurf – это новые IDE с ИИ-помощниками на базе VSCode. Windsurf не работает в России из-за санкций, но он ничем не отличается от Cursor. Поэтому я взял Cursor, побаловался в нём и составил своё первое впечатление по основным моделям.

Gemini 2.5 Pro

Не пишет на русском, хотя понимает его – обращаться к нему на русском языке можно. Этот ИИ пытается внести слишком много изменений в код, о которых я не просил, и похоже, что он плохо понимает контекст. Он не понял, что я пишу WordPress-плагин, поэтому он использовал синтаксис PHP, но не пользовался WordPress-функциями. На меня эта модель произвела вайб “overengineered piece of shit” из-за проблем с намерениями. Ты просишь её “исправь баг”, а она переписывает весь файл “на свой вкус”, типа “давай я напишу всё заново, красиво, и не по теме”. Спасибо, не надо.

Современные сайтоделы вообще не парятся об оптимизации фронтэнда – наваливают туда библиотек типа GSAP и юзают их по самые помидоры, из-за чего их красивые сайты начинают нагревать мобильные устройства, да и ноутбуки. Я такого избегаю всеми правдами и неправдами, и наконец-то ChatGPT подсказал мне для этого идеальное решение. Возьмём простой код, который смотрит прокрутил ли пользователь страницу ниже .hero и если да, то вешает класс на body.

$(window).on('scroll', function() {
     const heroHeight = $('.hero').outerHeight();
     $('body').toggleClass('hero-scrolled', window.scrollY > heroHeight);
});