Comments 401
IDE значительно тяжелее VIM (даже с плагинами)
При всей любви к VIM… Был у меня один знакомый евангелист, дал свой vimrc. Ну и оказалось, что запускается по времени примерно столько же, сколько обобщенная IDE, а переименовать функцию, не грепая вручную по всем исходникам, по-прежнему нельзя.
VIM я правда люблю и ни за что не променяю на nano или emacs. Но делать из него IDE — ну только если вы правда сегодня на Python, завтра на Clojure, послезавтра на Magma. Плюс для некоторых обобщенных IDE тоже есть туча плагинов.
А что значит по-вашему "делать IDE"? При работе с большинством ЯП я добиваюсь в минимальном варианте того, чтобы были:
- Подсветка синтаксиса
- Автодополнение
- Проверка синтаксиса
- Сборка и прогон тестов
- Автоотступы
- Форматирование кода (в соответствии с правилами языка)
- Сниппеты
Чаще всего половина этого уже есть в базовой поставке VIM. Остальное 1-2 плагина для языка.
Это — IDE?
Нет, это всего-навсего уважающий себя редактор.
А что тогда IDE?
Рефакторинг — переименование функций, методов, классов, переменных, параметров, файлов (перименовал/перенес файл — везде поменялись импорты), вещи типа extract variable/method/parameter.
Умная навигация, как минимум «Jump to definition».
Кодогенерация (типа сгенерировать моки для этого класса), хотя это отчасти решается сниппетами.
В VIM встроенная навигация по тегам. Чаще всего "Go to definition" реализуется именно так. Но для некоторых языков есть отдельное "go to definition".
Для рефакторинга есть много инструментов. Вот тут обсуждаются для нескольких языков и в "общем случае".
Т.е. в целом от "уважающего себя редактора" до IDE в вашем определении отделяет одно дополнение с поддержкой рефакторинга? По-моему не такое уж и преступление вкатить плюс один плагин и сделать из вима IDE.
Ну, в целом, да, рефакторинг для меня самое важное (он не исчерпывается переименованием, кстати). Хотя вот ниже еще указали глубокую интеграцию с VCS, это тоже очень полезно. И не забудьте, вы обещали это для любого языка, а по вашей ссылке список весьма скудный:)
Ну это особенности внутренней архитектуры, которые меня, если я только не пишу дополнения к этому редактору/IDE, особо не должны волновать.
Ну и, конечно, для любой нормальной IDE есть vim-плагин, я, например, без IdeaVIM не представляю, как работать :)
Правда в том же проекте фронтендщики работали на JS. И для JS этот функционал был неюзабелен. Батарейка ноутбука съедалась мгновенно, и даже автоподстановка для JS подтормаживала.
Если же выключить этот функционал, которые генерировал синтаксические деревья, то вся огромная и дорогая идея для JS становилась не очень хорошим клоном вима.
По навигации и переимнованию, отвечал в других комментах.
А что такое глубокая интеграция c GIT, такая интеграция достаточно глубока? И что такое расширенный анализ кода?
git checkout master
я и сам из консоли делаю обычно.Самый простой пример расширенного анализа — когда IDE находит переменные, которые используются до присвоения. Или когда проверяет, можно ли библиотеку импортировать, нет ли опечатки в её названии.
Не знаю, мне лень изучать всё, что там написано
Пастернака тоже осуждаете?
Local History — это круто выглядит, но хз насколько полезно. В любом случае, это отдельная от git-фича, я бы не назвал её глубокой интеграцией с git. Насколько я понял, её можно реализовать с помощью eclim. Справедливости ради, я eclim в своё время не освоил, не очень удобно прикручивается.
А расширенный анализ есть, например, для python. Думаю можно найти и для других языков.
Реально полезно, если ветки криво смержились, по локал-хистори можно быстро восстановить не попавшие в мерж куски кода.
То ли я не знал как, то ли в идее были какие-то проблемы, но мерджи были головной болью, пока не пересел на консоль почти полностью.
А это что у вас на картинке, не подскажете?
Есть ещё, кстати jedi, мною упомянутый: http://jedi.jedidjah.ch/en/latest/docs/features.html
Коммиты по методу/классу, можно посмотреть сами изменения. Очень удобно.
Профайлинг, дебаг (ага, можно дебажить и в других местах, теряя все удобства редактора под рукой), построение графа зависимостей — да полно задач, которые vim не сможет сделать либо чисто по техническим причинам (шейдеры в cli даже не смешно), либо из-за большой сложности.
А еще из личного хобби — blueprint в quartus, simulink в matlab, waveforms приходится отображать в других средах.
Я не утверждал, что VIM может всё, что может любая IDE в том же виде. Конкретно с шейдерами, какой-то костыль, вероятно, возможен, но вы правы — не имеет особого смысла.
Я повторюсь, я не призывал всех переходить на VIM, я призывал обратить на него своё внимание!
Дебаг для многих языков есть (есть Vdebug сразу для многих языков: PHP, Python, Ruby, Perl, Tcl and NodeJS, но бывает, что и конкретно под один язык плагинчик). Насчёт графа зависимостей, чтобы прямо в VIM не скажу, чтобы вывел в файлик — это бывает.
По личному хобби неотвечу — много слов незнакомых. Но в целом, с вашим утверждением согласен. Не всё можно сделать в консоли, а, следовательно, не всё можно сделать в VIM.
Визуально на картинку смотреть интересно, но не всегда полезно.
Вот вам пример intellisense в vim для Java, C++, C#, JSP, XML, HTML, SQL:
Интерактивная помощь по параметрам функции в VIM есть для очень многих языков (не только как на картинке).
Ваши слова имеют смысл особенно в части "если вас устраивает, то и ладно". Полностью согласен. Но я бы назвал некорректной вашу аналогию Vim-IDE и велик-феррари. Vim всё-таки не велик, а условная Нива с движком от феррари, коробкой передач от BMW. И ездить вам не только по автобанам надо, но иногда и по бездорожью.
VIM — это набор запчастей для условной нивы + попадаются запчасти более высокого качества (но их надо проверять),
хорошая IDE — условный новенький хаммер из магазина с полным фаршем.
обычная IDE — условная шевроле нива
1) Windows-only. http://insenvim.sourceforge.net/portlinux.htm — тут, в сломанном HTML, можно прочитать: «We don't have for Linux, but want to port. It
may be tough, but any help is appreciated.». Увы.
2) Не обновлялся с 2006 года, уже 10 лет.
Боюсь, даже если он заведётся и будет работать с современным вимом, вряд ли там будет поддержка возможностей языков, которые они получили за последние 10 лет. А у Java уже две версии как минимум вышли…
Вы правы, похоже на старье (не обратил внимание, т.к. не пишу на Java). Народ хвалит eclim: http://eclim.org/vim/java/complete.html
Автор заявил, что vim всех рвет
Вы, пожалуйста, прежде чем такое писать, внимательно прочтите, что такого "автор заявляет". Моя основная мысль состоит в следующем: даже, если вы пользуетесь IDE, то обратите внимание на VIM — у него масса достоинств по сравнению с вашей IDE.
Совершенно точно, можно утверждать и обратное: у IDE есть достоинства по сравнению с VIM. Я нигде не утверждал обратного.
А что тогда IDE?
Дебаг, деплой, статический/динамический анализ, профилирование.
Ну понятно, что испортит можно всё, что угодно. Можно написать плагин, который будет делать sleep 10000
и удивляться, чего это VIM такой тормозной :) Если следовать пути, который я указал, и ставить плагинчики через vim-plug (который умеет ленивую загрузку, т.е. грузит, только когда потребуется), то всё будет быстро.
А насчёт переименовать, то вот вам плагин на тему, vim-esearch: NeoVim/Vim plugin performing project-wide async search and replace, similar to SublimeText, Atom et al.
Ну и, например, для того же Python в Jedi-vim есть соответствующая команда.
Это все таки задача плагина, а не vim'а, кмк.
- Нет
- Нет
По первым двум пунктам речь идёт о статическом анализе кода. Вообще это сильно зависит от языка, с которым вы работаете, и где-то такой анализ просто мешает и раздражает, плохо применим. Вот например у некоторых коллег по работе — WebStorm, от чего-то они его так любят, но он ужасен, его встроенный линтер JavaScript/TypeScript, который, как я понимаю, пытается анализировать код, делает это отвратительно, постоянно сыпя ошибками там, где их в действительности нет, не говоря уже о том, что то и дело врубается форматтер, из-за которого нарушаются стайл-гайды и пулл-реквесты отправляются на доработку (но это уже другая история про хвалёные IDE). CtrlSF же находит вхождения и выводит их в один буфер, который ведёт себя как и любой другой vim-буффер, и всё что ты знаешь о редактировании в vim, — применимо, ты просто рассматриваешь чанки, делаешь в них изменения и затем коммитишь (просто как обычно для vim сохраняешь буффер), можно просто сделать автозамену с подтверждениями по вхождению (что обычно и происходит в моём случае, лично мне этого хватало пока с лихвой). Нужно иметь в виду что я описал только узкий пример возможностей, можно открывать отдельные файлы из буфера вхождений и работать с ними более детально например.
А вот вопрос третьего пункта я вообще не понял, к чему он? Возможно я уже дал на него ответ выше, описав механизм работы, и результат будет зависеть от того, в каком режиме вы находитесь, в каком месте буфера с вхождениями, и вообще от вашего vim-конфига, вы в конце-концов можете забиндить эти клавиши на что угодно.
не говоря уже о том, что то и дело врубается форматтер, из-за которого нарушаются стайл-гайды и пулл-реквесты отправляются на доработку
Если style guide написан разумными людьми и настроек IDE не хватает, чтобы настроить автоформатирование согласно style guide'у, то стоит написать в багтрекер соответствующей IDE. Естественный вопрос: каких настроек не хватило?
Судя по коду вашего "плагина" он режет пробельные символы не в конце файла (EOF), а на концах строк (EOL).
Это тенденция не среди пользователей IDE в общем или IDE от JetBrains в частности, а симптом left-pad'а среди фронтэндеров, к сожалению.
Думаю, что нет. Style guide, допускающий смесь табов и пробелов в отступах в рамках одного файла, является, мягко говоря, странным.
Требование наличия отступов в пустых строках тоже выглядит странно: автоотступ умеют почти все нормальные редакторы (e. g., set cindent
).
Требование наличия отступов в пустых строках тоже выглядит странно: автоотступ умеют почти все нормальные редакторы (e. g., set cindent).
Это не требование, по стайл-гайду мы оставляем табы на пустых строках (например для того, чтобы при подсвеченых символах таба визуально видеть цельный не раздробленный блок), а в комментариях я их не вырезаю именно чтобы потом снова их не добавлять, в случае если код будет раскомментирован. То-есть опять же вы всё поняли неправильно.
Простите что? Т.е. с тем, что закомментированный код в версионном хранилище — адовый антипаттерн вы не знакомы?
Почему у вас поведения для комментов для пробелов и для табов различается?
PS если вам надо:
— не чистить комменты от пробельных символов (там они имеют совсем другое значение, нежели в коде...) (комментированный код — зло)
— чистить в конце строк пробельные символы (trim-end)
— не чистить пустые строки
то всё это умеет Idea (а значит и WebStorm) из коробки (максимум пару-тройку галок перекинуть).
И именно ваши объяснения и вызвали такую бурю (как выражаетесь, так вас и понимают). И, с учётом вышеозначенного, где бонус вима перед IDE?
В кривых руках пользователей не IDE виновата.
PPS стайл гайд — делающий различие между пробелами и табами (всё это пробельные символы форматирования) на концах строк — говённый стайл гайд. К выводу о том, что ваш стайл-гайд такой я пришёл на основании ваших же путанных объяснений. И причём тут «ограниченная IDE» (которая мешает говнокодить тем, что не поддерживает такой вот говнокод)?
Простите что? Т.е. с тем, что закомментированный код в версионном хранилище — адовый антипаттерн вы не знакомы?
Данные решения принимал не я, сам бы так делать не стал, но я продемонстрировал что мой редактор позволяет мне подстроиться под заявленные требования, я сейчас не обсуждаю идеологические подходы, а лишь возможности редактора.
И, с учётом вышеозначенного, где бонус вима перед IDE?
Гибкость например. И я уверен, что то, что я описал на примере вырезания пробельных символов определённым образом, по прежнему не реализована в том же WebStorm или Idea, и это не связано с кривостью рук, если мне вдруг станет скучно, — может я и набросаю какой-нибудь пример с мусорными пробельными символами, покажу вам скринкаст, как с ними справляется вим, а вы в свою очередь можете попробовать доказать мне, что IDE способна на тоже самое, предоставив свой скринкаст.
Данные подходы расходятся с best-practice, поэтому могут быть не реализованы в IDE (и я буду рад, если выяснится, что они не реализованы — не надо поощрять говнокод).
До кучи — они ещё и проблемы могут принести (как вам такая радость — в генерируемом xhtml в закомментированном участке поймать "--" из переменной? А ведь все xml-валидирующие парсеры дружно прервут парсинг с ошибкой/исключением...).
По поводу примера — можно и без скринкаста (зачем он вообще? вопрос доверия решать? Вас FullHD устроит?)
PS ну и напоследок — в очередной раз: гибкость, облегчающая возможность говнокода — это вред.
Это что за бредовый стайл-гайд? Во-первых: коммент это коммент (туда может и пустая форматированная строка угодить, ага), не надо его считать куском кода! Во-вторых какие нахрен пробелы/табы на концах строк? Вы уж определитесь в своём стайл-гайде и используйте или то или другое. Иначе получаем бред.
И по IDE от JetBrains (включая вебшторм): by default пробелы в пустых строках не режутся, пробелы в конце кода режутся, пробелы в комментах не режутся. Под пробелами я понимаю настроенный символ (таб или пробелы), используемый для форматирования (by default символ — это пробелы, by default — форматирует отступом по 4).
PS знаете, можно через одно место написать стайл-гайд, а потом жаловаться, что то или иное средство его не поддерживает… но это будет не проблема средства, а проблема стайл-гайда.
Вы выдумали какие-то свои аргументы, основываясь на выдуманных обстоятельствах, но тем не менее оправдывать ограниченность своей IDE плохим стайл-гайдом, потому что IDE не может под него подстроиться, — я не уверен, что это сколько-нибудь положительный или хотя бы оправдывающий пункт для обсуждаемой IDE.
промахнулся веткой, комментарий стёр
То есть вы утверждаете, что этот евангелист нарочно подсунул мне такой плагин в конфиг?:) Простите, трудно в это поверить:)
Это понятно, что испортить можно что угодно. Просто обобщенные IDE весят так много не потому, что они такие вредные или кто-то там вставляет sleep 10000
, а потому что они умеют много. Бесплатной функциональности не бывает, любая фича занимает место на винте, в памяти и процессорное время для своей работы. (Другое дело, что в VIM ты ставишь только то, что тебе нужно.)
Search&replace это хорошо, но если мне надо переименовать метод в одном классе, а в другом одноименный оставить как есть — это не search&replace. Для Python такая команда есть, ок, а для всего остального?
Для go тоже команда (см. комментарий выше), я думаю для большинства языков будет такая возможность.
А насчёт евангелиста, ну я к тому, что тот факт, что кто-то создал какой-то адски тормозной конфиг, не отменяет того, что у нормальных людей VIM при той же функциональности быстрее многих (а думаю, что и любой) IDE.
Плюс столько же времени грузится != настолько же тяжелый. Есть ещё потребление памяти, скорость работы и т.п.
у нормальных людей
Вот вы сейчас оскорбили совершенно вам незнакомого человека. Если бы я имел причины сомневаться в конфиге того человека, я бы не завел это обсуждение вообще.
при той же функциональности быстрее многих
Согласен. Однако функциональность еще не факт, что дотягивает, а скорость… ну запускается оно 10 секунд, а не 20 — погоды это не делает.
Нормального в смысле "среднестатистического", не хотел никого обидеть. Выбрал неудачное слово, прошу прощения.
Моя мысль была в том, что IDE жрут (как при запуске, так и во время работы) больше VIM, из-за чего на слабых и средних машинах работа с ними может быть некомфортной.
Ну, во-первых, я не обещал IDE для любого языка, я привёл аргументы почему с моей точки зрения VIM имеет преимущество, а IDE недостаток. Я уверен, можно сколотить подобный список, где конкретное IDE берёт верх над VIM (навскидку отсутствие необходимости в конфигурации, лёгкость входа, полная поддержка языка из коробки и т.п).
Но опять же, для большого числа языков, я убеждён, VIM можно нарастить по набору фич до IDE в вашем понимании.
Но опять же, для большого числа языков, я убеждён, VIM можно нарастить по набору фич до IDE в вашем понимании.Склонен скорее согласиться. Но будет ли он в результате *критично* быстрее этой IDE? Ну немного быстрее, ну фич почти хватает… шило на мыло.
на слабых и средних машинах работа с ними может быть некомфортнойНа слабых и средних машинах работа вообще не может быть комфортной:) Кроме редактора еще нужен браузер, а иногда и офисный пакет, не помешает музыка, ну и всякие там компиляторы-трансляторы тоже кушать хотят.
Прямо сейчас я могу поправить файлик на проде в VIM — закрыть баг костылем, что-то вывести в лог, поправить грамматическую ошибку, все это с подсветкой синтаксиса, с отступами, без тормозов. И это прекрасно! Но ставить 30 плагинов в надежде, что он догонит IDE и не будет тормозить — я оставляю другим:)
А что не так с аргументацией?
Откройте xml на 10-100MiB в одну строку. Хотя современный vim, вроде просто подсветку начинает отключать после скольких-то десятков килобайт в одной строке. До этого видел его уход в себя.
d=$(for (( i=0; i<1000; i=i+1 )) ; do echo -n '<test></test>' ; done)
for (( i=0; i<1000; i=i+1 )) ; do echo -n $d ; done > test.xml
Примерно 13 MiB выхлопа. Ну или наберите в vim'е 1000000i<test></test>
или 1000i<test></test>\[^y$$999p
, если не хочется ждать несколько минут.
Перемещение в конец строки, всякие w/b в конце строки тормозят адски на 7.4.
А есть, кстати, IDE, где не тормозит?
Любопытно стало, а что вас привлекает в VIM?
Вот чисто для примера w — это перемещение через слово, окончание iw обычно означает «слово», и d — удаление, v — визуальный режим (выделение), c — удаление и переход в режим ввода, далее фантазируем (на самом деле регулярно используемые комбо, которые под коркой отбиваются на автомате):
- diw — удалить слово
- ciw — заменить слово, что-нибудь набрав
- viw — выделить слово
p/P — вставка из буфера обмена перед/после, таким образом viwp — заменить слово тем, что в буфере.
Окончание i+кавычка или скобка — обычно означает всё, что внутри кавычек/скобок, таким образом не уходя от выше-приведённых примеров:
- di' — удалить всё что между одинарных скобор
- ci} — заменить всё, что внутри фигурных скобор, что-нибудь набрав
- vi) — выделить всё, что в пределах круглых скобок
Также взять числовой префикс повторений, Y — скопировали строку, и 10p продублировали её 10 раз.
Как видите, сказать о кол-ве «хоткеев» довольно сложно, у вас есть небольшой набор базовых рефлексов, которые могут свободно комбинироваться между собой.
Вроде особых проблем нет. Конкретно у меня проблема не возникла бы, ибо стоит плагин vim-visual-star-search.
ctrl+c, ctrl+f, ctrl+v
.Судя по этому: http://stackoverflow.com/questions/33629796/webstorm-11-multiline-button-for-search-replace-missing в IDEA тоже всё не так просто и только ctrl-f + ctrl-v не хватит, если вы собираетесь искать текст с переносами строк (как у автора в цитируемом вами посте).
ctrl+f
надо пару строк выделить мышью, чтобы многострочный режим активировать.Я просто не в курсе, как это делается в IDEA. Там пишут что-то про alt+m и т.п. Если всё происходит автоматически путём анализа буфера обмена, то вопрос снимается.
ctrl+f
открывается однострочное окно поиска, а для того, чтобы открылось многострочное, надо перед нажатием ctrl+f
выделить несколько строк. При нажатии сочетания выделенные строки попадут в окно поиска, где их нужно заменить на интересующий фрагмент.https://youtrack.jetbrains.com/issue/IDEA-145720
Сидел несколько лет назад, тогда правда 16гб не было стандартом нормального компа, это было 4-8Гб. NetBeans, Aptana, Eclipse — это нормальные IDE с вашей точки зрения?
P.S. После комментариев к этой статье, я увидел, что некоторые IDE, особенно от JetBrains, сильно продвинулись. Возможно, попробую их поставить и для себя сравнить их удобство с VIM. Но, как я писал выше, для некоторых моих задач просто нет такой опции "IDE".
Не совсем понимаю вашу проблему. Вы выступаете в роли администратора или разработчика? Во втором варианте, мне пока неясно, в какой ситуации вам надо в одном месте консолидировать код с 10-ти разных мест и что-то с ним делать. Такое ощущение, что у вас как-то не так деплой налажен, но могу ошибаться.
Ну мы обсуждаем преимущества и недостатки IDE и VIM для разработчика. Вы формулируете ситуацию, в которой с вашей точки зрения IDE удобнее. Я вам указываю, что ситуация нетипичная для разработки, более того, если я правильно понял, что вы имеете ввиду (правка кода на боевых серверах), противоречит общепринятым стандартам. Грубо говоря, удобство IDE в такой ситуации безусловный плюс, но относится ли это к делу?
простите но мне кажется вы в плену собственных «типичных» шаблонов и продолжать ломать копья тут нет смысла
В VIM есть неплохой плагин для TODO. VIM покрывает и этот функционал. Есть функционал календаря, и тоже неплохо работает. И т.д. и т.п… И да, это как-то отдалённо можно связать с разработкой (ведь разработчику надо где-то записывать задачи и планировать свой день), но это не имеет никакого отношения к дискуссии.
До того, как вы упомянули о озвученной функции, мне тоже казалось, что она не имеет отношения к дискуссии, т.к., мне казалось, не должно иметь отношения к процессу разработки. И под управлением проектом, я понимал что-то другое. Но я не истина в последней инстанции, безусловно. И в вашем, например, случае я ошибался. Если вам удобно так работать и IDE решает вашу проблему — то я очень за вас рад.
Отмечу только, что для VIM есть несколько плагинов для решения вашей проблемы (если, повторюсь, я её верно понял), вот например с видеодемонстрацией.
Например, помимо уже упомянутого переименования с учётом контекста (переменная i превращается в counter только в текущей области видимости, а не по всему коду), и в Eclipse CDT, и в Qt Creator можно выделить фрагмент кода и вырезать его в отдельную функцию. При этом IDE автоматически выведет необходимые параметры для функции и даст им имена, а также выведет тип возвращаемого значения, на месте же фрагмента кода появится вызов новой функции со всеми нужными параметрами. Ваш редактор такое может? (смайлик) На самом деле, редактор такое и не обязан уметь по определению, он всего лишь работает с текстом и не разбирается в том, что в каких-то языках есть строгая типизация, в каких-то нет, и в некоторых случаях можно попытаться угадать, что в данном месте можно написать, учитывая информацию из стандартной библиотеки, синтаксиса языка и видимости функций, переменных и классов в данной точке кода. Простая подсказка по аргументам функции сама по себе здорово экономит время и нервы, т.к. в хорошем коде по именам параметров и их типу уже ясно, что функция хочет. В документацию лезть приходится в разы реже.
Конечно, тут можно привести много контраргументов, например, можно выдавать подсказки по javadoc/jsdoc/phpdoc/etc., а если таковой док не написали, значит, программа/программист плохи, код не документирован и вообще, ваша проблема не в этом. Тем не менее, к хорошему быстро привыкаешь, как вы сами заметили, и хочется носить свой комфорт с собой. Как бы ни тормозили IDE, они тормозят с благой целью. Постоянно поддерживать актуальные знания о всём коде — не самое дешёвое занятие. Поэтому лучше проапгрейдить железо, переехать на SSD, но сохранить удобство понятливой IDE, чем мириться с отсутствием рефакторинга и банального поиска по коду с учётом языка. Например, нужно найти все вызовы метода run() у объектов класса SomeDataProcessor и только у них. Таких методов может быть масса у самых разных классов, включая системные, и редактор для этой задачи бессилен.
Так что я использую Vim по его первоначальному прямому назначению — для быстрого редактирования текстовых файлов, обычно конфигов. И с этим он справляется просто замечательно.
А для JavaScript?
Пользуюсь Idea, преимущество перед текстовым редактором — только в удобстве переименования переменных/функций.
В целом же, после обвешивания плагинами Vim/Sublime/Emacs получится та же IDE. Не факт даже, что более быстрая при той же функциональности, а скорее всего, менее функциональная, и причины этого я уже описал. Так что стоит ли овчинка выделки, каждый решает сам.
Для себя, как уже написал выше, я решил проблему использованием GWT, но понятно, что чаще всего, в случае коммерческой разработки в более-менее долгоживущей компании, выбор уже сделали за вас.
Что за язык?
Насколько я понимаю, вам поможет tern_for_vim или tern, интегрированный в YouCompleteMe.
Ого. Похоже JetBrains далеко ушли от "подставить все слова, что есть в файле, в autocomplete" в JS. И часто подобная "магия" срабатывает?
Джетбрейновские IDE настолько хороши, что ты их просто не замечаешь, я ни о чем не думаю и просто пишу код
Помнится на моей предпоследней работе меня пытались перевести на PHPStorm (до того около двух лет сидел на нем под свободной лицензией). Положил я мышку поближе, открыл проект, создал новый файлик для будущего класса, набираю, значить, «class », и ничего, IDE ставит мне табуляцию после ключевого слова. Ок — думаю я — забыл настроить. Залез в конфигурацию сниппетов, написал решение для генерации класса, сохранил. Радостно создал класс из снипета. Набираю дальше «pub» и ничего, IDE мне ставит пробел после pub. Точно уже не припомню, но вроде нашел плагин для автодополнения ключевых слов по пробелу. Довольный захожу в каталог models/Application/Services, создаю в нем файл MailService, открываю его и… IDE открывает мне пустой файл. Опять лезу в настройки, прописываю шаблон для php файлов, удивляюсь что шаблоны не завязаны на каталогах. Открываю файл для будущего сервиса повторно, а у меня там namespace не правильный. Злобно жму на клаве ":q", а IDE не реагирует. Ну и матерился же я тогда.
Помнится, на предыдущей работе меня пытались посадить за праворульную тойоту-электромобиль (до этого трактор беларусь водил)
Помнится на моей предпоследней работе меня пытались перевести на PHPStorm (до того около двух лет сидел на нем под свободной лицензией)
Только не понял, при чем тут :q в конце
Это я о привычках. Многие новички проклинают Vim за то, что в нем нет привычных команд. Вы в их числе? )
кстати, разве у него есть свободная лицензия?
Они раньше давали лицензию для Open Source проектов, не знаю выдается ли она сейчас. Вот у меня была такая.
вимовские паттерны вы и пытались применить к шторму
Что за вимосвкие паттерны? Сниппеты и шаблоны?
Кстати, трактор беларусь я не ругаю, никоим образом! Попробуйте легковой тойотой вспахать поле. ;) Вим — отличная штука. Шторм — отличная штука. Пользуюсь и тем и другим, счастлив и доволен.
Я не тот, кто с этим спорит )
Только вы начали со шторма, а закончили вимом
А есть разница с чего я начал и чем закончил? Многие плюются на Vim потому, что в нем нет привычных функций, я вот плюнул на IDE потому что в ней нет привычной комбинации. Что я сделал не так?
что был шторм со свободной лицензией
Шторм, за лицензию которого я не платил — скажем так )
каких-то очевидных действий от шторма, к которым привыкли в виме. Например, шаблон нового файла, снипет, и т.д.
Ну как бы да, я привык к тому, что в каталоге Modules/ у меня все новые файлы заполняются таким шаблоном, а в каталоге Services/ другим, и namespace правильно выставляется. Это паттерн Vim? А более менее умные сниппеты тоже только в Vim существуют? Сомневаюсь.
И о чем тогда ваш комментарий? О том, что ваше рабочее место оказалось с затертыми дефольтными конфигами?
О том что IDE из коробки этого не может, как и Vim.
Вы либо излагаете аргументы, а оппонент, пользуюясь общим с вами знанием человеческого языка и предметной области, их интерпретирует и отвечает контраргументами, или вы выдаете рандомные бессвязные фразы, и оппонет удаляется с поля брани
Это замечательно, что вы так полно излагаете свои мысли, но вы не можете ответить на мой вопрос, при этом ставите его во главу угла.
Но дефольтное поведение шторма — это не клик по «создать файл», после чего получается файл и в нем — магическим образом появляется определение класса
Я хочу магию, чтоб редактор знал что мне нужно в конкретном файле, конкретного каталога. Vim умеет, моя IDE (на тот момент) не умела. Так в чем проблема? Я плохой, что такое придумал?
никак не является паттерном шторма
Знаю, и это печально.
Поэтому я вообще не понимаю, как вы до этого работали на нем около двух лет, после чего сели за него же, и у вас ничего не получается
Так дело привычки, же. На Vim я привык к удобству и магии, а тут — на тебе, редактор без бубнов и плагинов не может даже файлик шаблоном заполнить. Не порядок!
Вим этого из коробки не может
Я о том и говорю что — тоже не может. Читайте внимательно, пожалуйста, мои комменты. Вы упускаете суть, а она важна.
. А вот ИДЕ как раз может из коробки создавать дерево файлов по вашим классам
Но не может заполнить файл шаблоном на основе каталога и сформировать namespace автоматически. И что это еще за дерево файлов по моим классам?
А можете повторить тот вопрос, который я поставил во главу угла и на который не ответил?
А есть разница с чего я начал и чем закончил?
откуда у вас между двумя периодами работы в шторме поивились неожиданные для иде требования
Шторм -> Vim -> Попытка вернутся в Шторм.
Не на вим, а на настроенном вим с тучей плагинов и непростым конфигом
Ну так себе утверждение конечно, но да, и Шторм надо настраивать, и Vim. Почему многие приводят необходимость настроки среды разработки под себя, как некий минус этой среды?
Ну, просто дело делается не так, как для вас логично. Так и вим может работать не так, как кому-то логично
Не столько логично, сколько — Удобно. Зачем мне заполнять в Шторме имя класса, его namespace и т.д., если Шторм может это получить из файла и его расположения. Понимаете к чему я веду?
так уж совпало, что мои ожидания не были испорчены тем вим-плагином
У вас испорчены, у меня улучшены. Для вас есть только одна модель создания и заполнения класса, для меня их множество (контексто-зависимые). Видите, IDE вам диктует правила работы, а я свободный человек )
Если другие преимущества перевешивают это неудобство, то почему бы и не переучиться?
Да я прекрасно умею пользоваться Штормом. Переходить стоит от того, что IDE знает язык, на которым я пишу, а Vim нет, это серьезное отличие, особенно для человека, который пилит инструмент под себя.
Может, работодатель заставляет?
Все пытались, но не заставляли.
Речь о PSR-4.
А зачем это вообще может быть нужно? В смысле вы создаете классы, а IDE вам их по папкам расскидывает?
это, по моему замыслу, поясняло разницу.
нисколько
Но еще раз о разнице: настройка иде — клики по галкам, настройка вима — плагины, конфиг, перезапуски, отладка конфига
Таки да, Vim не слишком графический редактор )
Т.е. удобно то, что привычно, что первое
Удобно это еще когда — захотел и сделал.
А где видно, что у меня только одна модель создания и заполнения класса?
Ну так — нажал «Создать класс», заполнил пару полей, доволен. Есть еще варианты в Шторме без подключения плагина?
Кстати, отверка вам диктует, как ее держать и как винтик крутить — вас это не напрягает?
Когда напрягает, я ищу подходящий инструмент.
А вим вам диктует модальность — не напрягает
Что за модальность такую диктует Vim?
Не напрягает — потому что привычно, а привычное — удобно
А еще привычное имеет свойство отрицать лучшее. В некоторых деталях это может быть важно.
В таком случае не ясно, почему возникли проблемы, и вы «матерились же тогда»
Так я же написал почему, перечисленного мной не было из коробки, а не из коробки я мог и Vim настроить.
Есть общепринятый стандарт
Давайте исключим слово — общепринятый — хорошо? )
Строго говоря, с точки зрения стандарта: рекурсивно создаете директорию неймспейса
Так дело не только в неймспейсе. Я, к примеру, хочу определенный шаблон для тестовых классов, классов моделей, контроллеров и сервисом.
Хабр — не лучшее место для приобретения навыков?
Хабр это место, где тебе могут слить карму за то, что ты идешь против модного, современного, молодежного. Вы об этом не знали? Будьте в курсе. Если вы хотите приобретать навыки, то читайте статьи и общайтесь с коллегами, комментарии на хабре не лучшее место для этого.
Ну ок, как я понимаю, вам важнее ЧСВ, нежели диалоги. Дайте мне уже тогда конкретное решение тех тасков, что я привел в моем первом комментарии этой ветке. Не отмазки типа — а в IDE этого не нужно, это ваши шаблоны — а конкретное решение для IDE или Шторма (если вам так угодно). Это мой use case и я хочу чтоб это так работало.
Вы сводите хабр к карме?
Слейте себе карму в -50, а потом напишите мне в комменты, что есть хабр, ок?
На счет настройки вашей иде
Слив засчитан. Наверно дело было в том, что " в огороду бузина, а в киеве дядька", верно? ))
А самое интересное во всем этом пустом диалоге то, что когда пользователь Vim говорит — мне это в редакторе не нужно — ему отвечают — не нужно потому что Vim не умеет, ахаха — но когда чего либо не умеет IDE (не умеет от слова «мастер не способен заточить инструмент»), то это проблема пользователя, а не IDE, это он плохие таски ставит перед инстументом )) Я не желаю продолжать больше этот монолог, он не имеет смысла и не несет для меня никакой пользы. Вам счастливо зарабатывать по 100 у.е. в час ;)
Если бы вы сказали, что идея со включеным эмулятором вима лучше чем просто вим, или что блокнот лучше вима, потому, что там не надо переключаться между режимами — было бы понятно что вы имеете в виду.
А так ваша аргументация сводится к тому, что IDE лучше текстового редактора. Не обязательно вима, а вообще любого.
VIM: зачем, если есть IDE, и как?Я может быть и сравниваю, но не я это начал :) И в первом своем комментарии, я указал на то что сравниваю я в контексте написания кода.
А так ваша аргументация сводится к тому, что IDE лучше текстового редактора. Не обязательно вима, а вообще любого.Именно так, для написания кода в большом проекте — IDE лучше текстового редактора. Не обязательно вима, а вообще любого. Только приверженцы вима и емакса больше других склонны спорить с этим утверждением.
Определением конечно можно поиграть и обратить внимание на то, что у вима вообще проблемы со словом бекграунд, но по моему они не то чтобы очень принципиальны в данном случае.
— выделить абстрактный класс с общим функционалом
— перетащить общий функционал в класс-предок
— вынос константы
— вынос переменной
— вынос куска кода в виде функции
Пишу на JavaScript. Использую SublimeText 3 (не Vim, но и не IDE). В последнее время немножко вожусь с кодом на Scala. Учитывая как долго эта дурь компилируется мне чертовски не хватает IDE фич, вроде умного autocomplete, подсказок по наведению на слово, подсветки грубых и не только ошибок, jump to definition и т.д… Я понимаю, что в рамках инфраструктуры Scala, мой текстовый редактор попросту каменное орудие. В то время как существуют такие IDE как Idea.
Насколько я понимаю, используй я не ST3, а Vim или Emacs, я бы точно также чувствовал себя словно пещерный человек. Такие языки просто генетически предрасположены к синтаксическому анализу и соответствующим возможностям. А вот на JavaScript-е писать да, и Vim и ST3 и Emacs и что-нибудь более модное типа атома, это просто вкусовщина. Чуть завернул какой магии сложнее 2+2 и IDE сдулась :)
Вы ими пользовались? Просто подобные штуки есть и под Sublime. Я пробовал ими пользоваться. Удалил через 5 минут. Жалкая пародия на IDE. Оценить конкретно эти плагины не могу, т.к. я из категории тех людей, которые случайно открыв Vim, потом 10 минут разбираются как его закрыть :) Хотелось бы услышать мнение о работе этих плагинов для Scala, C#, Java, C++ и пр.
Посмотрел на Tern для ST3. Jump To Definition, просмотр документации и rename в простых случаях умеет. Это конечно не IDE, но уже что-то. Спасибо за наводку.
В IDE я могу сделать пошаговую отладку, заглядывая на каждом шаге в регистры процессора и это иногда очень важное и необходимое действо. Возможно ли в Vim'е сделать подобное? Ну и выше уже писали про умный рефакторинг кода с автоматической вставкой отрефакторенного
… именно поэтому у моего коллеги VIM отъел больше 2 гб озу, где-то как мой Eclipse. Я уже молчу про то, что в современном мире это не имеет никакого значения.
> IDE обычно поддерживает небольшое число языков/платформ.
Большинство программистов работает с весьма ограниченным стеком языков.
> Vim может работать в режиме только консоль.
Спасибо, у меня есть Remote Desktop. Да, я не админ, всего лишь программист.
> Сама идеология Vim — очень мощная штука в сравнении с классической IDE. Есть книга Practical Vim: Edit Text at the Speed of Thought, её название («редактируй текст на скорости мышления»)
Я думаю медленее, чем печатаю. Хотя, конечно, можно просто сказать, что я плохой программист. Я уже молчу о необходимости чтения специальных книг по редактированию текста, вы серьёзно вообще? Некоторые неплохие программисты даже печатать вслепую не умеют…
> С Vim вам не понадобится мышь, если вы конечно этого захотите.
Мышь чертовски удобна для скролла по файлам и перехода в нужное место. Я не понимаю в чем профит от НЕиспользования мыши: когда ты набираешь код, то обычно ты вбиваешь один большой последовательный блок, ± пара линий вверх-вниз (стрелочки). В остальных случаях мышь не является тормозом.
> Vim невероятно расширяем, любая ваша хотелка так и или иначе реализована или может быть реализована в Vim.
Опять же, я, наверное, плохой программист, но я хочу, чтобы инструмент работал из коробки (настроить только хот-кеи/форматирование кода).
> Ваша конфигурация для VIM вообще без труда переносится с машины на машину. Будет ли так просто с вашей IDE?
Да. Все современные IDE поддерживают иморт/экспорт настроек. Но как я упомянул выше, настройка занимает минут 15, так что можно если что настроить с нуля.
У меня на работе куча народу пользуется VIM, но как по мне это до ужаса неудобно. Каждый раз сердце кровью обливается, когда человек вбивает команду в консоли, чтобы открыть файл или добавить его в чендж лист. Или вбивает команду, чтобы проскроллить файл. Так что сейчас, в 21-м веке, я предпочту пользоваться благами цивилизации (IDE).
Или вбивает команду, чтобы проскроллить файл
Это что за команда такая? :normal j?
Каждый раз сердце кровью обливается, когда человек вбивает команду в консоли
Знали бы вы как я страдаю, когда вижу дергание рук между FJ и мышкой/тачпадом.
> Знали бы вы как я страдаю, когда вижу дергание рук между FJ и мышкой/тачпадом
Руками двигать полезно :) Ну и я не понимаю, в чем выигрыш от вбивания имени файла (которое еще и забыть можно) в отличие от выбора файла в дереве мышкой. Опять же, навигация и кодинг — более-менее разделенные процессы. Мне весьма редко приходится одновременно редактировать десяток файлов.
Руками двигать полезно
Не особо, если это отвлекает от процесса набора текста.
от выбора файла в дереве мышкой
Как правило (как правило!), один каталог проекта может содержать десяток файлов и папок, и чтоб выбрать нужный файл мышкой (или не мышкой), нужно сначала найти этот файл в списке. Сделать это можно путем последовательного чтения всех файлов (можно мышкой двигать сверху вниз, чтоб не сбиться, а можно стрелку вниз или j нажимать) или набрав какую нить поисковую команду. Заслуги IDE или редактора тут нет, кому как привычнее.
Мне весьма редко приходится одновременно редактировать десяток файлов
Мне постоянно приходится это делать. Как правило это четыре типа файла: Модель, Контроллер, Шаблон, Библиотека. Удобно, когда каждый в своей вкладке, а вкладки могут делится на подвкладки.
Ctrl+end, ошибся. Стандартный шорткат перехода в конец файла (ну, кроме особых программ вроде вима).
> Не особо, если это отвлекает от процесса набора текста.
Когда я выбираю файл, я не набираю текст.
> Как правило это четыре типа файла: Модель, Контроллер, Шаблон, Библиотека.
Для этого есть табы (вроде есть даже хоткеи для перехода по ним, хотя я обхожусь без них обычно).
Ctrl+end, ошибся. Стандартный шорткат перехода в конец файла
В Vim проще, для этого есть shift+g.
Когда я выбираю файл, я не набираю текст
Вы мышкой пользуетесь только для выбора файла? Похвально, вам осталось совсем чуть чуть ;)
Для этого есть табы
Да, я знаю. Замечательная штука, не правда ли?
Если вы в режиме нормал, то Shift-G, да
А зачем вам прыгать в конец файла в режиме insert? Вы перешли в insert mode, набрали текст, вышли из него, пошли гулять по файлу. В Vim так принято работать.
Я к тому, что в вим не проще — в разных режимах по-разному, и у вас не получится учить режимы отдельно, т.к. для работы нужны практически все они
Мне кажется, вы просто не привыкли к режимной модели Vim, потому вы пытаетесь серфить по файлу в insert mode, что не есть хорошо.
А вот Ctrl-End — универсальный шорткат для для любой текстовой области в любом вин-приложении
Да, если я сейчас сяду за блокнот, то мне будет очень неудобно. Но блокнот и рефакторить не умеет, так что теперь, не пользоваться благами IDE? Так себе аргумент.
А Ctrl-End — универсально везде
У меня Vim везде.
А я новичок
Когда я говорю, что «в Vim проще», я не имею ввиду новичков и кривую обучения.
Я только сказал, что на вопрос «как мне переместиться в конец файла?» вимер должен дать ответ в контексте режимов
Совершенно верно.
Можно научиться, конечно, но почему бы не воспользоваться своими же бест практисес из программирования и не перестать множить сущности, начать повторно использовать скилы?
От того, что некий антипаттерн все повсеместно используют, я не начну им так же повсеместно пользоваться. Все просто.
И второе явно не «проще» первого, потому что упоминает еще и концепция режимов
Не путайте кривую обучения и простоту.
Кривая обучения — это как просто изучить нечто
Простота — это как просто пользоваться тем, что уже изучено
Но, думаю, если бы вы имели в виду именно эту простоту, то так бы и сказали четырьмя комментариями выше
Да именно это я и подразумиваю под простотой.
Не только. Речь не о мышке, а об интеграции: в текстовом редакторе нет дерева файловой системы, нет интеграции с контролем версий, нет интеграции с билдом и тестами, нет подсветки синтаксических ошибок, нет интеграции с дебагом, нет языко-зависимого рефакторинга. А если вы каким-то образом добились всего этого в VIM c помощью дестяка-другого плагинов (не буду врать, не знаю, насколько это возможно), то поздравляю, вы собрали кривую IDE на коленке с VIM-mode вводом текста.
вы собрали кривую IDE на коленке с VIM-mode вводом текста
Разница между моей IDE и любой другой в этом случае будет в?
количестве потраченных на неё человеко-часов
В Vim за десять минут можно поставить все нужные для работы плагины (если знаешь что ставить и как они работают).
общей продуманности
А поконкретнее?
Ну и предложенные мною фичи в виме выглядят весьма утопично — все мои коллеги, которых я видел в процессе работы
Ну это проблема ваших коллег на самом деле.
Давайте вы мне покажете приличный, по вашему мнению, сетап ИДЕ на основе вим
Что еще за «сетап ИДЕ»? Vim не умеет понимать код, он в принципе не может быть IDE. Если с вами об этом начнут спорить, смело обвиняйте человека во лжи.
а потом сравним с любой ИДЕ от JetBrains, например
Не надо сравнивать Vim с решениями от JetBrains, поверьте, Vim и JetBrains это как камень и камень с мозгами. Совершенно разные вещи.
Хотя я подозреваю, что половину функциональности невозможно обеспечить в принципе
Знаете как в песне поется — фсе возможно, после долгих ночей возможно. Так же и в Vim.
Ну и в любом случае с каждым плагином теряются все те преимущества
Куда это они теряются?
> Что еще за «сетап ИДЕ»?
Вы сами себе противоречите. Написали же о каких-то плагинах, которые добавят все фичи, которые имеются в нормальной ИДЕ. А теперь выясняется, что нет ничего такого.
> Совершенно разные вещи.
Одна из которых полностью заменяет другую.
> Куда это они теряются?
Редактор становится тяжелее, он уже не работает одинаково со всеми языками. Какие еще там «киллер-фичи» остались?
Вы сами себе противоречите. Написали же о каких-то плагинах, которые добавят все фичи, которые имеются в нормальной ИДЕ
Вы выдаете желаемое за действительное. Я повторю то что написал — В Vim за десять минут можно поставить все нужные для работы плагины
Делается это достаточно просто, ставите какой нить менеджер плагинов, затем скачиваете или заполняете нужные вам для работы плагины (кроме плагинов, завязанных на семантическом разборе кода, под Vim есть все) и ждете пока менеджер их установит. Радостно пользуетесь.
Одна из которых полностью заменяет другую
Ну кому как, я вон выше уже писал о моих проблемах в IDE. Не заменило, а ведь хотелось, и до сих пор не против перейти.
Какие еще там «киллер-фичи» остались?
normal mode
Я полностью согласен с тем, что несомненным плюсом Vim является легковестность, большое число поддерживаемых ЯП, расширяемость. Возможно (сам не пользовался), там можно редактировать и набирать текст с огромной скоростью (хотя я упираюсь в скорость печати).
Но IDE есть IDE. Сам я пишу на C#, использую Visual Studio. Да, она занимает черт знает сколько места, запускается черт знает сколько времени и вообще чертовски тяжелая. Но она, как и другая "средняя IDE" позволяет делать следующий, очень удобный набор функций:
- Умный автокомплит, который показывает существующие классы, методы, втч написанные мной, сигнатуры методов с описанием из метаданных
- Аналогичная умная подсветка, которая понимает, какое слово чем является
- Переход к определению, при этом во всем проекте (Sublime умеет в рамках одного файла)
- Показывает сколько раз и где метод\класс используется
- Рефакторинг
Все это настолько удобно, что я готов смирится с прожорливостью IDE, и, к сожалению, не реализуемо в не-IDE
Это уже было бы вредительство, поддерживать на плаву архаичные инстурменты разработки
Тобишь поддерживать на плаву надо только то, что модно, современно, молодежно?
Все же не понял, как вы разделяете полезную и бесполезную работу.
Я бы вообще запретил вести разработку на чём-либо мощнее самой распространённой конфигурации железа на данный момент минус 5 лет. Потому что продуктивность работы пользователя программы ещё более важна, чем продуктивность программиста.
Возможно, тогда современный веб был бы действительно удобным, а не специальной олимпиадой «кто быстрее сожрёт батарею ноута говённым джаваскриптом с 3 фреймворками и HD видео на фоне»
Возможно, тогда бы
Возможно, тогда мы бы не возвращались стремительно во времена DOS, когда люди работали одновременно только с одной программой (тогда — потому что не было многозадачности, сейчас — потому что тормозит — некоторые программисты же верят в закон Мура и в то, что у пользователей денег куры не клюют на покупку мощного железа)
И ведь тормозит нещадно.
Там даже кастомных GUI контролов нет, на кой чёрт там HTML+CSS+JS?
А вот это как раз большой плюс, полная свобода в интерфейсе. Плюс можно в теории иметь еиную кодовую базу для веб приложения и десктопного.
Дело тут совсем не в инструменте, а в людях и их привычках.
у них даже не было привычки форматировать свой код по единому стандартНу для вас, как пользователя IDE это никак не должно стать проблемой — в любой IDE есть кнопочка для форматирования кода по выбранному стандарту.
С моей точки зрения если человек пишет код в блокноте, но при этом код нормальный, читаемый и вовремя написаный, то все равно как его пишут.
В вашем профиле указано, что вы занимаетесь FPGA. Вы синтез запускаете на синтезированном MISP или всё-таки на мощном современном x86_64 с 16+ GiB RAM?
В компьютерах производительность — эффективное использование процессорного времени и памяти. В FPGA производительность — эффективное использование чётко предопределённого количества логических ячеек.
Я бы вообще запретил вести разработку на чём-либо мощнее самой распространённой конфигурации железа на данный момент минус 5 лет.
такая же глупость, как и требовать разрабатывать, например, для mips на mips'е или для FPGA на FPGA. Вы кстати, разрабатываете на celeron из поколения core 2 с 2 GiB RAM?
Поэтому я знаю, что если оно не тормозит у меня, то не будет тормозить ни у кого, даже на тех тонких клиентах с Atom Nxxx, для которых мне частенько приходится делать программы с GUI, и на которых поделки на Qt QML, которые делал мой бывший коллега, выдают FPS около 1 кадра в секунду (нет аппаратного ускорения графики).
Это пока пользователь не поставит какой-нибудь тяжёлый антивирус и софт не уйдёт в своп. И это не повод разрабатывать и отлаживать допотопными средствами на древней конфигурации. Это повод делать performance тесты на целевых машинах.
Как я уже сказал выше, целевые системы бывают разными. И отлаживать приложение, которое планируется использовать на сервере, на "самой распространённой конфигурации железа на данный момент минус 5 лет" — глупость.
плагины поддержки vi modes
Брр… Не упоминайте, пожалуйста, об этих треугольно-колесных костылях.
как и для комфортной разработки ПО вообще
«мощная» == «с как можно бо́льшим кол-вом RAM и как можно более быстрой долговременной памятью»
Ну я в посте привёл пример, как можно обойти эту зависимость с помощью VIM (записал наличие такой возможности в преимущества). Ваш компьютер — тонкий клиент к мощному серверу. На нём всё летает (тесты, компиляция и т.п.) и много памяти. Локально только ssh и браузер. связка рабочая и комфортная, проверено на себе.
А что, если не создавать IDE с ноля, а написать плагин для существующей IDE?.. Да ну, глупости какие, никто так не делает.
Такой подход тоже возможен, но я почему-то чаще вижу плагины для VIM'а (или другого редактора), но не плагины для IDE (применительно к редким ЯП или редким системам). Очень интересно будет увидеть плагины для IDE (хотя бы для подсветки синтаксиса, хрен бы с обработкой ошибок и прочим) для систем компьютерной алгебры GAP и Magma, упомянутые в посте. Ну и для Sage тоже, чтобы установил что-то и завелось.
Это же ведь только vim весь клавиатурно-ориентированный, откуда тупым разработчикам ненужных IDE знать, что программистам может быть удобно не пользоваться мышью. А 54 страницы действий, доступных для биндинга, плагины поддержки vi и emacs modes, поддержка биндинга на две последовательные комбинации клавиш для тех, кому не хватает всей клавиатуры (в IDEA, по крайней мере) — это… это агония, вот!
Мой опыт работы в VIM и обощённых IDE говорит о том, что работа без мыши в VIM комфортнее. Но я как я отмечал в посте, такие вещи — вкусовщина чистой воды. Кому-то комфортнее без мыши в IDE. Конкретно про VIM, то я думаю, что связано это моё удобство с тем, что VIM изначально затачивался на работу без мыши, а для IDE работа без мыши — некоторая отдельная фича. Ну и по мне, так сложнее запомнить 54 страницы горячих клавиш, чем запомнить ограниченное число действий VIM, которые повторяются в различных вариантах.
Всем известно, что обратной дороги из IDE нет: к пользователям IDE, дерзнувшим воспользоваться блокнотом, на дом выезжает наряд полиции IDE (два огнемётчика и собака; собака внимательно слушает ваши оправдания перед тем, как огнемётчики начнут вас запекать).
Такое ощущение, что вы очень выборочно читали то, что я писал. Как только вы воспользовались блокнотом после IDE, у вас в арсенале оказались два инструмента, которые надо использовать и осваивать. Дальше вам нужен ещё один ЯП, и под него вам нужен третий инструмент. Никакой крамолы в этом нет, но пользователю VIM не понадобится три инструмента для трёх задач (хотя могут понадобится 3 разных плагина), я считаю эту унификацию, которую можно достичь с помощью VIM преимуществом. А вы?
Вопрос не в цене. Вопрос в том, зачем что-то делать, если можно этого не делать? Конкретно работая в VIM я могу себе позволить не думать о железе 10 (прописью, десять) лет. Т.е. в течение 10-ти лет мой выбор VIM в качестве основного инструмента разработки позволяет забыть о такой проблеме, как вынужденное обновление рабочей станции (конкретно в моём случае, ноутбука). На мой взгляд, это преимущество. Им можно пользоваться или нет, но это другой вопрос. Или вы не согласны?
Насчёт JetBrains, я выше писал, что я ушёл с IDE, не попробовав продкты JetBrains (если не ошибаюсь, они стали по-настоящему популярны только в последние годы), поэтому, действительно, допускаю, что многое стало сильно лучше.
А по поводу полиции IDE, я не до конца вас понимаю, вы считаете, что существует IDE, которая поддерживает всевозможные ЯП? Или, что существуют две, которые в сумме покрывают весь спектр? Или хотя бы столько, сколько поддерживает VIM? Потому что, если это вдруг не так (моя ставка), то я подберу вам 3 ЯП, для которых надо будет 3 IDE.
Ну а вообще, судя по тому же JetBrains, то на каждый ЯП своя IDE.
Ну а вообще, судя по тому же JetBrains, то на каждый ЯП своя IDE.
Вы ошибаетесь, все JetBrains IDE это одна и та же IDE просто с плагинами для каждого языка (можно поставить и просто плагины в Idea). У неё одинаковые горячие клавиши, вид редакторов, почти одинаковые меню и т.д.
существует IDE, которая поддерживает всевозможные ЯП
Вообще все возможные или более-менее популярные? Вряд ли есть Vim плагин вообще для любого ЯП на Земле.
Скажем, JetBrains IDE официально поддерживает C#, C/C++, Groovy, Java, JavaScript, TypeScript, Kotlin, Objective-C,
PHP, Python, Ruby, Scala, SQL, Swift, DSL. Можно найти open-source плагины для go, erlang, rust, haskforce, elm, Perl5, Cypher, Dart, haxe, OGNL, Squirrel, Bash, Lua, Nim и много-много других (> 180 штук). На крайний случай, можно взять и сделать свой плагин, это относительно несложно.
Уверены, что в Vim'e больше плагинов и лучшего качества? Не стоит мериться плагинами. ИМХО, в Idea их тоже дофига.
DSL
Какой именно?
Поддержка rust'а в идее недавно была на уровне подсветки синтаксиса и запуска cargo. Если вдруг сегодня вышли новые версии rust и oxidize плагинов с поддержкой автодополнения (не в рамках одного файла) и go to definition — дайте знать. Вчера, когда сносил эти плагины, этого функционала ещё не было. В случае же vim, emacs, atom/vscode — оно есть через ycmd.
Какой именно?
Разной, см. офф сайт JB и страничку с плагинами: Anko DSL, Coocoo DSL, DSL Platform, Tara DSL и т.п…
плагинов с поддержкой автодополнения (не в рамках одного файла) и go to definition
Вы же понимаете, что так сравнивать можно бесконечно. Все ли из 180 ЯП из плагинов Idea реализованы в Vim (есть какой-нибудь К или Fantom ?), везде ли автодополнения Vim'a настолько же интеллектуально как в Idea (в частности Java, JavaScript, PHP)? Это уже вкусовщина, тем более что ни вы, ни я не сможем досконально сравнить сотни плагинов для Idea и Vim'а. Как минимум, кол-во плагинов популярных языков достаточно велико в обоих случаях.
Разной, см. офф сайт JB и страничку с плагинами: Anko DSL, Coocoo DSL, DSL Platform, Tara DSL и т.п…
Это было намёком, что DSL приводить в списке general purpose языков несколько странно.
Другая же часть касалась того, что значительная часть плагинов поддержки языков для идеи — реализованы также или хуже чем в vim'е. И если не рассматривать поддержку массовых языков, фреймворков на них и библиотек сериализации (всякие avro, protobuf) — то эти ">180" плагинов в среднем просто пшик.
Поддержка немассовых языков хромает везде, но в моей практике в случае vim'а она оказывалась лучше в нём, нежели в идее.
Вероятнее всего потому, что база пользователей vim'а, способных реализовать такую поддержку банально больше.
P. S. разрабатываю в основном в идее и смежных продуктах (rubymine, pycharm).
До того, как JetBrains-овские IDE стали действительно мощными и удобными (ну и IdeaVIM не стал достаточно юзабельным, хыхы), я сам пользоватся vim-ом и считал, что IDE мне не нужны.
Но если у вас вдруг появилось немного времени на повышение вашей эффективности в целом, то попробую вас заинтересовать именно Vim'ом
Ну вот мне и интересно как предполагаемые члены команды автора восприняли его методы повышения эффективности. Я полагаю он уже убедил команду и решил идти дальше так сказать проповедовать.
Вообще, если смотреть внимательно на скриншот — человеку не только в команде не работает, он еще и делает проекты — самоделки с коротким жизненным циклом. Вобщем он сам себя проклял вечной поддержкой своих исодников в одиночку.
Парное программирование — шутите?
Черезмерное обилие коментариев и одно окно — укзаывает на простую вещь — тестов нет (т.е. идеология когда тесты как документация к системе). В той-же Java переход от кода к тесту выполняется в 1 шорткат (это при том, что тесты расположены в совсем другой части файловой системы).
К сожалению для вас, всю вашу спесь и желчь вы изливали не на того человека. Быть может даже автор того, что на снимке экрана, вовсе не пишет в VIM (хотя что это я?! Конечно же пишет — он автор vim-go).
Возможно, вы редко встречаетесь с Open Source, но в этом мире принято документировать свои "самоделки", особенно, если это библиотека, предназначенная для использования сообществом. Конкретно на скриншоте — главный файл библиотеки color.go, у которой 932 звезды и 74 форка на гитхабе, много ли ваших проектов в той же степени заинтересовали сообщество?
По остальным претензиям к этому снимку экрана, замечу, что "короткий жизненный цикл" на данный момент превышает 2.5 года, на протяжении которых совершаются регулярные коммиты, а поддержку исходников автору помогают осуществлять ещё 11 программистов, согласно статистике репозитория. Тесты, конечно же, есть.
Этот чужой снимок экрана я привёл потому, что на нём: автодополнение с учётом семантики, структура файла и докментация к слову под курсором.
По всему остальному вашему комментарию: удобные коммиты есть, рефракторинг есть, автодополнение и, следовательно, длинные имена переменных есть.
Обычно в команде важно, чтобы подойдя к соседу, сев за его компьютер ты мог исправить что-то в программе.
Для того, чтобы это работало — нужно чтобы у всех была одинаковая IDE & клавиатура и трекпад.
Ни разу за 20+ лет с таким не встречался. Обычно правило — стандарта нет, каждый пользуется тем, что ему больше нравится.
Надеюсь, в одинаковой одежде всем ходить и корпоративные гимны по утрам петь не надо?
Больно бы ударил того, кто попробовал бы подойти и на моем компьютере что-то исправить.
А зачем рассказывать про gdb и ldd, когда существуют удобные надстройки над ними в виде IDE?
> Намного проще человека галантно попросить поделиться клавиатурой и разобраться самому, что оно не так.
Увы, это не так. Да, можно быстро решить чужую проблему самому, но это нисколько не поможет джуну в дальнейшем решить аналогичную проблему из-за того, что вы лишаете его таким образом драгоценного опыта.
Ну а если специфика работы требует использования именно vim и gdb — придётся смириться с тем, что порог вхождения в них высок по сравнению с IDE, и нужно либо набирать разработчиков, умеющих с ними эффективно работать, либо потратить 2-3 месяца только на одно обучение и выработку автоматических навыков.
Если уж взяли джуна, то надо «задалбываться», рассказывать и учить.
У вас какое-то очень странное представление о том, как в VIM работать с несколькими файлами, или с проектом с развитой структурой. VIM сам по себе достаточно удобен для работы со многими файлами. А с помощью плагинов он может ещё больше: от банального древовидного каталога и выбора файла с помощью чего-то типа NERDTree:
до совершенно бесподобных штук с нечетким поиском типа fzf или ctrl-p:
Во втором случае, открытие другого файла мгновенно, и никакая IDE без аналогичного функционала (или с любым "мышечным" способом открытия файлов) не сможет соревноваться с VIM в этом вопросе.
Ну это надо не забывать, ещё про такие штуки как go to definition и перескачка между файлом и соответствующим тестом, quickfix с ошибками или упавшими тестами (т.е. открытие нужного файла на позиции ошибки) и т.п. Всё это в VIM есть и очень удобно.
А «бесподобно» — это все же перебор. JetBrains-овские IDE умеют то же самое, причем и по файлам, и по именам классов-интерфейсов. Срабатывает все моментально. Мышку же я вообще не трогаю, зачем? Один раз пробил все хоткеи, как мне удобно, и отключил к чертям все тулбары с менюшками.
и никакая IDE без аналогичного функционала (или с любым «мышечным» способом открытия файлов) не сможет соревноваться с VIM в этом вопросе.
Я правильно понимаю, что вы что-то типа такого имеете в виду?
На самом деле основное для меня — это именно редактор. По сравнению с вимом штатные все-таки совершенно беспомощны
В посте я приводил возможные причины:
- физическая привязка к оборудованию удалённого сервера (например, GPU)
- удалённый сервер мощнее и там комфортнее работать
- на удалённом сервере всегда открытая рабочая сессия, доступная со всех устройств.
после переходу на vim мне не хватало автодополнений. Искать плагин времени не было как и разбираться как заточить vim под php. Пришлось просто вспомнить. Как оказалось, я очень много функций знаю наизусть, как впрочем и css правил. Но это я чисто про себя. Понятно что не всем это подходит.
http://vimcasts.org/episodes/ — 68 видео на данный момент.
VIM: зачем, если есть IDE, и как?