Vim против интегрированной среды разработки

Подискутировал с Сергеем Бобровским (СБ) на тему, без холивара. Текст ниже.

СБ
Тренируюсь в шорткатах аутентичного редактора vim -- выигрыш 64 часа в год за счет того, что руки располагаются постоянно над центральной частью клавиатуры. Не надо не то что к мыши, даже к стрелкам кисти перемещать, и в процессе кодинга на куче действий постоянно экономятся кусочки секунд.
На ламерское возражение "у меня гораздо больше времени уходит на обдумывание" контр-возражение
1) выигрыш 64 часа всё равно остаётся;
2) чтобы научиться экономить на думании 50%, научись сперва экономить 5% на кодинге и работе в контр-интуитивном эдиторе, эти вещи на самом деле тесно связаны.

СТ
В vim же нет контекстного автодополнения по Ctrl+Space.
А это минус много часов в год. Гораздо больше 64.

СБ
Вот как раз автодополнение -- это интуитивное шаблонное зло, которое мешает думать своими мозгами:) Как и многие фичи рефакторинга, решейперов всяческих итп.
Только чистый код, только хардкор.

СТ
Автодополнение - это единственная возможность не забивать мозги ненужными детялями кода, оставив больше времени на понимание структуры.
Я в своём-то АПИ не помню сигнатуры, а когда рядом колллеги курочать сотни тысяч строк кода, то vim превращается в инструмент массового поиска и замены текста по файлам.
Но в этом качестве мне больше нравится программер нотепад.

СБ
Речь скорее о разумном балансе -- многие кодеры считают, что это фича мастхэв, даже учатся программировать с ней, и когда начинают кодить без нее, а это нередко бывает необходимо, начинается резкий тормоз. Это хорошо, когда используешь его осознанно, а не "конструируешь" код из кубиков автокомплита, пытаясь тупо угадать нужное, и периодически промахиваясь.
Для vim в принципе куча плагинов для автозаполнения, под любой язык фактически. Да и под свой API если и делать заполнение, то в vim как раз удобно.

СТ
Современные фреймворки типа дотнета - это десятки тысяч классов и сотни тысяч свойств и функций. Так что в этом плане - мастхэв, если не хочешь зубрить это наизусть и превращаться в кодера.
А вот тонкие операции с кодом - это нотепад и его продвинутые потомки, включая vim. Но это не более 10% времени.

СБ
Я как раз в нете практически не пользуюсь комплитом, потому что помню всё, что мне бывает нужно. Не знаю, что имеется в виду под тонкими операциями с кодом:) но по моему свежему опыту, работать в vim получается гораздо эффективнее, нежели в чём-то другом, хотя основные операции примерно те же самые.

СТ
Примеры "тонкого". Поменять что-то в модуле, не трогая DFM и наоборот. Починить WinForm, когда студия не может её отобразить, выдавая ошибку. Массовый поиск и замена.

СБ
Ну это да, но это во многом следствие -- первичное зло сама студия с виндой ))) Только линукс и терминалы!
Кстати, в vim есть замена через регулярные выражения :) Например, удалить в xml тег независимо от его содержимого. Замена в фиксированном диапазоне строк, и прочие вкусняшки. Ну и плагины соответствующие конечно же есть
https://github.com/skwp/greplace.vim

СТ
Не нравится студия - есть отличная среда Monodevelop.

СБ
Мне очень нравится студия, с чего ты взял. Она лучшая среда под нет и винду, особенно с решейпером.
Она просто имеет такое же отношение к моим линукс-проектам, как и eclipse -- то есть никакого.

СТ
А я как раз пересел на Monodevelop в связи с линуксовыми проектами.
Вся перечисленная тройка - Lazarus, Monodevelop и CodeBlocks - отличные среды, позволяющие работать в двух ОС с минимальными различиями. Под Маком тоже должно работать, но сам не пробовал.
Vim для сотен и тысяч классов (только своих) - несерёзно.

СБ
Ну если код под дотнет переносишь, это понятно. С минимальными различиями и unity с монодевелопом классно помогает, под мобилки и три оси, я им там с удовольствием пользуюсь для отладки :) Но как всегда, смотря что за задача.
А какие проблемы с vim хоть с миллионом классов? Как раз его аутентичность и делает работу эффективнее в разы, нежели в ide с мышой, стрелками и автокомплитом, стимулируя глубже погружаться в свой проект (goto начало треда).

СТ
Go to definition/implementation, список методов текущего контекста экрана с переходом по 2-3 буквам, автодополнение по контексту.
Любая из перечисленных IDE может все, что vim плюс намного больше специфики.
А шорткаты - это кто как привык.
Интегрированная отладка и трассировка - отдельная тема, для серверных приложений не так критична.

СБ
Ну я ведь исходно несколько о другом: аутентичная работа с vim отнюдь не как с универсальным едитором. Речь ведь не о том, кто что может, а как это реализовано. Для vim море свободных плагинов, и если его затачивать под конкретный проект с учётом местного контекста, любая ide ему заведомо проиграет -- из него можно быстро сделать скоростную индивидуальную ide конкретно под мои нужды.
Возможно, это именно моя специфика, а у других даже в схожих задачах эффект будет противоположный.

СТ
Обвешанный плагинами vim - это та же IDE, но с vim-овским ядром работы с линейным текстом.
Казалось бы, поменяй шорткаты на привычные и радуйся.
Но любой обвешанный плагинами текстовый редактор будет проигрывать специализированной среде.
Собственно, по этой причине есть Geany, с другим ядром работы с текстом, более привычным для Ctrl+C.
Есть 3 основных режима :
1/ создание нового кода (vim конкурентоспособен при условии зубрежки API)
2/ изучение архитектуры и правка старого кода в т.ч. чужого многолетней давности (навигация и визуализация однозначно хуже у vim)
3/ реструктуризация (специфический инструмент, слабо связанный с редактированием текста)
Чем больше система, тем больше времени уходит на 2 и 3 вкупе с автотестами.

Forums: