Сегодня вышел текст о том, как человек перешёл с Sublime на VIM. В комментариях, как обычно это бывает, появились сообщения в духе "Зачем мне тратить время на Vim, если есть IDE, где всё работает?" (люди даже статьи на эти темы пишут). Хотел внести свои пять копеек, но объём написанного плавно перевёл текст из разряда "комментарий" в разряд небольшой статьи.
В целом, всё, что ниже — это вкусовщина, конечно. Нравится вам ваша IDE (или ваш текущий инструмент), да и пожалуйста. Используйте для текущих задач то, чем вы владеете лучше всего, это аксиома эффективной работы. Но если у вас вдруг появилось немного времени на повышение вашей эффективности в целом, то попробую вас заинтересовать именно Vim'ом, сравнивая его с некой обобщенной IDE.
Зачем?
На мой взгляд минусы любой IDE в сравнении с VIM (или, наоборот, преимущества VIM) следующие:
- IDE значительно тяжелее VIM (даже с плагинами); отсюда очевидный минус, что для IDE — нужна достаточно мощная рабочая станция.
- IDE обычно поддерживает небольшое число языков/платформ. Vim же единообразно поддерживает всё на свете. В Vim я пишу на Ruby/Rails, Python (или так), C, OpenCL (+PyOpenCL), CUDA (+PyCUDA), bash, Go, XML, YAML, HTML, Markdown, Textile, CSS, .ini, Sage, Magma, GAP (последние 3 — системы компьютерной алгебры), LaTex, а также редактирую специфические конфиги некоторых программ (типа X, mutt и т.п.) и редактирую почту. Конфиги и почта — это специфический пример, но, что касается языков программирования и разметки, то вам понадобится осваивать несколько IDE со своими особенностями, горячими клавишами и т.п. только потому, что IDE обычно имеет узкий круг поддерживаемых технологий. Vim (как и Emacs) умеет почти всё, и вам не надо заново привыкать к инструменту. Кроме того, создателю плагина надо сосредоточиться только на том, чтобы хорошо сделать поддержку специфических для ЯП вещей, а всё остальное Vim уже умеет. Как следствие, при переходе от одной технологии к другой (условно, сегодня пишете на Ruby, завтра на Python, а потом обратно), вы не лишитесь привычных базовых вещей, как это могло быть при смене IDE, т.к. останетесь в Vim.
- Vim, как следствие из предыдущего, поддерживает вещи, которые никто другой не поддерживает: попробуйте найдите IDE для Magma. А для Vim всё есть. Объясняется это тем, что для редких вещей создавать IDE неоправданно, а написать базовый плагин для Vim не так сложно.
- Vim может работать в режиме только консоль. Иными словами с Vim ваш компьютер может быть тонким клиентом. Конкретно в моём случае есть 10-ти летний Full HD ноутбук IBM'овский. Ясно, что его уже на нормальное использование как рабочей станции для программирования не хватает ну никак: тесты на нём будут идти вечность, а упомянутые IDE будут ощутимо тормозить. В тоже время есть доступ по ssh к мощному серверу, на котором в результате и ведётся разработка: гоняются тесты, работает редактор и т.п. Кроме того, связка vim + tmux + ssh — это постоянно открытая рабочая сессия. Начал работать на одной машине (к примеру, на работе), отлогинился не закрывая редактора и т.п., продолжил из дома с ноутбука — чрезвычайно удобно. А в моём случае, так ещё и для некоторых задач основное вычислительное оборудование (несколько GPU) физически воткнуто в сервер, т.е. помимо удобства, описанного выше, быть тонким клиентом ещё и необходимость. Попробуйте-ка проделать всё это в своей IDE!
- Сама идеология Vim — очень мощная штука в сравнении с классической IDE. Есть книга Practical Vim: Edit Text at the Speed of Thought, её название ("редактируй текст на скорости мышления") прекрасно отражает результат, который вы получаете на выходе. К сожалению, в этом сложно убедить человека, который не попробовал (хотя некоторые пытаются). Суть в том, что эта идеология настолько заразна, что хочется перенести её с редактора на все сферы общения с компьютером: браузер, pdf-просмоторщик, почтовый клиент, музыкальный проигрыватель, файловый менеджер и многое другое.
- С Vim вам не понадобится мышь, если вы конечно этого захотите (если не захотите, то Vim отлично интегрирован с мышью). Мне больно смотреть, как люди мучаются с тачпадами или носят с собой мышки, располагая их на разных поверхностях, при работе с ноутбуком.
- Vim невероятно расширяем, любая ваша хотелка так и или иначе реализована или может быть реализована в Vim.
- Ваша конфигурация для VIM вообще без труда переносится с машины на машину. Будет ли так просто с вашей IDE?
Если не хватило, вот ещё немного литературы на тему: раз, два, три.
И да, сообщество Vim помешано на эффективности, постоянно появляются новые крутые инструменты, направленные на ускорение, автоматизацию и облегчение того, или иного. И, если у вас ляжет к этому душа, то работа в VIM доставим вам массу удовольствия.
Как?
Не стоит сразу ставить адские комбайны из чьих-то конфигов. Да, они выглядят круто, но там часто неинтуитивные горячие клавиши, много магии и лишнего. Пройдите vimtutor. Затем ставьте голый VIM (обычно он не такой голый, как кажется на первый взгляд) и работайте. Ну, ок, уговорили. Настройте в vimrc set nocompatible
(убрать совместимость с VI) или поставьте sensible (супербазовый vimrc с настройками типа nocompatible
), или работайте в neovim (новая в основном совместимая с VIM реализация VIM с человеческими настройками по-умолчанию).
В процессе работы у вас будут появляться хотелки. Как только появится хотелка, нужно:
- Поискать, эта функция может быть среди базовых возможностей VIM (а чаще оно так и есть).
- Если не нашли, то ищите соответствующий плагин и устанавливайте. Плагины советую ставить с помощью vim-plug.
- Обязательно читайте документацию к установленному плагину (
:help <plugin-name>
). Она всегда хорошая и понятная!
Не ставьте много плагинов за раз. Возьмите за правило, не больше 2 плагинов в день, тогда вы всегда будете знать, что есть причина поломки, или наоборот, причина ускорения работы. Да и если сразу поставить 33 плагина, то у вас в голове возникнет каша, и вы не будете использовать ни один из этих 33 даже на половину.
P.S. На всякий случай дополню: я не утверждаю, что VIM круче IDE в любой ситуации. Я утверждаю, что существуют параметры, по которым VIM круче IDE, и поэтому имеет смысл обратить на него своё внимание. Эти параметры лично для меня существенны, и я их перечислил в параграфе "Зачем?".
Комментарии (361)
mpetrunin
17.06.2016 18:32промахнулся веткой, комментарий стёр
k12th
17.06.2016 18:43+2То есть вы утверждаете, что этот евангелист нарочно подсунул мне такой плагин в конфиг?:) Простите, трудно в это поверить:)
Это понятно, что испортить можно что угодно. Просто обобщенные IDE весят так много не потому, что они такие вредные или кто-то там вставляет
sleep 10000
, а потому что они умеют много. Бесплатной функциональности не бывает, любая фича занимает место на винте, в памяти и процессорное время для своей работы. (Другое дело, что в VIM ты ставишь только то, что тебе нужно.)
Search&replace это хорошо, но если мне надо переименовать метод в одном классе, а в другом одноименный оставить как есть — это не search&replace. Для Python такая команда есть, ок, а для всего остального?
mpetrunin
17.06.2016 18:48Для go тоже команда (см. комментарий выше), я думаю для большинства языков будет такая возможность.
А насчёт евангелиста, ну я к тому, что тот факт, что кто-то создал какой-то адски тормозной конфиг, не отменяет того, что у нормальных людей VIM при той же функциональности быстрее многих (а думаю, что и любой) IDE.
Плюс столько же времени грузится != настолько же тяжелый. Есть ещё потребление памяти, скорость работы и т.п.
k12th
17.06.2016 19:10Ну я рад за питонистов и гоферов. Но вы, кажется, обещали функциональность уровня IDE для любого языка?
у нормальных людей
Вот вы сейчас оскорбили совершенно вам незнакомого человека. Если бы я имел причины сомневаться в конфиге того человека, я бы не завел это обсуждение вообще.
при той же функциональности быстрее многих
Согласен. Однако функциональность еще не факт, что дотягивает, а скорость… ну запускается оно 10 секунд, а не 20 — погоды это не делает.mpetrunin
17.06.2016 19:15Нормального в смысле "среднестатистического", не хотел никого обидеть. Выбрал неудачное слово, прошу прощения.
Моя мысль была в том, что IDE жрут (как при запуске, так и во время работы) больше VIM, из-за чего на слабых и средних машинах работа с ними может быть некомфортной.
Ну, во-первых, я не обещал IDE для любого языка, я привёл аргументы почему с моей точки зрения VIM имеет преимущество, а IDE недостаток. Я уверен, можно сколотить подобный список, где конкретное IDE берёт верх над VIM (навскидку отсутствие необходимости в конфигурации, лёгкость входа, полная поддержка языка из коробки и т.п).
Но опять же, для большого числа языков, я убеждён, VIM можно нарастить по набору фич до IDE в вашем понимании.
k12th
17.06.2016 19:28+2Но опять же, для большого числа языков, я убеждён, VIM можно нарастить по набору фич до IDE в вашем понимании.
Склонен скорее согласиться. Но будет ли он в результате *критично* быстрее этой IDE? Ну немного быстрее, ну фич почти хватает… шило на мыло.
на слабых и средних машинах работа с ними может быть некомфортной
На слабых и средних машинах работа вообще не может быть комфортной:) Кроме редактора еще нужен браузер, а иногда и офисный пакет, не помешает музыка, ну и всякие там компиляторы-трансляторы тоже кушать хотят.
Прямо сейчас я могу поправить файлик на проде в VIM — закрыть баг костылем, что-то вывести в лог, поправить грамматическую ошибку, все это с подсветкой синтаксиса, с отступами, без тормозов. И это прекрасно! Но ставить 30 плагинов в надежде, что он догонит IDE и не будет тормозить — я оставляю другим:)
grieverrr
20.06.2016 18:06Так купите себе нормальный инструмент для работы! Господи, ну и аргументация. Аш трисёт!
mpetrunin
20.06.2016 18:17А что не так с аргументацией?
grieverrr
20.06.2016 18:34+1да истории про «слабые машины» и «ide жрут». я тут грубовато сейчас выскажусь, извиняюсь, но вот эту тягу наколхозить из говна и палок, чтобы абы как ездило, вместо того чтобы купить нормальный инструмент — я считаю ущербной и тупиковой. рано или поздно всё развалится.
lampslave
17.06.2016 19:08Vim может работать в режиме только консоль.
А теперь смотрите, сколько в этом режиме надо времени, нервов и костылей, чтобы просто найти кусок кода в несколько строк.mpetrunin
17.06.2016 19:18Вроде особых проблем нет. Конкретно у меня проблема не возникла бы, ибо стоит плагин vim-visual-star-search.
beeruser
18.06.2016 19:37Дописать (скопипастить) 1-2 строчки в vimrc? Ужас какой
lampslave
18.06.2016 21:20+6Да, ужас. Потому что я их должен сначала найти (точнее, вырвать у очень доброжелательного сообщества), а потом запомнить, как ими пользоваться. А потом перенести на сервер, если поиск мне понадобится там. И всё это вместо
ctrl+c, ctrl+f, ctrl+v
.mpetrunin
19.06.2016 21:01Судя по этому: http://stackoverflow.com/questions/33629796/webstorm-11-multiline-button-for-search-replace-missing в IDEA тоже всё не так просто и только ctrl-f + ctrl-v не хватит, если вы собираетесь искать текст с переносами строк (как у автора в цитируемом вами посте).
lampslave
19.06.2016 21:12+2Давайте ещё по всему багтрекеру пройдёмся, может ещё какой косяк найдём. Да, указанных хоткеев недостаточно, перед тем как жать
ctrl+f
надо пару строк выделить мышью, чтобы многострочный режим активировать.mpetrunin
19.06.2016 21:58Я просто не в курсе, как это делается в IDEA. Там пишут что-то про alt+m и т.п. Если всё происходит автоматически путём анализа буфера обмена, то вопрос снимается.
lampslave
19.06.2016 22:17+1Не совсем так. В других редакторах достаточно просто скопировать текст, открыть окно поиска и вставить его туда, в IDEA с некоторых пор по
ctrl+f
открывается однострочное окно поиска, а для того, чтобы открылось многострочное, надо перед нажатиемctrl+f
выделить несколько строк. При нажатии сочетания выделенные строки попадут в окно поиска, где их нужно заменить на интересующий фрагмент.
https://youtrack.jetbrains.com/issue/IDEA-145720
grieverrr
20.06.2016 18:10Слушайте, а вы вообще сидели за нормальной IDE с десятком активных проектов одновременно? За нормальным современным компьютером, где от 16гб оперативки и ссд под систему? А то как-то всё взгляд у вас однобокий.
mpetrunin
20.06.2016 18:17Сидел несколько лет назад, тогда правда 16гб не было стандартом нормального компа, это было 4-8Гб. NetBeans, Aptana, Eclipse — это нормальные IDE с вашей точки зрения?
P.S. После комментариев к этой статье, я увидел, что некоторые IDE, особенно от JetBrains, сильно продвинулись. Возможно, попробую их поставить и для себя сравнить их удобство с VIM. Но, как я писал выше, для некоторых моих задач просто нет такой опции "IDE".
grieverrr
20.06.2016 18:53Лично мне, помимо описанных плюшек, IDE доставляет контролем над проектами. Есть десятки серверов, на которых в десятках мест крутится различный код, и JB позволяет мне весь этот код консолидировать в одном месте, в нескольких локальных проектах, переключаясь между которыми я держу руки на пульсе у всей системы, не шарахаясь с безумными глазами по SSH если что-то где-то надо поменять.
mpetrunin
20.06.2016 18:59+2Не совсем понимаю вашу проблему. Вы выступаете в роли администратора или разработчика? Во втором варианте, мне пока неясно, в какой ситуации вам надо в одном месте консолидировать код с 10-ти разных мест и что-то с ним делать. Такое ощущение, что у вас как-то не так деплой налажен, но могу ошибаться.
grieverrr
20.06.2016 19:10+2Ну вот опять вы начинаете декомпозицию общей проблемы и каждому элементу пытаетесь применить свой способ решения. В этом можно упражняться до бесконечности, но разговор про то, что специализированная IDE всё это уже делает за вас.
mpetrunin
20.06.2016 19:18+1Ну мы обсуждаем преимущества и недостатки IDE и VIM для разработчика. Вы формулируете ситуацию, в которой с вашей точки зрения IDE удобнее. Я вам указываю, что ситуация нетипичная для разработки, более того, если я правильно понял, что вы имеете ввиду (правка кода на боевых серверах), противоречит общепринятым стандартам. Грубо говоря, удобство IDE в такой ситуации безусловный плюс, но относится ли это к делу?
grieverrr
20.06.2016 19:31+2То есть по-вашему я пользуюсь «нетипичным» функционалом, иными словами некими костылями, для того чтобы управлять процессом разработки отличающимся от каких-то ваших «общепринятых стандартов»? И по какому-то невероятному стечению обстоятельств IDE покрывает этот функционал. Нет, я всё понимаю, ребята из jetbrains сидели со мной в одном здании, но мамой клянусь, они сами догадались что именно это мне и нужно.
простите но мне кажется вы в плену собственных «типичных» шаблонов и продолжать ломать копья тут нет смыслаmpetrunin
20.06.2016 20:10В VIM есть неплохой плагин для TODO. VIM покрывает и этот функционал. Есть функционал календаря, и тоже неплохо работает. И т.д. и т.п… И да, это как-то отдалённо можно связать с разработкой (ведь разработчику надо где-то записывать задачи и планировать свой день), но это не имеет никакого отношения к дискуссии.
До того, как вы упомянули о озвученной функции, мне тоже казалось, что она не имеет отношения к дискуссии, т.к., мне казалось, не должно иметь отношения к процессу разработки. И под управлением проектом, я понимал что-то другое. Но я не истина в последней инстанции, безусловно. И в вашем, например, случае я ошибался. Если вам удобно так работать и IDE решает вашу проблему — то я очень за вас рад.
Отмечу только, что для VIM есть несколько плагинов для решения вашей проблемы (если, повторюсь, я её верно понял), вот например с видеодемонстрацией.
rkfg
17.06.2016 19:58+11На мой взгляд, основная проблема использования Vim/Emacs вместо IDE в том, что они не понимают язык, с которым работает программист. Для редактора это всего лишь текст, он не понимает функции, не понимает синтаксис, не может вывести типы и подсказать параметры для конструктора или метода. Один этот печальный факт для меня перечёркивает все остальные достоинства. Да, Vim быстрый, удобный (если привыкнуть), есть масса плагинов для всего на свете, как и у емакса, подсветка синтаксиса и прочее. Но когда поработаешь достаточно долго в Eclipse или Qt Creator, понимаешь, сколько времени и сил может сэкономить умная IDE.
Например, помимо уже упомянутого переименования с учётом контекста (переменная i превращается в counter только в текущей области видимости, а не по всему коду), и в Eclipse CDT, и в Qt Creator можно выделить фрагмент кода и вырезать его в отдельную функцию. При этом IDE автоматически выведет необходимые параметры для функции и даст им имена, а также выведет тип возвращаемого значения, на месте же фрагмента кода появится вызов новой функции со всеми нужными параметрами. Ваш редактор такое может? (смайлик) На самом деле, редактор такое и не обязан уметь по определению, он всего лишь работает с текстом и не разбирается в том, что в каких-то языках есть строгая типизация, в каких-то нет, и в некоторых случаях можно попытаться угадать, что в данном месте можно написать, учитывая информацию из стандартной библиотеки, синтаксиса языка и видимости функций, переменных и классов в данной точке кода. Простая подсказка по аргументам функции сама по себе здорово экономит время и нервы, т.к. в хорошем коде по именам параметров и их типу уже ясно, что функция хочет. В документацию лезть приходится в разы реже.
Конечно, тут можно привести много контраргументов, например, можно выдавать подсказки по javadoc/jsdoc/phpdoc/etc., а если таковой док не написали, значит, программа/программист плохи, код не документирован и вообще, ваша проблема не в этом. Тем не менее, к хорошему быстро привыкаешь, как вы сами заметили, и хочется носить свой комфорт с собой. Как бы ни тормозили IDE, они тормозят с благой целью. Постоянно поддерживать актуальные знания о всём коде — не самое дешёвое занятие. Поэтому лучше проапгрейдить железо, переехать на SSD, но сохранить удобство понятливой IDE, чем мириться с отсутствием рефакторинга и банального поиска по коду с учётом языка. Например, нужно найти все вызовы метода run() у объектов класса SomeDataProcessor и только у них. Таких методов может быть масса у самых разных классов, включая системные, и редактор для этой задачи бессилен.
Так что я использую Vim по его первоначальному прямому назначению — для быстрого редактирования текстовых файлов, обычно конфигов. И с этим он справляется просто замечательно.Zenitchik
17.06.2016 20:00А для JavaScript?
Пользуюсь Idea, преимущество перед текстовым редактором — только в удобстве переименования переменных/функций.rkfg
17.06.2016 20:17Не пишу на JS, использую GWT, он пишет за меня. Разумеется, всё это очень субъективно. Например, в JS провести рефакторинг автоматически вряд ли возможно в принципе, так что тут и обычного редактора хватит. Слишком уж динамический язык. Зато поддержка удобного и быстрого деплоя и хорошая работа с DVCS будет плюсом. Хотя опять же, я ничего более функционального, чем EGit в Eclipse, пока не встречал. Git-Cola больше всех к нему приблизилась, но возможности ручного редактирования индекса в ней нет, к сожалению, да и push часто виснет намертво. Изредка бывает надо закоммитить что-то, чего нет в рабочей копии.
В целом же, после обвешивания плагинами Vim/Sublime/Emacs получится та же IDE. Не факт даже, что более быстрая при той же функциональности, а скорее всего, менее функциональная, и причины этого я уже описал. Так что стоит ли овчинка выделки, каждый решает сам.
PerlPower
17.06.2016 20:36Конечно, тут можно привести много контраргументов, например, можно выдавать подсказки по javadoc/jsdoc/phpdoc/etc., а если таковой док не написали, значит, программа/программист плохи, код не документирован и вообще, ваша проблема не в этом.
Тут может быть другой контраргумент — современные сайты это солянка из языков и технологий. Допустим для Idea можно собрать плагины для symfony+knockout+jQuery+requirejs+clojure+еще какая-то хрень, чтобы были доки и автодополнение. Но мы получим ту же проблему как если бы собирали свой конфиг для vim/emacs: часть плагинов кривые, каждый плагин делает IDE чуть медленнее. И все равно в итоге будут куски «кода в коде», на которых подсветка и рефакторинг сломается.develop7
17.06.2016 20:48Но мы получим ту же проблему как если бы собирали свой конфиг для vim/emacs: часть плагинов кривые, каждый плагин делает IDE чуть медленнее.
первое изредка случается (как правило — нет), второе, скажем так, голословненько, замеров бы в студию.
все равно в итоге будут куски «кода в коде», на которых подсветка и рефакторинг сломается.
вот и продемонстрировали бы наглядно
rkfg
17.06.2016 20:48По-моему, это уже более фундаментальная проблема индустрии, смешивание разнородных технологий и платформ. Некоторые называют это «каждой задаче свой инструмент», но если под задачей понимать слишком маленький юнит работы, получается вот такая солянка из пяти разных языков и парадигм. Зато если во всём этом разбираться, можно стать незаменимым и ценным сотрудником…
Для себя, как уже написал выше, я решил проблему использованием GWT, но понятно, что чаще всего, в случае коммерческой разработки в более-менее долгоживущей компании, выбор уже сделали за вас.
f0rk
17.06.2016 20:09+1Несколько раз (2-3 точно) пытался начать использовать vim для написания кода (просто как текстовым редактором пользуюсь им регулярно). Все эти несколько раз мне это быстро надоедало. В IDE (WebStorm, Idea) все работает сразу из коробки: подсветка, автоформатирование, навигация, рефакторинг, vcs и многое, многое, многое… Джетбрейновские IDE настолько хороши, что ты их просто не замечаешь, я ни о чем не думаю и просто пишу код. Возня с vim — это непрерывный перебор плагинов, каждый из которых в чем-то ущербен, копание в конфигах и несовместимый ни с чем набор горячих клавиш. Не могу понять вимеров…
f0rk
17.06.2016 20:21+2Вот короткий вопрос, какой плагин мне нужно поставить чтоб иметь такой автокомплит?
mpetrunin
17.06.2016 20:24Что за язык?
f0rk
17.06.2016 20:28+1JavaScript. Если подскажете как получить такой же результат в VIM — сделаю еще одну попытку.
mpetrunin
17.06.2016 20:36+1Насколько я понимаю, вам поможет tern_for_vim или tern, интегрированный в YouCompleteMe.
f0rk
20.06.2016 12:48+5Ок, нашел время на эксперимент. Помучился немного с установкой YouCompleteMe и…
Неплохо, честно признаюсь, не ожидал.
Попробуем что-нибудь посложнее:
Oops…
Нет, пока не вижу причин переходить на VIM.
PerlPower
17.06.2016 20:47Короткий контрвопрос: а если строчку с объявлением переменной p вынести в другой файл, а потом подключить его через php-шный инклуд, то вывод типов сработает?
А если допустим все даже будет в одном файле, но этот файл будет php-шаблоном и иметь такой вид:
let p = Promise.resolve(new Date({% if startDate is defined %}"{{startDate}}"{% else %}"2015-01-01"{% endif %}); p.then((d) => d.???
Может так конечно писать и нельзя, но ведь пишут же.Delphinum
17.06.2016 20:48+1Естественно сработает, вы думали что для IDE весь проект пишется в одном файле?
Хотя да, для IDE многие проекты пишутся особым образом.
alex_blank
18.06.2016 12:45
Delphinum
17.06.2016 20:26-14Джетбрейновские IDE настолько хороши, что ты их просто не замечаешь, я ни о чем не думаю и просто пишу код
Помнится на моей предпоследней работе меня пытались перевести на PHPStorm (до того около двух лет сидел на нем под свободной лицензией). Положил я мышку поближе, открыл проект, создал новый файлик для будущего класса, набираю, значить, «class », и ничего, IDE ставит мне табуляцию после ключевого слова. Ок — думаю я — забыл настроить. Залез в конфигурацию сниппетов, написал решение для генерации класса, сохранил. Радостно создал класс из снипета. Набираю дальше «pub» и ничего, IDE мне ставит пробел после pub. Точно уже не припомню, но вроде нашел плагин для автодополнения ключевых слов по пробелу. Довольный захожу в каталог models/Application/Services, создаю в нем файл MailService, открываю его и… IDE открывает мне пустой файл. Опять лезу в настройки, прописываю шаблон для php файлов, удивляюсь что шаблоны не завязаны на каталогах. Открываю файл для будущего сервиса повторно, а у меня там namespace не правильный. Злобно жму на клаве ":q", а IDE не реагирует. Ну и матерился же я тогда.alexkunin
17.06.2016 21:35+15Помнится, на предыдущей работе меня пытались посадить за праворульную тойоту-электромобиль (до этого трактор беларусь водил). Так вот сажусь я с привычной левой стороны, а руль далеко, и педали не с той стороны! Я бензин заливать — дырки нету! Выжал газ, а она не стартует — ремень не пристегнут! Пристегнулся, поехала — до сотни за 4 секунды, у меня аж в глазах темно! Хотел психануть и выйти, так там дверь заблокирована если ключ вставлен! Еле выбрался.
Простите, если ирония обидная вышла, мне как пользователю вима и шторма примерно так видится вышенаписанное.Delphinum
17.06.2016 21:41-2Я для вас diff сделаю, чтоб было заметно:
Помнится, на предыдущей работе меня пытались посадить за праворульную тойоту-электромобиль (до этого трактор беларусь водил)
Помнится на моей предпоследней работе меня пытались перевести на PHPStorm (до того около двух лет сидел на нем под свободной лицензией)
alexkunin
17.06.2016 21:46+2А я это заметил. Только не понял, при чем тут :q в конце. Т.е. либо вы в первом случае ошиблись (кстати, разве у него есть свободная лицензия? есть EAP, но он точно не свободный), либо в конце без повода вим приплели. В любом случае, мне показалось, что именно вимовские паттерны вы и пытались применить к шторму, и поэтому я чуть четче провел границу между «было так — пришлось эдак».
Кстати, трактор беларусь я не ругаю, никоим образом! Попробуйте легковой тойотой вспахать поле. ;) Вим — отличная штука. Шторм — отличная штука. Пользуюсь и тем и другим, счастлив и доволен.Delphinum
17.06.2016 21:50Только не понял, при чем тут :q в конце
Это я о привычках. Многие новички проклинают Vim за то, что в нем нет привычных команд. Вы в их числе? )
кстати, разве у него есть свободная лицензия?
Они раньше давали лицензию для Open Source проектов, не знаю выдается ли она сейчас. Вот у меня была такая.
вимовские паттерны вы и пытались применить к шторму
Что за вимосвкие паттерны? Сниппеты и шаблоны?
Кстати, трактор беларусь я не ругаю, никоим образом! Попробуйте легковой тойотой вспахать поле. ;) Вим — отличная штука. Шторм — отличная штука. Пользуюсь и тем и другим, счастлив и доволен.
Я не тот, кто с этим спорит )alexkunin
17.06.2016 22:05Это я о привычках.
И я о них же. Только вы начали со шторма, а закончили вимом. Я как бы отвечаю на то, что прочитал в комментарии, ни больше ни меньше.
Многие новички проклинают Vim
Я не новичок, а уж как оно было 15 лет назад — не помню, проклинал ли его именно за это. Кстати, часто гибкость вима демонстрируют тут же, замапив :q на Ctrl-S. А уж если это gvim под вин, то там behave xterm по-умолчанию, и вим вообще слабо отличается от нотепада с подсветкой.
Вот у меня была такая.
Ясненько. А то я вас понял так, что был шторм со свободной лицензией. Да, эта программа все еще существует.
Что за вимосвкие паттерны?
Ну, исходя из того, что вы начали о шторме, а закончили вимом, я сделал вывод, что вы ожидали каких-то очевидных действий от шторма, к которым привыкли в виме. Например, шаблон нового файла, снипет, и т.д.
А теперь выходит, что вы работали в шторме, потом сели за шторм, а там все не работает. И о чем тогда ваш комментарий? О том, что ваше рабочее место оказалось с затертыми дефольтными конфигами?
Я не тот, кто с этим спорит )
Не-не, это я просто подумал, что кто-то мог воспринять это как критику трактора. Всему свой инструмент, каждому инструменту свой кейз, аминь.Delphinum
17.06.2016 22:10Только вы начали со шторма, а закончили вимом
А есть разница с чего я начал и чем закончил? Многие плюются на Vim потому, что в нем нет привычных функций, я вот плюнул на IDE потому что в ней нет привычной комбинации. Что я сделал не так?
что был шторм со свободной лицензией
Шторм, за лицензию которого я не платил — скажем так )
каких-то очевидных действий от шторма, к которым привыкли в виме. Например, шаблон нового файла, снипет, и т.д.
Ну как бы да, я привык к тому, что в каталоге Modules/ у меня все новые файлы заполняются таким шаблоном, а в каталоге Services/ другим, и namespace правильно выставляется. Это паттерн Vim? А более менее умные сниппеты тоже только в Vim существуют? Сомневаюсь.
И о чем тогда ваш комментарий? О том, что ваше рабочее место оказалось с затертыми дефольтными конфигами?
О том что IDE из коробки этого не может, как и Vim.alexkunin
17.06.2016 22:32+1А есть разница с чего я начал и чем закончил?
Тут у нас фундаментальное непонимание. Вы либо излагаете аргументы, а оппонент, пользуюясь общим с вами знанием человеческого языка и предметной области, их интерпретирует и отвечает контраргументами, или вы выдаете рандомные бессвязные фразы, и оппонет удаляется с поля брани.
Ну как бы да, я привык к тому, что в каталоге Modules/ у меня все новые файлы заполняются таким шаблоном, а в каталоге Services/ другим, и namespace правильно выставляется. Это паттерн Vim?
Я понятия не имею, каким образом вы сформировали эту привычку — воспользовались готовым паттерном поведения редактора/иде (или плагина), или сами его придумали и воплотили.
Но дефольтное поведение шторма — это не клик по «создать файл», после чего получается файл и в нем — магическим образом появляется определение класса. Наоборот, вы нажимаете «создать класс», вводите название, неймспейс, и тогда создается файл, в котором есть класс (или просто упоминаете класс в коде, он подсвечивается как неизвестный, Alt-Enter, «создать этот класс»).
Так что то, что вы пытались проделать, никак не является паттерном шторма (не могу сказать про вим, потому что плагинов миллион, какой-то может и работает так, как вы этого хотите). Поэтому я вообще не понимаю, как вы до этого работали на нем около двух лет, после чего сели за него же, и у вас ничего не получается.
О том что IDE из коробки этого не может, как и Vim.
Вим этого из коробки не может. Возможно, есть какая-то сборка (их много), в которую добрый человек добавил пару плагинов и конфиг. Но это вы уже импортируете чужую рабочую среду. А вот ИДЕ как раз может из коробки создавать дерево файлов по вашим классам. Возможно, не так, как вы этого хотите (не так, как вам это кажется наиболее логичным и удобным). Кому-то так логично, кому-то эдак удобно. Но оно там есть, факт.Delphinum
17.06.2016 22:38Вы либо излагаете аргументы, а оппонент, пользуюясь общим с вами знанием человеческого языка и предметной области, их интерпретирует и отвечает контраргументами, или вы выдаете рандомные бессвязные фразы, и оппонет удаляется с поля брани
Это замечательно, что вы так полно излагаете свои мысли, но вы не можете ответить на мой вопрос, при этом ставите его во главу угла.
Но дефольтное поведение шторма — это не клик по «создать файл», после чего получается файл и в нем — магическим образом появляется определение класса
Я хочу магию, чтоб редактор знал что мне нужно в конкретном файле, конкретного каталога. Vim умеет, моя IDE (на тот момент) не умела. Так в чем проблема? Я плохой, что такое придумал?
никак не является паттерном шторма
Знаю, и это печально.
Поэтому я вообще не понимаю, как вы до этого работали на нем около двух лет, после чего сели за него же, и у вас ничего не получается
Так дело привычки, же. На Vim я привык к удобству и магии, а тут — на тебе, редактор без бубнов и плагинов не может даже файлик шаблоном заполнить. Не порядок!
Вим этого из коробки не может
Я о том и говорю что — тоже не может. Читайте внимательно, пожалуйста, мои комменты. Вы упускаете суть, а она важна.
. А вот ИДЕ как раз может из коробки создавать дерево файлов по вашим классам
Но не может заполнить файл шаблоном на основе каталога и сформировать namespace автоматически. И что это еще за дерево файлов по моим классам?alexkunin
17.06.2016 22:58Я хочу магию, чтоб редактор знал что мне нужно в конкретном файле, конкретного каталога. Vim умеет, моя IDE (на тот момент) не умела. Так в чем проблема? Я плохой, что такое придумал?
А можете повторить тот вопрос, который я поставил во главу угла и на который не ответил?
Я хочу магию, чтоб редактор знал что мне нужно в конкретном файле, конкретного каталога. Vim умеет, моя IDE (на тот момент) не умела. Так в чем проблема? Я плохой, что такое придумал?
Еще раз. Из текста вашего комментария следует, что вы работали в шторме, потом сели за шторм, и все как-то работает не так, как вы привыкли. Сейчас вы мысль развили, объяснили свои пожелания, хотя все еще не понятно, как у вас получилось, что ничего не работало, и откуда у вас между двумя периодами работы в шторме поивились неожиданные для иде требования.
Так дело привычки, же. На Vim я привык к удобству и магии, а тут — на тебе, редактор без бубнов и плагинов не может даже файлик шаблоном заполнить. Не порядок!
Не на вим, а на настроенном вим с тучей плагинов и непростым конфигом. Сырой вим гораздо дальше от производительной иде, чем сырой шторм.
Я о том и говорю что — тоже не может. Читайте внимательно, пожалуйста, мои комменты. Вы упускаете суть, а она важна.
Вы правы, ваше «О том что IDE из коробки этого не может, как и Vim.» я прочитал как «IDE из коробки этого не может, как Vim.» Получилось наоборот.
Но не может заполнить файл шаблоном на основе каталога и сформировать namespace автоматически.
Ну, просто дело делается не так, как для вас логично. Так и вим может работать не так, как кому-то логично (например, недалекий вимщик с винды сядет за консольный вим и очень удивится, что основной режим — нормал, а не инсерт).
В общем, в шторме это делается вот так. Вам не повезло, вы ожидали другого (или какой-то вим-плагин вам такие ожидания навязал, вы их приняли как само собой разумеющееся, и ищете в другом, независимом приложении). Мне повезло, в моем понимании я создаю класс, а иде сама создает файл, дописывает неймспейс, пустой класс — так уж совпало, что мои ожидания не были испорчены тем вим-плагином.
По-моему, ничего страшного. Если другие преимущества перевешивают это неудобство, то почему бы и не переучиться? Если не перевешивают, так вообще и переходить не стоит. Может, работодатель заставляет? Ну, у меня коллега открывает проект в Xcode, там билдит, а редактирует в Саблиме в соседнем окне.
И что это еще за дерево файлов по моим классам?
Речь о PSR-4.Delphinum
17.06.2016 23:06А можете повторить тот вопрос, который я поставил во главу угла и на который не ответил?
А есть разница с чего я начал и чем закончил?
откуда у вас между двумя периодами работы в шторме поивились неожиданные для иде требования
Шторм -> Vim -> Попытка вернутся в Шторм.
Не на вим, а на настроенном вим с тучей плагинов и непростым конфигом
Ну так себе утверждение конечно, но да, и Шторм надо настраивать, и Vim. Почему многие приводят необходимость настроки среды разработки под себя, как некий минус этой среды?
Ну, просто дело делается не так, как для вас логично. Так и вим может работать не так, как кому-то логично
Не столько логично, сколько — Удобно. Зачем мне заполнять в Шторме имя класса, его namespace и т.д., если Шторм может это получить из файла и его расположения. Понимаете к чему я веду?
так уж совпало, что мои ожидания не были испорчены тем вим-плагином
У вас испорчены, у меня улучшены. Для вас есть только одна модель создания и заполнения класса, для меня их множество (контексто-зависимые). Видите, IDE вам диктует правила работы, а я свободный человек )
Если другие преимущества перевешивают это неудобство, то почему бы и не переучиться?
Да я прекрасно умею пользоваться Штормом. Переходить стоит от того, что IDE знает язык, на которым я пишу, а Vim нет, это серьезное отличие, особенно для человека, который пилит инструмент под себя.
Может, работодатель заставляет?
Все пытались, но не заставляли.
Речь о PSR-4.
А зачем это вообще может быть нужно? В смысле вы создаете классы, а IDE вам их по папкам расскидывает?alexkunin
17.06.2016 23:28А можете повторить тот вопрос, который я поставил во главу угла и на который не ответил?
А есть разница с чего я начал и чем закончил?
Ответом было «Вы либо излагаете аргументы… с поля брани»: это, по моему замыслу, поясняло разницу.
Шторм -> Vim -> Попытка вернутся в Шторм.
Из вашего заминусованного комментария это никак не следует. Отвечаю на то, что прочитал, извините.
Ну так себе утверждение конечно, но да, и Шторм надо настраивать, и Vim. Почему многие приводят необходимость настроки среды разработки под себя, как некий минус этой среды?
Отличное утверждение, я считаю. Настройка вима — это поиск плагинов, установка, добавление в конфиг, отладка запуска. Настройка иде — для львиной доли функциональности это просто клики по галкам. Именно для львиной: в иде есть все, чтобы удовлетворить запросы среднего пользователя (оттого и иде, а не редактор с репозиторием плагинов). Ежели какие-то особо тонкие требования, то придется качать плагин, ставить и т.д. (хотя все же проще, чем в виме — опять же, клик по галке). Но еще раз о разнице: настройка иде — клики по галкам, настройка вима — плагины, конфиг, перезапуски, отладка конфига. Лично я именно эту разницу вкладываю в " необходимость настроки среды разработки под себя, как некий минус этой среды", за других не скажу.
Не столько логично, сколько — Удобно. Зачем мне заполнять в Шторме имя класса, его namespace и т.д., если Шторм может это получить из файла и его расположения. Понимаете к чему я веду?
Так а вам и не нужно заполнять, там сразу предлагается неймспейс из контекста (вы можете его изменить, но там хороший дефольт, исходящий того, что вы только что делали). А уж где ввести те же самые символы — название класса или название файла — ну какая разница?
Все сводится к «удобно». А удобно обычно то, к чему привык, привык к тому, чем пользовался до этого. Т.е. удобно то, что привычно, что первое. Синдром утенка. Тут спорить бесполезно: либо новые удобства перевешивают новые неудобства, либо нет. В моем случае перевесили, я для основного кодинга после 12 лет пересел на шторм (но и вим не забыл). В вашем случае, похоже, не перевесили.
У вас испорчены, у меня улучшены. Для вас есть только одна модель создания и заполнения класса, для меня их множество (контексто-зависимые). Видите, IDE вам диктует правила работы, а я свободный человек )
А где видно, что у меня только одна модель создания и заполнения класса??? Я вам уже две назвал, а вы как раз одну.
Кстати, отверка вам диктует, как ее держать и как винтик крутить — вас это не напрягает? А вим вам диктует модальность — не напрягает? Не напрягает — потому что привычно, а привычное — удобно. Субъективщина.
Да я прекрасно умею пользоваться Штормом.
В таком случае не ясно, почему возникли проблемы, и вы «матерились же тогда» — и это после пары лет работы в шторме. Опять же, я просто отвечаю на прочитанный текст комментария.
Я не понял вопроса. Есть общепринятый стандарт — как именовать классы, как сопоставить классы и файлы, неймспейсы и директории. Шторм полностью это поддерживает, предоставляет удобные инструменты по навигации в этом деле, по добавлению новых классов, их переменованию и переносу по неймспейсам. Строго говоря, с точки зрения стандарта: рекурсивно создаете директорию неймспейса, создаете файл с именем класса, внутри пишете неймспейс, класс и т.д. С точки зрения иде: нажимаете «создать класс», вписываете его название, все остальное происходит автоматически, в соответствии с актуальной рекомендацией PSR-4.Речь о PSR-4.
А зачем это вообще может быть нужно? В смысле вы создаете классы, а IDE вам их по папкам расскидывает?Delphinum
18.06.2016 02:38-1это, по моему замыслу, поясняло разницу.
нисколько
Но еще раз о разнице: настройка иде — клики по галкам, настройка вима — плагины, конфиг, перезапуски, отладка конфига
Таки да, Vim не слишком графический редактор )
Т.е. удобно то, что привычно, что первое
Удобно это еще когда — захотел и сделал.
А где видно, что у меня только одна модель создания и заполнения класса?
Ну так — нажал «Создать класс», заполнил пару полей, доволен. Есть еще варианты в Шторме без подключения плагина?
Кстати, отверка вам диктует, как ее держать и как винтик крутить — вас это не напрягает?
Когда напрягает, я ищу подходящий инструмент.
А вим вам диктует модальность — не напрягает
Что за модальность такую диктует Vim?
Не напрягает — потому что привычно, а привычное — удобно
А еще привычное имеет свойство отрицать лучшее. В некоторых деталях это может быть важно.
В таком случае не ясно, почему возникли проблемы, и вы «матерились же тогда»
Так я же написал почему, перечисленного мной не было из коробки, а не из коробки я мог и Vim настроить.
Есть общепринятый стандарт
Давайте исключим слово — общепринятый — хорошо? )
Строго говоря, с точки зрения стандарта: рекурсивно создаете директорию неймспейса
Так дело не только в неймспейсе. Я, к примеру, хочу определенный шаблон для тестовых классов, классов моделей, контроллеров и сервисом.alexkunin
18.06.2016 03:41+1нисколько
Ну, я перечитал, непонятного опять не заметил. Перефразирую: в огороду бузина, а в киеве дядька. Если опять не ясно, то забейте, ничего важного, просто небольшие коммуникативные трудности.
Ну так — нажал «Создать класс», заполнил пару полей, доволен. Есть еще варианты в Шторме без подключения плагина?
Так я же указал второй способ. Прямо в коде используете класс, например:
Идентификатор Abc будет подсвечен как неизвестный, курсор на него, Alt-Enter, «Create class». Появится диалог с заполненными полями: имя — Abc, неймспейс — тот же, что и у текущего файла. Если указать неймспейс в коде (относительный или абсолютный), в диалоге это будет правильно отражено. Если все нравится, жмете Enter, создается файл (и директории, если нужны), в нем неймспейс, класс, пустой конструктор. Итого: в коде упоминаете несуществующий класс, жмете Alt-Enter, Enter, и вы уже в файле нового класса.$abc = new Abc();
Дальше плюшки. Как приятный бонус, если вы вот такое упоминание сделаете:
то конструктор будет выглядеть сразу вот так:$abc = new Abc(4, new DateTime());
Если параметром указать переменную/** * Abc constructor. * @param int $int * @param DateTime $param */ public function __construct($int, $param) { }
то имя параметра конструктора тоже будет $count. Если на параметрах конструктора нажать Shift-Enter, там будет пункт «инициализировать поля» — будут, гм, добавлены поля соответствующих типов, приватные, а в конструкторе им будут присвоены значения.$test = new Abc($count);
Что за модальность такую диктует Vim?
Вы уж простите, что я цитатами из википедии говорю, но вот:
«В отличие от многих привычных редакторов, vi имеет модальный интерфейс. Это означает, что одни и те же клавиши в разных режимах работы выполняют разные действия.»
Ну, а «вим диктует модальность» было ответом на ваше «иде диктует правила работы». А отвертка диктует, как ее хватать. Паяльник так вообще прямо пускается во все тяжкие, если схватить его не так, как положено.
Так я же написал почему, перечисленного мной не было из коробки, а не из коробки я мог и Vim настроить.
Ясно, теперь понятно. Но, оказывается, я уже ответил. Подытожу: в шторме это есть из коробки; но не в том виде, в котором вы ожидали; в документации написано, как именно оно работает; если вам критично работать именно так, а не эдак, то отвечаю вам вашей же фразой — «А еще привычное имеет свойство отрицать лучшее.»
Давайте исключим слово — общепринятый — хорошо? )
Серьезно??? Вы будете даже о таком спорить? Хорошо. Есть два больших репозитория ПХП библиотек — композер и (практически мертвый) пеар. В композере PSR-4 — рекомендованный способ. Много вы знаете пакетов, которые не используют PSR-4? А сколько их в процентах, можете подсчитать?
Пока что единственный контр-аргумент, который я сам себе могу привести, это миллионы строк легаси кода. Но в таком случае можно считать, что, скажем, в Си общепринято типы параметров функций указывать как еще Керниган и Ричи завещали — между круглой и фигурной скобками. Просто потому, что где-то есть гигабайты давно забытого кода в таком стиле.
А какую общепринятую (в ваших понятиях) систему аутолоада вы знаете?
Так дело не только в неймспейсе. Я, к примеру, хочу определенный шаблон для тестовых классов, классов моделей, контроллеров и сервисом.
Для тестов есть из коробки, используется PHPUnit, Behat.
Классы моделей, контроллеров и т.д. — фреймворк-зависимы. Каким образом шторм должен знать обо всех фреймворках мира (или о вашем любимом)? Поддержка некоторых встроена — друпал, джумла, вордпресс (фу), блейд/смарти (ну… шаблонизаторы, не фремворки, конечно), некоторых — скачайте плагин в два клика не покидая шторма.
А вы сами какие фреймворки добавили бы в свою иде? Я к тому, что новые каждый месяц пучком вырастают. Некоторые дорастают до зрелости — под них есть плагины. Вроде нормально.Delphinum
22.06.2016 20:51Этот диалог можно продолжать долго, но боюсь мы ни к чему не придем, видимо кто то из нас не хочет слушать собеседника.
alexkunin
22.06.2016 21:11Если прекратить этот диалог, кто-то из нас упустит прекрасную возможность научиться слушать собеседника. Это было бы слабое решение.
Delphinum
22.06.2016 21:25Хабр не лучшее место для этого, поверьте. Если вам действительно интересно, можно переговорить в скайпе.
alexkunin
22.06.2016 21:33Хабр — не лучшее место для приобретения навыков? Мм, а для чего же он? Для пустых перебранок? На счет скайпа, спасибо, не нужно — не похоже, чтобы было получилось что-то интересное.
Delphinum
23.06.2016 00:23+1Хабр — не лучшее место для приобретения навыков?
Хабр это место, где тебе могут слить карму за то, что ты идешь против модного, современного, молодежного. Вы об этом не знали? Будьте в курсе. Если вы хотите приобретать навыки, то читайте статьи и общайтесь с коллегами, комментарии на хабре не лучшее место для этого.
Ну ок, как я понимаю, вам важнее ЧСВ, нежели диалоги. Дайте мне уже тогда конкретное решение тех тасков, что я привел в моем первом комментарии этой ветке. Не отмазки типа — а в IDE этого не нужно, это ваши шаблоны — а конкретное решение для IDE или Шторма (если вам так угодно). Это мой use case и я хочу чтоб это так работало.alexkunin
23.06.2016 00:41Вы сводите хабр к карме? Это даже как-то назыавется, кармодрочер, кажется. Тогда вам жизненно необходимо научиться молчать в нужный момент. И почему это мне чсв важнее, если это вы свели весь хабр к карме?
Хотя в любом случае наличие кармы не очень мешает получать навыки.
На счет настройки вашей иде, я беру примерно 100 у.е. в час, результат не гарантирую, за отсутствие «пожалуйста» двойной тариф. С чего бы мне еще решать ваши проблемы, а точнее компенсировать вашу лень за свой счет?Delphinum
23.06.2016 00:45Вы сводите хабр к карме?
Слейте себе карму в -50, а потом напишите мне в комменты, что есть хабр, ок?
На счет настройки вашей иде
Слив засчитан. Наверно дело было в том, что " в огороду бузина, а в киеве дядька", верно? ))
А самое интересное во всем этом пустом диалоге то, что когда пользователь Vim говорит — мне это в редакторе не нужно — ему отвечают — не нужно потому что Vim не умеет, ахаха — но когда чего либо не умеет IDE (не умеет от слова «мастер не способен заточить инструмент»), то это проблема пользователя, а не IDE, это он плохие таски ставит перед инстументом )) Я не желаю продолжать больше этот монолог, он не имеет смысла и не несет для меня никакой пользы. Вам счастливо зарабатывать по 100 у.е. в час ;)alexkunin
23.06.2016 01:10Слейте себе карму в -50, а потом напишите мне в комменты, что есть хабр, ок?
В любом месте можно довести модераторов-собеседника до того, что вас заигнорят или замьютят. Качайте скилл «молчать вовремя».
Про то, что вим или иде что-то не умеют, я высказал свою позицию на этой же странице: можно настроить или дописать все, разница только в количестве изначально наличествующих фич. Похоже, вы так и не уяснили разницу между «нет совсем» и «есть, но не так как мне хочется». Собственно, вся ветка была именно об этом.
Я не желаю продолжать больше этот монолог
И то верно, стоило бы послушать собеседника, а не вещать как радиоточка.
Вам счастливо
Большое спасибо, и вам того же.
evocatus
18.06.2016 01:06У меня процессор A8-6600K и джетбрейновские IDE (конкретно PyCharm) виснут так сильно, что я просто не могу ими пользоваться — эти тормоза перекрывают все удобства. По сравнению с этим лагодромом даже IDLE удобнее.
alexkunin
18.06.2016 03:51На Core i3-4130 (примерно похож по мощности) все работает замечательно (конкретно пхпшторм). Памяти 8 гиг.
Там у них можно заменить рантайм явы, которую они поставляют с иде (ну, это так для маков, не уверен про вин). Возможно что-то там не дружит с атлонами, попробуйте какую-нибудь другую версию рантайма, или OpenJDK какой-нибудь.
В какой-то момент их ява криво рисовала шрифты, и решением было именно переход на другой рантайм. Под линуксом на OpenJDK были какие-то проблемы с модальными окнами, перешел на оракловский — все стало хорошо.
Еще там есть файл настройки виртуальной ява-машины для иде — много чего можно покрутить, все гуглится.
poxu
18.06.2016 14:53Для Intellij Idea есть плагин ideavim. Вы им пользуетесь?
f0rk
20.06.2016 12:57+1Нет, не пользуюсь. Я если честно вообще не люблю ничего настраивать, привычка использовать все дефолтное имеет свои плюсы, позволяет комфортно себя чувствовать за любой машиной, любой операционной системой, любым редактором (ну почти :) в emacs я немного теряюсь ))
poxu
21.06.2016 07:44+1Vim хорош тем, что в нём есть режим вставки, нормальный режим и режим выделения, а не плагинами и не легковесностью. Критика вима, соответсвенно, сводится к критике наличия этих режимов. Если вы сравниваете вим с IDE, то очевидно вы неправильно понимаете зачем вим вообще нужен.
Если бы вы сказали, что идея со включеным эмулятором вима лучше чем просто вим, или что блокнот лучше вима, потому, что там не надо переключаться между режимами — было бы понятно что вы имеете в виду.
А так ваша аргументация сводится к тому, что IDE лучше текстового редактора. Не обязательно вима, а вообще любого.f0rk
21.06.2016 13:05+3Обратите пожалуйста внимание на заголовок поста:
VIM: зачем, если есть IDE, и как?
Я может быть и сравниваю, но не я это начал :) И в первом своем комментарии, я указал на то что сравниваю я в контексте написания кода.
А так ваша аргументация сводится к тому, что IDE лучше текстового редактора. Не обязательно вима, а вообще любого.
Именно так, для написания кода в большом проекте — IDE лучше текстового редактора. Не обязательно вима, а вообще любого. Только приверженцы вима и емакса больше других склонны спорить с этим утверждением.poxu
21.06.2016 17:07Мне кажется, что если дать определение IDE, то выяснится, что вим с набором плагинов этой самой IDE является. И соответственно можно будет сравнивать вим с конкретным набором плагинов с конкретной IDE, а не вим с IDE вообще. И это будет хорошее сравнение. Возможно не в пользу вима с конкретным набором плагинов.
VolCh
21.06.2016 17:16Сильно зависит от определения. Например, включено ли в него обязательным пунктом полноценный синтаксический анализ в фоне.
poxu
21.06.2016 17:24Синтаксический анализ к виму прикручивается плагинами. Можно прикрутить clang для С++, для C# есть какой-то демон, который интегрируется с чем хочешь и есть для Go плагин, который использует стандартные тулзы.
Определением конечно можно поиграть и обратить внимание на то, что у вима вообще проблемы со словом бекграунд, но по моему они не то чтобы очень принципиальны в данном случае.VolCh
21.06.2016 17:58Вы под синтаксическим анализом что имеете в виду? Анализ на синтаксическую корректность или полное построение модели проекта, например, с целью автоматического вывода типов для контекстного автодополнения?
PerlPower
17.06.2016 20:20-6Пользуясь обилием в комментариях пользователей IDE, спрошу. Господа, а что вы собственно говоря постоянно переименовываете и зачем?
rkfg
17.06.2016 20:31+10Бывает, функция оказалась названа неудачно. Банальная малозаметная опечатка, либо же функциональность немного изменилась/расширилась в процессе разработки. Такое случается, и лазить с грепом по всему коду не всегда оказывается продуктивно. Или были две функции с одинаковым именем (например, add), но разными аргументами, на какой-то стадии разработки стало ясно, что их поведение теперь значительно отличается (одна стала более интуитивно понятна как insert). Переименовать одну, не затронув другую, без IDE затруднительно.
PerlPower
17.06.2016 21:02-9В том-то и дело, что вы вроде как пищите очевидные и правильные вещи, но я сталкиваюсь обычно только с необходимостью переименования когда архитектура подожмет, а такое бывает довольно редко. Эх, хоть бери да устраивайся в бодишоп, чтобы ходить и заглядывать людям через плечо, наблюдая за методикой их программирования.
rkfg
17.06.2016 21:11+1Но всё же, если архитектура подожмёт, лучше иметь такое средство, чем не иметь, не так ли? Бывают и другие случаи. Например, поскольку английский язык мне не родной, я могу неправильно выбрать слово для названия переменной или функции. Особенно, когда речь идёт о бухгалтерских приложениях и прочем матучёте. Живой пример: как назвать уволенного работника? Exempted? Fired off? Discharged? Dismissed? Released? Масса вариантов. В большой команде наверняка есть специально обученные люди, которые дадут однозначный и верный ответ на этот вопрос, и ответ будет записан в глоссарий, которым потом другие будут пользоваться. Так получилось, что я пишу софт один, с недавнего времени, вдвоём. Когда кода много, можно запросто в одном месте использовать одно слово, а в другом другое, и всё это будет выглядеть запутанно и плохо. Или же наступит такой день, когда сей вопрос для меня полностью прояснится, и тогда будет правильно переименовать все функции и переменные как положено. Когда в проекте 10-15к строк, провернуть такую операцию без особого риска причинить collateral damage в коде не так-то легко, даже если используется IDE. Но она, по крайней мере, может сильно уменьшить количество ручных правок.
rkfg
17.06.2016 21:15+1Ещё бывает, что надо посчитать сумму чего-либо. Посчитал, положил в переменную sum. Позже выяснилось™, что таких сумм может быть несколько, и их общая сумма тоже нужна. Ну ладно, вот вам переменная total. После третьего уровня суммирования становится несмешно, и появляется необходимость упорядочить этот зоопарк сложения, и здесь будет, наверно, правильным переименовать безликие переменные во что-то определённое, типа totalWares, totalInvoices и прочее.
webkumo
17.06.2016 21:20+2Вообще рефакторинг — это далеко не только переименования, лично я ещё пользовался:
— выделить абстрактный класс с общим функционалом
— перетащить общий функционал в класс-предок
— вынос константы
— вынос переменной
— вынос куска кода в виде функции
develop7
17.06.2016 20:40+7Лично я — почти ничегоBeanut
18.06.2016 00:36+1Что-то не густо у васfaiwer
17.06.2016 20:55Пишу на JavaScript. Использую SublimeText 3 (не Vim, но и не IDE). В последнее время немножко вожусь с кодом на Scala. Учитывая как долго эта дурь компилируется мне чертовски не хватает IDE фич, вроде умного autocomplete, подсказок по наведению на слово, подсветки грубых и не только ошибок, jump to definition и т.д… Я понимаю, что в рамках инфраструктуры Scala, мой текстовый редактор попросту каменное орудие. В то время как существуют такие IDE как Idea.
Насколько я понимаю, используй я не ST3, а Vim или Emacs, я бы точно также чувствовал себя словно пещерный человек. Такие языки просто генетически предрасположены к синтаксическому анализу и соответствующим возможностям. А вот на JavaScript-е писать да, и Vim и ST3 и Emacs и что-нибудь более модное типа атома, это просто вкусовщина. Чуть завернул какой магии сложнее 2+2 и IDE сдулась :)
mpetrunin
17.06.2016 21:02см. выше про анализ кода и JS.
faiwer
17.06.2016 21:14Вы ими пользовались? Просто подобные штуки есть и под Sublime. Я пробовал ими пользоваться. Удалил через 5 минут. Жалкая пародия на IDE. Оценить конкретно эти плагины не могу, т.к. я из категории тех людей, которые случайно открыв Vim, потом 10 минут разбираются как его закрыть :) Хотелось бы услышать мнение о работе этих плагинов для Scala, C#, Java, C++ и пр.
faiwer
17.06.2016 21:37Посмотрел на Tern для ST3. Jump To Definition, просмотр документации и rename в простых случаях умеет. Это конечно не IDE, но уже что-то. Спасибо за наводку.
dizjis
17.06.2016 20:20+3Я много читал про Vim и чаще всего — хвалебные речи. Подумываю попробывать перейти на него, но у меня созрели вопросы.
В IDE я могу сделать пошаговую отладку, заглядывая на каждом шаге в регистры процессора и это иногда очень важное и необходимое действо. Возможно ли в Vim'е сделать подобное? Ну и выше уже писали про умный рефакторинг кода с автоматической вставкой отрефакторенного
daiver19
17.06.2016 21:01+9> 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).
Delphinum
17.06.2016 21:08-3Или вбивает команду, чтобы проскроллить файл
Это что за команда такая? :normal j?
Каждый раз сердце кровью обливается, когда человек вбивает команду в консоли
Знали бы вы как я страдаю, когда вижу дергание рук между FJ и мышкой/тачпадом.
Brodaiver19
17.06.2016 21:11+1Не помню точно, но в там определенно есть что-то вместо/алтернативно shift+end.
> Знали бы вы как я страдаю, когда вижу дергание рук между FJ и мышкой/тачпадом
Руками двигать полезно :) Ну и я не понимаю, в чем выигрыш от вбивания имени файла (которое еще и забыть можно) в отличие от выбора файла в дереве мышкой. Опять же, навигация и кодинг — более-менее разделенные процессы. Мне весьма редко приходится одновременно редактировать десяток файлов.Delphinum
17.06.2016 21:18А что делает shift+end? Переход в конец строки? Там для этого shift+4, но я предпочитаю shift+a
Руками двигать полезно
Не особо, если это отвлекает от процесса набора текста.
от выбора файла в дереве мышкой
Как правило (как правило!), один каталог проекта может содержать десяток файлов и папок, и чтоб выбрать нужный файл мышкой (или не мышкой), нужно сначала найти этот файл в списке. Сделать это можно путем последовательного чтения всех файлов (можно мышкой двигать сверху вниз, чтоб не сбиться, а можно стрелку вниз или j нажимать) или набрав какую нить поисковую команду. Заслуги IDE или редактора тут нет, кому как привычнее.
Мне весьма редко приходится одновременно редактировать десяток файлов
Мне постоянно приходится это делать. Как правило это четыре типа файла: Модель, Контроллер, Шаблон, Библиотека. Удобно, когда каждый в своей вкладке, а вкладки могут делится на подвкладки.daiver19
17.06.2016 21:36> А что делает shift+end?
Ctrl+end, ошибся. Стандартный шорткат перехода в конец файла (ну, кроме особых программ вроде вима).
> Не особо, если это отвлекает от процесса набора текста.
Когда я выбираю файл, я не набираю текст.
> Как правило это четыре типа файла: Модель, Контроллер, Шаблон, Библиотека.
Для этого есть табы (вроде есть даже хоткеи для перехода по ним, хотя я обхожусь без них обычно).Delphinum
17.06.2016 21:43Ctrl+end, ошибся. Стандартный шорткат перехода в конец файла
В Vim проще, для этого есть shift+g.
Когда я выбираю файл, я не набираю текст
Вы мышкой пользуетесь только для выбора файла? Похвально, вам осталось совсем чуть чуть ;)
Для этого есть табы
Да, я знаю. Замечательная штука, не правда ли?alexkunin
17.06.2016 21:53В Vim проще, для этого есть shift+g.
Неправда! Вы уж не смущайте людей. Если вы в режиме нормал, то Shift-G, да. А если в режиме инсерт, то Ctrl-O Shift-G, иначе человек, вас прочитавший, нажмет это и просто получит заглавную G у себя в файле.
Я к тому, что в вим не проще — в разных режимах по-разному, и у вас не получится учить режимы отдельно, т.к. для работы нужны практически все они. А вот Ctrl-End — универсальный шорткат для для любой текстовой области в любом вин-приложении. Т.е. ваш опыт из других программ переносится и сюда. А вот вимовские комбинации всего в нескольких программах встречаются (less, пара консольных клиентов для почты и веба, gmail, почивший google reader). А Ctrl-End — универсально везде.Delphinum
17.06.2016 21:58Если вы в режиме нормал, то Shift-G, да
А зачем вам прыгать в конец файла в режиме insert? Вы перешли в insert mode, набрали текст, вышли из него, пошли гулять по файлу. В Vim так принято работать.
Я к тому, что в вим не проще — в разных режимах по-разному, и у вас не получится учить режимы отдельно, т.к. для работы нужны практически все они
Мне кажется, вы просто не привыкли к режимной модели Vim, потому вы пытаетесь серфить по файлу в insert mode, что не есть хорошо.
А вот Ctrl-End — универсальный шорткат для для любой текстовой области в любом вин-приложении
Да, если я сейчас сяду за блокнот, то мне будет очень неудобно. Но блокнот и рефакторить не умеет, так что теперь, не пользоваться благами IDE? Так себе аргумент.
А Ctrl-End — универсально везде
У меня Vim везде.alexkunin
17.06.2016 22:18+2А зачем вам прыгать в конец файла в режиме insert?
А для этого мне нужно знать, что нужно выйти из режима. А я новичок, мне за 10 минут показали уже 40 кнопок и 4 режима, и я чуть-чуть растерялся.
Мне кажется, вы просто не привыкли к режимной модели Vim, потому вы пытаетесь серфить по файлу в insert mode, что не есть хорошо.
Я нигде не говорил, что я так делаю. Я только сказал, что на вопрос «как мне переместиться в конец файла?» вимер должен дать ответ в контексте режимов. Или хотя бы указать, G — это nmap, а не какая-то абстрактная глобальная горячая клавиша.
Да, если я сейчас сяду за блокнот, то мне будет очень неудобно. Но блокнот и рефакторить не умеет, так что теперь, не пользоваться благами IDE? Так себе аргумент.
А при чем тут блокнот? Ctrl-End работает и в блокноте, конечно, но если вы из шторма в вижуал студио сядете, или в эклипс, или вообще хоть куда, то вы уже знаете, как перемещаться по файлу, сохранить, открыть. Аргумент не об иде или редакторе, а об универсальности интерфейса. Вокруг нас везде кнопки, мы их нажимаем, любой ребенок знает что делать с кнопкой. И тут — та-да! — перемычка. Или рычажок. Или замочная скважина, ключ от которой — неизвестной конструкции. И человек думает, как же мне дверку-то открыть? Можно научиться, конечно, но почему бы не воспользоваться своими же бест практисес из программирования и не перестать множить сущности, начать повторно использовать скилы?Delphinum
17.06.2016 22:21А я новичок
Когда я говорю, что «в Vim проще», я не имею ввиду новичков и кривую обучения.
Я только сказал, что на вопрос «как мне переместиться в конец файла?» вимер должен дать ответ в контексте режимов
Совершенно верно.
Можно научиться, конечно, но почему бы не воспользоваться своими же бест практисес из программирования и не перестать множить сущности, начать повторно использовать скилы?
От того, что некий антипаттерн все повсеместно используют, я не начну им так же повсеместно пользоваться. Все просто.alexkunin
17.06.2016 22:39+1Когда я говорю, что «в Vim проще», я не имею ввиду новичков и кривую обучения.
Я всего лишь пытался сказать, что на вопрос «как переместиться в конец файла?» есть ответ для прочих редакторов-иде — «нажмите Ctrl-End», и есть ответ для вима «в режиме нормал нажмите Shift-G» (с чем вы уже согласились). И второе явно не «проще» первого, потому что упоминает еще и концепция режимов.
Проще оно только вот в чем: Ctrl-End нельзя нажать, не покидая основную часть клавиатуры, а Shift-G — можно. Но, думаю, если бы вы имели в виду именно эту простоту, то так бы и сказали четырьмя комментариями выше.Delphinum
17.06.2016 22:44И второе явно не «проще» первого, потому что упоминает еще и концепция режимов
Не путайте кривую обучения и простоту.
Кривая обучения — это как просто изучить нечто
Простота — это как просто пользоваться тем, что уже изучено
Но, думаю, если бы вы имели в виду именно эту простоту, то так бы и сказали четырьмя комментариями выше
Да именно это я и подразумиваю под простотой.alexkunin
17.06.2016 23:07+1Не путайте кривую обучения и простоту.
Я не путаю, спасибо. Кроме кривой обучения, есть еще простота применения. Если Ctrl-End вы просто жмете, то Shift-G вы жмете после того, как проверите (или переключите) режим. Это явно не проще. Допустим, при известной сноровке вы за режимом сознательно не следите (хотя неужели у вас не бывает ввода команды не в том режиме?), и оверхед части «проверить или переключить режим» небольшой — в таком случае «почти так же просто». Но не «проще». Именно за это зацепился взгляд, именно поэтому я ответил на ваш комментарий. «В интернете кто-то неправ!»
В остальном же, похоже, мы с вами согласны.Delphinum
17.06.2016 23:09+1как проверите (или переключите) режим
Это делается на автомате. Обычно вимеры не сидят в insert mode, ввели что то и сразу вернулись в normal mode. Потому проверок не требуется.
daiver19
17.06.2016 22:13+3> Вы мышкой пользуетесь только для выбора файла?
Не только. Речь не о мышке, а об интеграции: в текстовом редакторе нет дерева файловой системы, нет интеграции с контролем версий, нет интеграции с билдом и тестами, нет подсветки синтаксических ошибок, нет интеграции с дебагом, нет языко-зависимого рефакторинга. А если вы каким-то образом добились всего этого в VIM c помощью дестяка-другого плагинов (не буду врать, не знаю, насколько это возможно), то поздравляю, вы собрали кривую IDE на коленке с VIM-mode вводом текста.Delphinum
17.06.2016 22:15вы собрали кривую IDE на коленке с VIM-mode вводом текста
Разница между моей IDE и любой другой в этом случае будет в?daiver19
17.06.2016 22:20В количестве потраченных на неё человеко-часов и общей продуманности. Ну и предложенные мною фичи в виме выглядят весьма утопично — все мои коллеги, которых я видел в процессе работы, использовали вим только для редактирования файлов, остальное из командой строки. Я даже табов-то не видел ни у кого толком :)
Delphinum
17.06.2016 22:23количестве потраченных на неё человеко-часов
В Vim за десять минут можно поставить все нужные для работы плагины (если знаешь что ставить и как они работают).
общей продуманности
А поконкретнее?
Ну и предложенные мною фичи в виме выглядят весьма утопично — все мои коллеги, которых я видел в процессе работы
Ну это проблема ваших коллег на самом деле.daiver19
17.06.2016 22:37+1Давайте вы мне покажете приличный, по вашему мнению, сетап ИДЕ на основе вим, а потом сравним с любой ИДЕ от JetBrains, например. Хотя я подозреваю, что половину функциональности невозможно обеспечить в принципе. Ну и в любом случае с каждым плагином теряются все те преимущества, что перечислены в статье, остается лишь странный метод ввода, который в теории, после Н часов чтения книг, практики и прохождения специальных тренировок, может обеспечить прирост в 10 процентов к скорости написании (а может и не обеспечить).
Delphinum
17.06.2016 22:42+1Давайте вы мне покажете приличный, по вашему мнению, сетап ИДЕ на основе вим
Что еще за «сетап ИДЕ»? Vim не умеет понимать код, он в принципе не может быть IDE. Если с вами об этом начнут спорить, смело обвиняйте человека во лжи.
а потом сравним с любой ИДЕ от JetBrains, например
Не надо сравнивать Vim с решениями от JetBrains, поверьте, Vim и JetBrains это как камень и камень с мозгами. Совершенно разные вещи.
Хотя я подозреваю, что половину функциональности невозможно обеспечить в принципе
Знаете как в песне поется — фсе возможно, после долгих ночей возможно. Так же и в Vim.
Ну и в любом случае с каждым плагином теряются все те преимущества
Куда это они теряются?daiver19
17.06.2016 22:46+2> В Vim за десять минут можно поставить все нужные для работы плагины
> Что еще за «сетап ИДЕ»?
Вы сами себе противоречите. Написали же о каких-то плагинах, которые добавят все фичи, которые имеются в нормальной ИДЕ. А теперь выясняется, что нет ничего такого.
> Совершенно разные вещи.
Одна из которых полностью заменяет другую.
> Куда это они теряются?
Редактор становится тяжелее, он уже не работает одинаково со всеми языками. Какие еще там «киллер-фичи» остались?Delphinum
17.06.2016 22:50Вы сами себе противоречите. Написали же о каких-то плагинах, которые добавят все фичи, которые имеются в нормальной ИДЕ
Вы выдаете желаемое за действительное. Я повторю то что написал — В Vim за десять минут можно поставить все нужные для работы плагины
Делается это достаточно просто, ставите какой нить менеджер плагинов, затем скачиваете или заполняете нужные вам для работы плагины (кроме плагинов, завязанных на семантическом разборе кода, под Vim есть все) и ждете пока менеджер их установит. Радостно пользуетесь.
Одна из которых полностью заменяет другую
Ну кому как, я вон выше уже писал о моих проблемах в IDE. Не заменило, а ведь хотелось, и до сих пор не против перейти.
Какие еще там «киллер-фичи» остались?
normal mode
Alex_ME
17.06.2016 21:09Я полностью согласен с тем, что несомненным плюсом Vim является легковестность, большое число поддерживаемых ЯП, расширяемость. Возможно (сам не пользовался), там можно редактировать и набирать текст с огромной скоростью (хотя я упираюсь в скорость печати).
Но IDE есть IDE. Сам я пишу на C#, использую Visual Studio. Да, она занимает черт знает сколько места, запускается черт знает сколько времени и вообще чертовски тяжелая. Но она, как и другая "средняя IDE" позволяет делать следующий, очень удобный набор функций:
- Умный автокомплит, который показывает существующие классы, методы, втч написанные мной, сигнатуры методов с описанием из метаданных
- Аналогичная умная подсветка, которая понимает, какое слово чем является
- Переход к определению, при этом во всем проекте (Sublime умеет в рамках одного файла)
- Показывает сколько раз и где метод\класс используется
- Рефакторинг
Все это настолько удобно, что я готов смирится с прожорливостью IDE, и, к сожалению, не реализуемо в не-IDE
mst_72
17.06.2016 21:26Так и тянет спросить, а никто случаем не запускал Vim под Windows со смешанным Арабско(урду, персидско)-английским текстом?
alexkunin
17.06.2016 21:37Я запускал. Примерно 12 лет назад мне нужно было сайт делать (просто верстка по шаблону), у него была арабская версия. Узнал много нового о виме, об арабском, о юникоде, о матюках…
mst_72
17.06.2016 21:49Вот-вот… Собственна, одна из причин, почему пришлось исключить Vim из списка используемых редакторов и была связана как с его нелюбовью к нестандартным языкам, как и со спецификой обработки больших XML… А я то надеялся. В общем, Notepad++ & Sublime оказались все-таки покомфортнее.
PerlPower
17.06.2016 23:36Если нашли хорошее решение для навигации по гигабайтным дампам в xml, то поделитесь им пожалуйста.
serf
17.06.2016 21:40+5Глупости какие-то, никакой редактор не может быть полноценной заменой IDE. Приобрести мощное железо не должно быть проблемой когда компьютер является твоим основным рабочим инструментом, речь идет о продуктивности работы.
alexkunin
17.06.2016 21:56+4Одноразово заплатить 300-500 убитых енотов сверху — или переделать весь свой ворокфлоу, подписаться на крутые кривые изучения, постоянно подкручивать, подпиливать, подлатывать свою рабочую среду… Очевидный выбор.
serf
17.06.2016 21:59+2Именно, лучше использовать полноценную IDE чем собирать свой «супер» редактор из кусочков разбросанных по всему интернету. Видимо кому-то просто нравится возиться с редактором и «допиливать» его, вместо делания полезной работы. Не говорю уже о продуктивности работы в редакторе и IDE.
Delphinum
17.06.2016 22:02+1А под полезной работой, вы, по всей видимости, понимаете написание проекта за который вам будет капать денюжка?
serf
17.06.2016 22:11+2Не обязательно денюжка, бывают ведь всякие любители опенсорсить, в гитхаб там что-то покомитить и тп.
Delphinum
17.06.2016 22:13-1Ну так в чем же бесполезность допиливания редактора? В смысле, а если я свою работу в опен сорс выложу.
serf
17.06.2016 22:18Это уже было бы вредительство, поддерживать на плаву архаичные инстурменты разработки. Но как хобби пожалуйста, я ведь пишу «Видимо кому-то просто нравится возиться с редактором и «допиливать» его, вместо делания полезной работы».
KoCMoHaBT61
17.06.2016 22:24+1Так под линюхами оно цветёт и пахнет. За 50 лет юниксов не сделать нормального отладчика — это должен быть где-то специально обученный вредитель. Срачи на тему VIM<->Emacs, а потом приходит Sublime, борет всех и они чешут в затылках: «да, конечно, он неплохой, и производительность выросла… Зато знаете как удобно из vim по :q! выходить? И сразу всё понятно — вышел и не сохранил...». Тьфу, блин.
serf
17.06.2016 22:30Даже в линухах бывает не слишком стукнутые на голову люди, я например уже давно полностью перешел на линукс, и тем не менее никакими VIM/Emacs/Sublime (Atom зыбыли) и прочими хипстерско-архаичными инсрументами пользоваться не собираюсь.
Delphinum
17.06.2016 22:26Это уже было бы вредительство, поддерживать на плаву архаичные инстурменты разработки
Тобишь поддерживать на плаву надо только то, что модно, современно, молодежно?
Все же не понял, как вы разделяете полезную и бесполезную работу.
evocatus
18.06.2016 01:22-6А потом программист «случайно» не замечает, что его творение не виснет только на Core i7 Extreme.
Я бы вообще запретил вести разработку на чём-либо мощнее самой распространённой конфигурации железа на данный момент минус 5 лет. Потому что продуктивность работы пользователя программы ещё более важна, чем продуктивность программиста.
Возможно, тогда современный веб был бы действительно удобным, а не специальной олимпиадой «кто быстрее сожрёт батарею ноута говённым джаваскриптом с 3 фреймворками и HD видео на фоне»
Возможно, тогда быС++неприлично долго компилирующиеся и неадекватно переусложнённые языки начали бы терять свою популярность.
Возможно, тогда мы бы не возвращались стремительно во времена DOS, когда люди работали одновременно только с одной программой (тогда — потому что не было многозадачности, сейчас — потому что тормозит — некоторые программисты же верят в закон Мура и в то, что у пользователей денег куры не клюют на покупку мощного железа)serf
18.06.2016 01:32+8Бред. Требования к ресурсам инструментов разработки никак не связаны с требованиями к ресурсам итогового продукта, не притягивайте за уши доводы. Я видел хипстеро подбных персонажей пишущих код в модных/архаичных редакторах, как правило у них даже не было привычки форматировать свой код по единому стандарту, они просто не понимают зачем это нужно, полагаю потому что не привыкли работать в команде. Я бы еще понял когда какие-то совсем автономные скрипты (не предполагающие сайд эффектов) пишешь в блокноте, но ведь есть любители писать в блокнотах на компилируемых языках. Работа в блокноте для меня явный признак непрофессионализма, подтверждено опытом. Для меня очевидно что любители всяких блокнотов это как правило одиночки, которые не привыкли работать над большими проектами и в больших командах.
evocatus
18.06.2016 01:46-2Может быть, моя гипотеза ложная. Только объясни тогда, отчего народ свихнулся? Обычный редактор с подсветкой синтаксиса сейчас нормально делать на Electron (их уже два — Atom и VS Code). Там даже кастомных GUI контролов нет, на кой чёрт там HTML+CSS+JS? Это можно было даже на Tk сделать! Только тему красивую нарисовать и всё.
И ведь тормозит нещадно.serf
18.06.2016 01:52-2Так хипстерня ведь, чего здесь объяснять. Сверлит им где-то что-то сделать не как у всех, отхватить звездочек на гитхабе. Даже если поделка это кактус в итоге все равно будут его кушать. Из той же серии как известные в интернетах люди постоянно нахваливают свое функциональное программирование, ладно бы пускай, но они утверждают что это серебрянная пуля. Не знаю зачем им это, видимо славы хотят.
evocatus
18.06.2016 02:01-1Меня это очень беспокоит. Даже на хабре, когда я говорю, что разрабатывать десктопное ПО на JS — не комильфо, что у HTML+CSS+JS вообще куча недостатков, а для разработки под десктоп — ещё больше, что нужно разрабатывать GUI-библиотеки нового поколения для разных языков (или одну с биндингами), меня минусуют и поднимают на смех и упорно впихивают Node.JS
serf
18.06.2016 02:09Я не большой любитель писать много логики на JS в целом и на Node в частности, но если это делать аккуратно (допустим используя TypeScript), то вполне думаю можно жить. HTML+CSS+JS это очень гибко в плане UI, портабельности. Ну и для веба сейчас пишет каждая собака, проще найти нужных специалистов.
serf
18.06.2016 01:54+1Там даже кастомных GUI контролов нет, на кой чёрт там HTML+CSS+JS?
А вот это как раз большой плюс, полная свобода в интерфейсе. Плюс можно в теории иметь еиную кодовую базу для веб приложения и десктопного.evocatus
18.06.2016 02:09+1А на практике это всё заточено под один браузерный движок, который, кажется, подошёл к сингулярности — где лучшие программисты мира, работающие в богатейшей компании, не успевают закрывать дыры и баги. Он переусложнён и из него выжимают последние соки.
DrLivesey
18.06.2016 10:10Всегда пишу новые модули в Vim в одном стиле форматирования, а у когллег (пишут код исключительно в MSVS редакторе) почему-то стиль форматирования отличается от того, который задокументирован в проекте от файла к файлу, от функции к функции.
Дело тут совсем не в инструменте, а в людях и их привычках.serf
18.06.2016 10:12-3Дело тут совсем не в инструменте, а в людях и их привычках.
Разумеется, но по своему опыту как раз те люди с кем я пересекался использующие редакторы почему-то работают как школьники, но не профессионалы.
Goodkat
18.06.2016 19:13у них даже не было привычки форматировать свой код по единому стандарт
Ну для вас, как пользователя IDE это никак не должно стать проблемой — в любой IDE есть кнопочка для форматирования кода по выбранному стандарту.serf
18.06.2016 19:14дело не кнопочке, а в том что по моему опыту любители блокнотов не понимают что это необходимо при работе в команде.
Goodkat
18.06.2016 21:03Я к тому, что как раз стиль форматирования кода в наше время — это наименьшая из проблем: вы можете настроить pre-commit hook, и код будет автоматически переформатирован в соответствии с выбранным в команде стилем, вы можете нажать волшебную комбинацию клавиш после открытия файла, и код будет переформатирован в соответствии с вашими ожиданиями, или даже повесить макрос на открытие/сохранение файла.
serf
18.06.2016 21:07Вы все же не поняли, это был самый примитивный пример, первый попавшийся. Я не стану здесь описывать как эти ребята пишут код.
DrLivesey
19.06.2016 12:57В IDE тоже можно писать так себе код. Снова повторюсь: дело в людях.
serf
19.06.2016 12:58-1Снова повторюсь: на моем опыте люди использующие блокноты как правило работали не достаточно профессионально.
DrLivesey
19.06.2016 13:02Так, может, просто не тех людей нанимали?
С моей точки зрения если человек пишет код в блокноте, но при этом код нормальный, читаемый и вовремя написаный, то все равно как его пишут.serf
19.06.2016 13:06-1Как правило это были внешние сотрудники, можно сказать контракторы. Если человек «свой», то ему довольно быстро дадут понять что проект серьзный и инструменты разработки нужно использовать соответствующие.
iqiaqqivik
20.06.2016 10:52> быстро дадут понять что проект серьезный
…а не какой-нибудь там хипстерский github, да?
grossws
19.06.2016 02:27В вашем профиле указано, что вы занимаетесь FPGA. Вы синтез запускаете на синтезированном MISP или всё-таки на мощном современном x86_64 с 16+ GiB RAM?
evocatus
19.06.2016 03:34Это нельзя сравнивать. Во-первых в моём распоряжении вся FPGA целиком. Во-вторых, я делаю отладку на реальном железе. В-третьих то, что я делаю, как правило, либо работает, либо нет, потому что при разработке для FPGA ты рассчитываешь алгоритм с точностью до каждого такта (если только не используешь софтпроцессор и пишешь для него на Си) — там нельзя говорить о производительности в компьютерном смысле.
В компьютерах производительность — эффективное использование процессорного времени и памяти. В FPGA производительность — эффективное использование чётко предопределённого количества логических ячеек.grossws
19.06.2016 03:57Так и для софта под x86_64 условия эксплуатации бывают разные. И требовать
Я бы вообще запретил вести разработку на чём-либо мощнее самой распространённой конфигурации железа на данный момент минус 5 лет.
такая же глупость, как и требовать разрабатывать, например, для mips на mips'е или для FPGA на FPGA. Вы кстати, разрабатываете на celeron из поколения core 2 с 2 GiB RAM?evocatus
19.06.2016 12:00Вы же прекрасно поняли о чём я. Даже когда я сам пишу программы (не для FPGA), я делаю отладку на той же машине, на которой пишу код и собираю его. Только это Pentium 3. Поэтому я знаю, что если оно не тормозит у меня, то не будет тормозить ни у кого, даже на тех тонких клиентах с Atom Nxxx, для которых мне частенько приходится делать программы с GUI, и на которых поделки на Qt QML, которые делал мой бывший коллега, выдают FPS около 1 кадра в секунду (нет аппаратного ускорения графики).
grossws
19.06.2016 21:28Поэтому я знаю, что если оно не тормозит у меня, то не будет тормозить ни у кого, даже на тех тонких клиентах с Atom Nxxx, для которых мне частенько приходится делать программы с GUI, и на которых поделки на Qt QML, которые делал мой бывший коллега, выдают FPS около 1 кадра в секунду (нет аппаратного ускорения графики).
Это пока пользователь не поставит какой-нибудь тяжёлый антивирус и софт не уйдёт в своп. И это не повод разрабатывать и отлаживать допотопными средствами на древней конфигурации. Это повод делать performance тесты на целевых машинах.
Как я уже сказал выше, целевые системы бывают разными. И отлаживать приложение, которое планируется использовать на сервере, на "самой распространённой конфигурации железа на данный момент минус 5 лет" — глупость.evocatus
20.06.2016 00:08-1Ах да, все вышеперечисленные машины под Linux, никаких антивирусов там нет.
develop7
17.06.2016 21:55+4для IDE — нужна достаточно мощная рабочая станция.
- как и для комфортной разработки ПО вообще
- «мощная» == «с как можно бо?льшим кол-вом RAM и как можно более быстрой долговременной памятью»
Кроме того, создателю плагина надо сосредоточиться только на том, чтобы хорошо сделать поддержку специфических для ЯП вещей, а всё остальное Vim уже умеет.
Неужели так можно было?
Объясняется это тем, что для редких вещей создавать IDE неоправданно, а написать базовый плагин для Vim не так сложно.
А что, если не создавать IDE с ноля, а написать плагин для существующей IDE?.. Да ну, глупости какие, никто так не делает.
Ваша конфигурация для VIM вообще без труда переносится с машины на машину. Будет ли так просто с вашей IDE?
да. Подумаешь, ракетная наука.
С Vim вам не понадобится мышь
Это же ведь только vim весь клавиатурно-ориентированный, откуда тупым разработчикам ненужных IDE знать, что программистам может быть удобно не пользоваться мышью. А 54 страницы действий, доступных для биндинга, плагины поддержки vi и emacs modes, поддержка биндинга на две последовательные комбинации клавиш для тех, кому не хватает всей клавиатуры (в IDEA, по крайней мере) — это… это агония, вот!
что касается языков программирования и разметки, то вам понадобится осваивать несколько IDE со своими особенностями
Всем известно, что обратной дороги из IDE нет: к пользователям IDE, дерзнувшим воспользоваться блокнотом, на дом выезжает наряд полиции IDE (два огнемётчика и собака; собака внимательно слушает ваши оправдания перед тем, как огнемётчики начнут вас запекать).mpetrunin
18.06.2016 09:21как и для комфортной разработки ПО вообще
«мощная» == «с как можно бо?льшим кол-вом 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 преимуществом. А вы?develop7
20.06.2016 12:41+1связка рабочая и комфортная, проверено на себе.
я не сомневаюсь. я к тому, что 24G RAM (нижняя планка комфортной работы (привет, Google Chrome!)) для рабочей станции стоят меньше, чем может показаться
Очень интересно будет увидеть плагины для IDE (хотя бы для подсветки синтаксиса, хрен бы с обработкой ошибок и прочим) для систем компьютерной алгебры GAP и Magma
скармливаем https://github.com/dhowden/Magma.tmbundle и https://github.com/dhowden/gap-tmbundle (Sage textmate bundle не гуглится) плагину https://plugins.jetbrains.com/plugin/7221. Я понимаю, что так нечестно и это не касается не-IDEA, но тем не менее.
Мой опыт работы в VIM и обощённых IDE говорит о том, что работа без мыши в VIM комфортнее
позвольте усомниться в добросовестности ваших стараний работать без мыши в обобщённых IDE
я думаю, что связано это моё удобство с тем, что VIM изначально затачивался на работу без мыши, а для IDE работа без мыши — некоторая отдельная фича
my words exactly
Ну и по мне, так сложнее запомнить 54 страницы горячих клавиш, чем запомнить ограниченное число действий VIM, которые повторяются в различных вариантах.
вы, главное, ни в коем случае не ходите посмотреть, как оно там на самом деле — есть неиллюзорный шанс, что ленивые еретики из JetBrains и это учли
Дальше вам нужен ещё один ЯП, и под него вам нужен третий инструмент.
по всей видимости, полиция IDE следит ещё и за тем, чтобы ни одна IDE не поддерживала больше одного, максимум двух ЯПmpetrunin
20.06.2016 19:14Вопрос не в цене. Вопрос в том, зачем что-то делать, если можно этого не делать? Конкретно работая в VIM я могу себе позволить не думать о железе 10 (прописью, десять) лет. Т.е. в течение 10-ти лет мой выбор VIM в качестве основного инструмента разработки позволяет забыть о такой проблеме, как вынужденное обновление рабочей станции (конкретно в моём случае, ноутбука). На мой взгляд, это преимущество. Им можно пользоваться или нет, но это другой вопрос. Или вы не согласны?
Насчёт JetBrains, я выше писал, что я ушёл с IDE, не попробовав продкты JetBrains (если не ошибаюсь, они стали по-настоящему популярны только в последние годы), поэтому, действительно, допускаю, что многое стало сильно лучше.
А по поводу полиции IDE, я не до конца вас понимаю, вы считаете, что существует IDE, которая поддерживает всевозможные ЯП? Или, что существуют две, которые в сумме покрывают весь спектр? Или хотя бы столько, сколько поддерживает VIM? Потому что, если это вдруг не так (моя ставка), то я подберу вам 3 ЯП, для которых надо будет 3 IDE.
Ну а вообще, судя по тому же JetBrains, то на каждый ЯП своя IDE.
terryP
20.06.2016 19:33+4Ну а вообще, судя по тому же 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 их тоже дофига.grossws
20.06.2016 19:44DSL
Какой именно?
Поддержка rust'а в идее недавно была на уровне подсветки синтаксиса и запуска cargo. Если вдруг сегодня вышли новые версии rust и oxidize плагинов с поддержкой автодополнения (не в рамках одного файла) и go to definition — дайте знать. Вчера, когда сносил эти плагины, этого функционала ещё не было. В случае же vim, emacs, atom/vscode — оно есть через ycmd.terryP
20.06.2016 19:57+1Какой именно?
Разной, см. офф сайт JB и страничку с плагинами: Anko DSL, Coocoo DSL, DSL Platform, Tara DSL и т.п…
плагинов с поддержкой автодополнения (не в рамках одного файла) и go to definition
Вы же понимаете, что так сравнивать можно бесконечно. Все ли из 180 ЯП из плагинов Idea реализованы в Vim (есть какой-нибудь К или Fantom ?), везде ли автодополнения Vim'a настолько же интеллектуально как в Idea (в частности Java, JavaScript, PHP)? Это уже вкусовщина, тем более что ни вы, ни я не сможем досконально сравнить сотни плагинов для Idea и Vim'а. Как минимум, кол-во плагинов популярных языков достаточно велико в обоих случаях.grossws
20.06.2016 20:17Разной, см. офф сайт JB и страничку с плагинами: Anko DSL, Coocoo DSL, DSL Platform, Tara DSL и т.п…
Это было намёком, что DSL приводить в списке general purpose языков несколько странно.
Другая же часть касалась того, что значительная часть плагинов поддержки языков для идеи — реализованы также или хуже чем в vim'е. И если не рассматривать поддержку массовых языков, фреймворков на них и библиотек сериализации (всякие avro, protobuf) — то эти ">180" плагинов в среднем просто пшик.
Поддержка немассовых языков хромает везде, но в моей практике в случае vim'а она оказывалась лучше в нём, нежели в идее.
Вероятнее всего потому, что база пользователей vim'а, способных реализовать такую поддержку банально больше.
P. S. разрабатываю в основном в идее и смежных продуктах (rubymine, pycharm).
symbix
20.06.2016 22:10+1«я выше писал, что я ушёл с IDE, не попробовав продкты JetBrains» — значит, вы не видели нормальных IDE! :)
До того, как JetBrains-овские IDE стали действительно мощными и удобными (ну и IdeaVIM не стал достаточно юзабельным, хыхы), я сам пользоватся vim-ом и считал, что IDE мне не нужны.
serf
17.06.2016 22:15Автор а вы работаете в команде? Допустим да. Допустим команда на 10+ человек и бывают пополнения. Вы бы смогли убедить команду (и возможно начальство) что Vim решает? Допустим смогли, тогда вы бы взяли на себя дополнительную обязанность обучить всю команду и сделать работу команды более продуктивной чем в IDE (допустим что-то от IntelliJ)?
Delphinum
17.06.2016 22:18+7Хоспади, зачем убеждать команду и начальство переходить на Vim? Оо
serf
17.06.2016 22:24Ну как же, автор ведь пишет
Но если у вас вдруг появилось немного времени на повышение вашей эффективности в целом, то попробую вас заинтересовать именно Vim'ом
Ну вот мне и интересно как предполагаемые члены команды автора восприняли его методы повышения эффективности. Я полагаю он уже убедил команду и решил идти дальше так сказать проповедовать.Delphinum
17.06.2016 22:28+2Думаю автор говорит об интересе читателя к редактору, а не об убеждении читателем своих тиммейтов.
AxVPast
17.06.2016 23:39Вообще, если смотреть внимательно на скриншот — человеку не только в команде не работает, он еще и делает проекты — самоделки с коротким жизненным циклом. Вобщем он сам себя проклял вечной поддержкой своих исодников в одиночку.
Парное программирование — шутите?
Черезмерное обилие коментариев и одно окно — укзаывает на простую вещь — тестов нет (т.е. идеология когда тесты как документация к системе). В той-же Java переход от кода к тесту выполняется в 1 шорткат (это при том, что тесты расположены в совсем другой части файловой системы).
Скорее всего еще и файл — исходник — один. Как обычно в таких случаях файл из не мнее чем 3000 строк кода (с фигурным выравнаиванием по ширине в стиле прощай code convention + удачи в рассмотрении diff после переформатирования).
Быстрый запуск тестов из командной строки — оно конечно прикольно, но IDE обычно позволяет выбрать 1 сломавшийся тест и отлаживать только его до упора.
Работа с git/svn из командной строки — да иногда и я так делаю. Но мне больше нравится когда система в автомате цепляет нужные мне изменения в файловой системе и:
git status
git add
git commit -m «JIRA-131313 Wow»
git push
выполняется вобщем-то в один шорткат. Сколько там кнопаок натыкал адепт vim? Я две, у него… кхм… но он ведь быстрее меня их тыкает :).
Рефакторинг? Взять метод и аккуртано перенести в другое место с учетом зависимостей? Или из фагмента кода сделать функцию?
В результате и полявляется код с односложными переменными типа a = b + c; Где никогда не догадаешся, что а это totalGoodsAmuont, b это goodsAmountInBasket, с это goodsAmountInBox. Потому, что набирать много букв — обычно трудно (в ide я бы обошелся 2-4мя нажатиями чтобы это все набрать без единой грамматической ошибки). А сделать переименование totalGoodsAmuont -> totalGoodsAmount :).
Дальше если тесты слетели на Тимсити (да, бывает тесты работают только почему-то на твоей рабочей станции) — тебя сразу (в Java) тыкают носом в нужный класс/метод. Отображают все билды, которые ты свалил своми коммитом (даже если билд выполняется раз в час и не по коммитно) Более того, IDE демонстрирует при этом огромный алерт. Ну, конечно, можно дождаться письма от Тимсити или просто сосед прийдет с вопросом.
Вообще мне приходилось видеть «адептов» такого подхода. Они живут в состоянии перемотки (см фильм «Клик: С Пультом по жизни» https://www.kinopoisk.ru/film/77576/). Они думают, что они невероятно быстро работают. При этом, когда ты сидиш рядом с ними и мучтительно ждеш — когда он выполезт из одного каталога (командой cd), вползёт в другой каталог. Через git status проверит файлы, потом будет почти с нуля набирать git commit -m «JIRA-2324 ...». Запуск и просмотр тестов отдельный кошмар и конечно — же фигурно отформатированный исходник в 3000-7000 строк кода (так как разбить на файлы неудобно, в результате есть красивые горизонтальные маркеры из знаков =====).mpetrunin
18.06.2016 09:53Вообще, если смотреть внимательно на скриншот — человеку не только в команде не работает, он еще и делает проекты — самоделки с коротким жизненным циклом. Вобщем он сам себя проклял вечной поддержкой своих исодников в одиночку.
Парное программирование — шутите?
Черезмерное обилие коментариев и одно окно — укзаывает на простую вещь — тестов нет (т.е. идеология когда тесты как документация к системе). В той-же Java переход от кода к тесту выполняется в 1 шорткат (это при том, что тесты расположены в совсем другой части файловой системы).
К сожалению для вас, всю вашу спесь и желчь вы изливали не на того человека. Быть может даже автор того, что на снимке экрана, вовсе не пишет в VIM (хотя что это я?! Конечно же пишет — он автор vim-go).
Возможно, вы редко встречаетесь с Open Source, но в этом мире принято документировать свои "самоделки", особенно, если это библиотека, предназначенная для использования сообществом. Конкретно на скриншоте — главный файл библиотеки color.go, у которой 932 звезды и 74 форка на гитхабе, много ли ваших проектов в той же степени заинтересовали сообщество?
По остальным претензиям к этому снимку экрана, замечу, что "короткий жизненный цикл" на данный момент превышает 2.5 года, на протяжении которых совершаются регулярные коммиты, а поддержку исходников автору помогают осуществлять ещё 11 программистов, согласно статистике репозитория. Тесты, конечно же, есть.
Этот чужой снимок экрана я привёл потому, что на нём: автодополнение с учётом семантики, структура файла и докментация к слову под курсором.
По всему остальному вашему комментарию: удобные коммиты есть, рефракторинг есть, автодополнение и, следовательно, длинные имена переменных есть.AxVPast
18.06.2016 19:05Открываем библиотеку — внимательно смотрим. Тест файл лежит рядом с файлом — библиотекой, документацияй к нему и так далее. 4 теста (на 43 функции) тоже не плохо, против их отсутствия (с тестами на mocha сравнивать ну буду). Возможно в этом случае не имеет никакого значения — попадет тест и прочие файлы в дистрибутив или нет. Как только появляется каталог типа src и test то брожение между этими 2мя каталогами (через команду cd) уже становистя проблемой. Нет каталогов — нет проблем — я обычно именно это и связываю с «особенностями» работы не в IDE.
> спесь и желчь
Скорее это боль, наблюдать как публика пытается работать не в IDE да еще и в чем-нить типа mcedit/nano или vim в базовой комплектации.AxVPast
18.06.2016 19:59-1Важное уточнение — не правильно сравнивать 11 программистов которые что-то исправляли и команду из 11 программистов работющих совместно (над одним проектом) в одном помещении.
Обычно в команде важно, чтобы подойдя к соседу, сев за его компьютер ты мог исправить что-то в программе.
Для того, чтобы это работало — нужно чтобы у всех была одинаковая IDE & клавиатура и трекпад.
Тут уже пошутили по поводу — убедить руководство всех пересдаить на VIM :).VolCh
18.06.2016 23:34+3Обычно в команде важно, чтобы подойдя к соседу, сев за его компьютер ты мог исправить что-то в программе.
Для того, чтобы это работало — нужно чтобы у всех была одинаковая IDE & клавиатура и трекпад.
Ни разу за 20+ лет с таким не встречался. Обычно правило — стандарта нет, каждый пользуется тем, что ему больше нравится.AxVPast
19.06.2016 11:47Стандарт обычно есть, просто он часто соблюдается де-факто и не закреплен де-юре.
Обычно компания покупает компьютеры (+мониторы) — итого компьютер = стандарт (админам зоопарк не нужен).
Принести свою клавиатуру/мышку иногда можно, а иногда просто запрещено (т.к. оборудование должно пройти аудит по безопасности). Раньше (пока это было возможно) я так и делал, а потом заметил, что часть времени приходится работать за комьютером соседа. В результате сам-же себе мешаеш своей нестандартностью (кнопки на клавиатуре у соседа не на тех-же местах).
Поставить что-то отличное от стандартной опреационной системы иногда можно, иногда при попытке что-то поменять сразу начинаются административные проблемы.
Поставить софт скачанный из интернета иногда можно, иногда за это сразу получаешь предупреждение и при неисполнении к тебе начинают применять различные неприятные методы убеждения вплоть до увольнения.
В этом случае, самое забавное, применить вим с плагинами тоже не получится как на рабочей станции так и на сервере :)
Обычно намного проще убедить окружающих пользоваться одинаковыми инструментами тем, что лиды проекта используют эти инструменты. Достоврено известно как их настраивать и как они работают и не работают. Ставите что-то своё — Вам никто не поможет. Прямой пример в лоб — у окружающих стоят продукты от JetBrains. Появляется адепт вима. У него что-то не работает — к кому теперь ему подойти и попросить помощи?
Обратный вариант — лид — адепт вима. Ему дают зеленючего джуниора в падаваны. Одно дело сказать «поставить этот продукт» и пользоваться. Второе с ним совместно настраивать вим а потом учить как им пользоваться (вопрос мэнеджера «сверху» — Вы тут работать пришли или вим учить?).symbix
19.06.2016 16:17+3Ужас какой. Тем более, что под стандартной ОС обычно понимается Windows — лично я в ней вообще эффективно работать не могу, я привык к юникс-системам.
Надеюсь, в одинаковой одежде всем ходить и корпоративные гимны по утрам петь не надо?AxVPast
19.06.2016 20:59Сложный философский вопрос — за сколько денег Вы бы согласились следовать таким парвилам :).
Ответ «никогда» будет звучать немного необдуманно по сравнению с новеньким автомобилем, купленным на разницу того, сколько Вы получаете сейчас и сколько могли бы получать «следуя неким правилам».symbix
20.06.2016 04:36Почему сложный? Вовсе нет, начиная с $10k/m я бы крепко задумался и на многое согласился, а за $20k/m я бы и гимны попел. Через годик бы уволился, конечно.
AxVPast
20.06.2016 21:15Не, за такие деньги нужно еще и костюм одеть и галстук и покжанные туфли :).
symbix
21.06.2016 16:34Я готов! Куда слать резюме?
AxVPast
21.06.2016 23:44+1Легко. Выбираеш топ 10 финансовых оранизаций мира и рассылаешь резюме на должность CTO.
Там пишеш, что знаеш vim, умееш надевать костюм и когда — то в кошмарном сне видел Windows, установленный на десятках тысяч компьютеров :)
sl_bug
19.06.2016 00:02+6> подойдя к соседу, сев за его компьютер ты мог исправить что-то в программе.
Больно бы ударил того, кто попробовал бы подойти и на моем компьютере что-то исправить.AxVPast
19.06.2016 11:27То есть Вы никогад никому не помогаете?
А если и помогаете, то Вас не остановит что у человека на экране такое:
https://habrastorage.org/storage2/833/345/82d/83334582dcd4b38fc58c43d20962b5a7.pngsl_bug
19.06.2016 11:29+2Словами можно помочь, а не тянуть свои руки к чужому имуществу :)
AxVPast
19.06.2016 12:10-3Пример — у Вас все шикрано работает.
Сосед тянет Вашу программу из репозитория, собирает, запускает, у него она слетает с чем-то типа core dumped. С учетом, что он немного джун — реально задолбаешся рассказывать как пользовться gdb, ldd и прочими страшными словами.
Намного проще человека галантно попросить поделиться клавиатурой и разобраться самому, что оно не так.DistortNeo
19.06.2016 15:05+2> реально задолбаешся рассказывать как пользовться gdb, ldd и прочими страшными словами.
А зачем рассказывать про gdb и ldd, когда существуют удобные надстройки над ними в виде IDE?
> Намного проще человека галантно попросить поделиться клавиатурой и разобраться самому, что оно не так.
Увы, это не так. Да, можно быстро решить чужую проблему самому, но это нисколько не поможет джуну в дальнейшем решить аналогичную проблему из-за того, что вы лишаете его таким образом драгоценного опыта.
Ну а если специфика работы требует использования именно vim и gdb — придётся смириться с тем, что порог вхождения в них высок по сравнению с IDE, и нужно либо набирать разработчиков, умеющих с ними эффективно работать, либо потратить 2-3 месяца только на одно обучение и выработку автоматических навыков.
symbix
19.06.2016 16:11+1Проще? Ну, да, в случае с джуном проще вообще всю работу за него сделать.
Если уж взяли джуна, то надо «задалбываться», рассказывать и учить.
mpetrunin
19.06.2016 20:52У вас какое-то очень странное представление о том, как в VIM работать с несколькими файлами, или с проектом с развитой структурой. VIM сам по себе достаточно удобен для работы со многими файлами. А с помощью плагинов он может ещё больше: от банального древовидного каталога и выбора файла с помощью чего-то типа NERDTree:
до совершенно бесподобных штук с нечетким поиском типа fzf или ctrl-p:
Во втором случае, открытие другого файла мгновенно, и никакая IDE без аналогичного функционала (или с любым "мышечным" способом открытия файлов) не сможет соревноваться с VIM в этом вопросе.
Ну это надо не забывать, ещё про такие штуки как go to definition и перескачка между файлом и соответствующим тестом, quickfix с ошибками или упавшими тестами (т.е. открытие нужного файла на позиции ошибки) и т.п. Всё это в VIM есть и очень удобно.
symbix
20.06.2016 04:50+1Про fzf и ctrl-p не знал, спасибо, пригодится — всякую мелочь по старой памяти я в виме редактирую; vimrc еще с тех пор остался, когда вимом пользовался активно (лет 7, наверное, ему), так что про новье не в курсе, там у меня основа — это NERDTree + MiniBufExplorer.
А «бесподобно» — это все же перебор. JetBrains-овские IDE умеют то же самое, причем и по файлам, и по именам классов-интерфейсов. Срабатывает все моментально. Мышку же я вообще не трогаю, зачем? Один раз пробил все хоткеи, как мне удобно, и отключил к чертям все тулбары с менюшками.AxVPast
20.06.2016 21:08Джет брейнс по поиску — чемпион. Конечно их индекс несколько версий душевно глючил, но моментальный поиск всего, что угодно в проекте размером в гигабайт очень даже реальность.
В свое время был интересный момент — огромный проект более чем на 40000 классов. Jet с трудом всасывало это все в индекс (реально надо было включить индексирование и уйти на обед) и потом все работало мгновенно. Иногда индексация падала (и надо было начинать все с начала). Эклипс ничего не индексировал и живенько стартовал. Но при попытке что-то поискать… уходил на полчаса в даун. Вариант с grep даже в голову никому не приходил (ввиду огромного числа jar файлов). Впрочем речь тут идет про вим и навреняка есть подходящий плагин который может намного больше ;).
f0rk
22.06.2016 13:22+5и никакая IDE без аналогичного функционала (или с любым «мышечным» способом открытия файлов) не сможет соревноваться с VIM в этом вопросе.
Я правильно понимаю, что вы что-то типа такого имеете в виду?
miga
17.06.2016 22:39-2Уже пару лет пытаюсь перейти с вима на IDE, влекомый растущей сложностью кода и безобразной (ну действительно же безобразной, по сравнению с тем, что есть в нормальных IDE) работой умных плагинов (типа jedi). Останавливают две вещи — 1) отсутствие нормального редактора во всех IDE (вим-моды — это курам на смех) и 2) невозможность нормальной работы на удаленном сервере.
Delphinum
17.06.2016 22:45+6Зачем вам программировать на удаленном сервере? Настройте себе толковый деплой и радуйтесь.
miga
17.06.2016 22:48-2Да я как-то привык писать маленькими частями, в стиле написал — проверил в соседней консоли. На деплой в таком случае уходит слишком много времени
Delphinum
17.06.2016 22:51+3Может unit-тесты или локальная сборка решат проблему?
miga
17.06.2016 23:02-1Решат, если начать писать тесты, хаха :)
На самом деле основное для меня — это именно редактор. По сравнению с вимом штатные все-таки совершенно беспомощныpoxu
19.06.2016 15:40+1Золотые слова! По какой-то непонятной причине защитника вима не делают на редакторе акцент, а это пожалуй основное и единственное. IDE это добро, но оно было бы ещё добрее, если бы там текст можно было нормально редактировать. Я работаю в Intellij Idea с установленным плагином IdeaVim. Вроде неплохо получается, хоть редактор до вима и недотягивает.
AxVPast
17.06.2016 23:50от 7 до 50 миллисекунд на прогон всех тестов по файлу, который я сейчас редактрую.
5 минут на git push, прогон всех тестов перед сборкой дистрибутива, его деплой и прогон всех тестов уровня приложения. При этом я 95% уверен, что я ничего не сломал.
Уверены, что Ваш метод быстрее?
magalex
18.06.2016 09:57+1Как вариант: в PHPStorm можно настроить автоматическую загрузку изменённого файла по ssh на нужный сервер
monolithed
19.06.2016 21:53Это очень хорошо работает пока для доступа на удаленный сервер не используется авторизационный токен, который успевает протухнуть пока настраивается подключение.
mpetrunin
18.06.2016 09:58В посте я приводил возможные причины:
- физическая привязка к оборудованию удалённого сервера (например, GPU)
- удалённый сервер мощнее и там комфортнее работать
- на удалённом сервере всегда открытая рабочая сессия, доступная со всех устройств.
serf
17.06.2016 23:57В IDE разве нет возможности подключать удаленные/виртуальные каталоги (через ftp / sftp)? Eclipse вроде как уже очень давно это умеет из коробки ну и плагины никто не отменял если у вас запросы специфичные.
alexkunin
18.06.2016 03:59+1Отвечу за шторм, там все есть, я так делал: новый проект, настраиваю удаленный доступ, делаю синхронизацию в локалку (чтобы быстро перемещаться по файлам, поиск-замена, и т.д.), и затем включаю режим «автозагрузка по сохранению». Шикарно работает.
Там даже на mysql-сервер можно по ssh ходить.
rdifb0
18.06.2016 09:58+2Чем вам вим-моды не угодили, можете привести пару примеров чтобы прям «курам на смех»? Во всех IDE которыми я пользовался VS (VsVim), Netbeans (jVi), Idea (ideavim) основной функционал навигации / редактирования имхо удовлетворителен.
miga
18.06.2016 13:06Дьявол, как водится, в деталях — где-то нет макросов, где-то каких-нибудь движений, где-то нету калькулятора в режиме вставки и С-a/C-x — короче, всех этих штучек, за которые мы и любим вим.
stavenko
21.06.2016 16:57сел гуглить про калкулятор и про инкримент…
Спасибо добрый человек. 10 лет вим знаю, а этим ни разу не пользовался…
poxu
19.06.2016 15:43В ideavim навигация в стиле вима не работает при выборе метода из контекстной подсказки. И по результатам поиска так перемещаться не получается. И так далее.
DenimTornado
17.06.2016 23:09Да всё просто, мне не нужен громоздкий швейцарский нож, который трудно держать в руке (а руки у меня небольшие). Мне нужна катана, которую я сам заточил… Да я не смогу ею открутить шуруп или вырезать снежинку из картона зато рубит она идеально.
brain2xml
17.06.2016 23:21-2пример из мой практике, возможно глупый
после переходу на vim мне не хватало автодополнений. Искать плагин времени не было как и разбираться как заточить vim под php. Пришлось просто вспомнить. Как оказалось, я очень много функций знаю наизусть, как впрочем и css правил. Но это я чисто про себя. Понятно что не всем это подходит.
EvilBeaver
18.06.2016 00:13+4Сколько VIM не изучай, а он все равно бибикает и портит. Имхо, таких агитирующих статей было уже много. И я даже верю, что эффективность растет. Но сам не достиг. Сколько еще упорства нужно вложить? Наверное, одно простое видео с демонстрацией киллер-фич будет эффективнее десятка статей. Запишет кто?
alexkunin
18.06.2016 04:02Таких видео много, поищите что-нибудь помпезное вроде «vim guru». Сколько упорства? Пару лет (плюс-минус, зависит от ваших усилий; при полном погружении — год и более, но уж не менее). И все равно будет находить новое, ранее вами пропущенное. Помогают сайты вроде vimgolf, регулярное гугление «vim tricks», «vim best practices».
golovim
18.06.2016 00:33+2Да… В комментариях начался какой-то абсолютно идиотский спора: Vim vs IDE. Вообще не понимаю зачем так ставить вопрос, и IDE и Vim — это иснтрументы, а как известно, каждой задаче свой инструмент. Где-то IDE так же необходима, как воздух, а где-то в ней нет особой необходимости и там уже каждый сам решает что для него продуктивная работа — супербыстрная и мегавыразительная работа с текстом, либо же рефаторинги и code autocomplete. И! Что самое важное, абсолютно нормально, если вы сейчас пишите на Java в Idea, а через пять минут открываете Vim и пишите на том же JS. Нужно учиться работать эффективно, это да, но нельзя искать "серебряную пулю", которая решит все ваши проблемы
serf
18.06.2016 01:40Как автор вопрос поставил такие и комментарии. JS писать в редакторе глупо, если конечно код не уровня скопипастить что-то со стекоферфлоу, добавить google analytics на страницу и тд. Я тоже пользуюсь реакторами, но для редактирования текста, не кода.
mpetrunin
18.06.2016 10:05А как я поставил вопрос? С моей точки зрения я написал, что-то типа такого: "у VIM есть ряд преимуществ перед IDE, если вас какое-то из них заинтересовало — попробуйте VIM". А что вы увидели?
poxu
19.06.2016 15:46Каждой задаче свой инструмент? Вы дискуссию то вообще читали? Тут весь спор в том, что противоположные стороны считают Vim и IDE лучшими инструментами для решения одной и той же задачи.
Desprit
18.06.2016 10:00+2Мои пять копеек.
Сделал три попытки пересесть на VIM. Первая была просто из любопытства, закончилась примерно через 15 минут. Вторая была из-за советов уважаемых мною знакомых. Снова закончилась по причине того, что под рукой был привычный Sublime а работа подгоняла. Третья попытка совпала с моментом покупки нового ноубука, я изначально поставил на него только tmux и vim. Затем шла неделя матов и непрерывного гугления чего-то типа «Как перейти в конец строки», «Как вырезать текст между ковычками» и тд. Затем неделя на написание своего небольшого vimrc и парой самых распростроненных плагинов. Прошел год и я очень доволен. Особенно чуввствуется отказ от мыши в дороге. Раньше при ее отсутствии моя производительность изза плохого тачпада падала прилично, а теперь красота. Vimrc тем временем разросся, появилось множество удобных вещей от обычного lint'a и до всяких кастомных спиппетов. Плагин Vim Hard Time помог отказаться от кликанья по стрелкам. Ну и, как уже говорили выше, связка tmux+vim дает возможность поддерживать одну сессию на работе, дома и вообще на любой машине.
А сохранение vimrc где-нибудь в своем репозитории делает возможным сделать restore всех настроек локально где угодно.
leventov
18.06.2016 14:48Возможно я пропустил, никто не упомянул такое преимущество IDE как подсветка ошибок, т. е. встроенный статический анализ. Есть такое для Vim?
Desprit
20.06.2016 16:15Разумеется. Для питона, например, есть плагин Python-Mode. Там хренова туча всего, я, правда, пользуюсь только pylint и раньше пользовался подсветкой ошибок PEP8.
moveax3
18.06.2016 14:50+1есть такая важная вещь, как понимание инструмента. Если начинать знакомство с каким бы то ни было языком не с консольки и простого редактора, а с ide, то мы получаем «программиста», который не понимает, что там физически происходит, когда мы галочки в настройках проекта тыкаем, и зелененькую кнопочку run нажимаем, и становится полностью бессильным, если вдруг ide начинает шкварить. А потом мы видим на тостере дибильные вопросы вида «создал проект в вижуалстудии, там куча файлов непонятных, ничего не работает».
Еще один занимательный момент — пользователи vim обычно юзают и ide (с вим плагином разумеется), и vim, поклонники ide как правило дальше vimtutor не заходили, но при этом уверенно сравнивают vim с чем бы то ни было и описывают его недостатки. Это типа «не читал, но книга точно не интересная». Освоить возможности идеи можно за день работы, если ты понимаешь процесс, ибо идея и ее производные — это по сути те же команды в консольке, наткоторые навешаны кнопочки и автоматизация.VolCh
18.06.2016 23:36идея и ее производные — это по сути те же команды в консольке, наткоторые навешаны кнопочки и автоматизация
Не знаю насчёт идеи с джавой, но в пхп точно нет многих команд в консольке, которые есть в пхпшторм.
viatoriche
18.06.2016 14:58+2Пользуюсь и Vim и Pycharm. Несколько лет пользовался только Vim, и для правки конфигов и для написания кода. Vimrc оброс плагинами, был и eclim и прочее. Так продолжалось 3-4 года. Я был истинным апологетом вима, всем рекомендовал вим, восхвалял его, вступал в дискуссии. Потом я попробовал PyCharm, где я сразу же установил IdeaVim, с тех пор не мыслю промышленное программирование без него. Vim — отличный редактор, прекрасный редактор текста: режимы, навигация, hjkl — очень удобно. Но PyCharm дает больше за меньшее усилие. Умный автокомплит, интеграцию с фреймворками (django, flask), встроенные утилиты и помощники — генерация UML, интерфейсы для модульного тестирования, множество удобных инструментов для систем контроля версий и хабов репозиториев, количество полезных плагинов доступны и легко устанавливаются, рефакторинг гораздо умнее всего, что я пробовал под python для vim (rope, eclim), проект выглядит как одно целое — а не просто директория с файлами, профилирование, полноценный дебаг, удаленный интерпретатор и, как следствие, удаленный дебаг (например внутри vagrant), тут и инструменты для деплоя, докер. Ну и, конечно же, какое редактирование кода без удобного редактора? Пожалуйста — IdeaVim, который ставит окончательную точку с выбором среды разработки. Vim — это для быстрой правки файлов, конфигов, особенно удаленно. Vim — хороший продукт, но, имхо к программированию его стали адаптировать, потому что не было достойных IDE, и людям хотелось vim-like workflow. Сейчас это не так, сейчас вим никогда не догонит профессиональную IDE, если такая IDE конечно есть (а есть она не для всех ЯП).
DistortNeo
18.06.2016 15:42+1Люди, а вы не учитываете, что в современном мире ещё существуют разработчики на C++?
Для написания кода на JS, CSS, PHP, правки SQL и т.д. я использую Sublime Text, мне его возможностей хватает за глаза.
Но для проектов на C++ — IDE и только IDE.
Для разработки на C++ сама по себе нужна мощная рабочая станция (скорость компиляции крайне важна), поэтому использование мощной IDE не является проблемой. VS загружается с нуля и открывает проект за 5 секунд, после чего совсем не тормозит. Зачем мне нужно что-то ещё?
Для переноса настроек существует вполне удобный иструмент импорта/экспорта настроек.
А отлаживаться непосредственно на сервере — мне это кажется немного странным.billyevans
18.06.2016 16:23+2А как VS или что там для плюсов есть под linux запустить на удаленном серваке в консоле? Я до этого работал довольно долго с С++, у нас было около 2М строк кода в проекте. Все прекрасно в виме всё редактировали. На обычном компе это былоб нереалько компилить, тесты бы наверное часами бы гонялись с поднятием докеров и тд. Да и дебагер бы я подозреваю постоянно свопился бы(там нужно было сильно много памяти). да и ставить весьма экзотичные дистрибутивы на рабочую станцию тоже не особо как то. Можно конечно в виртуальку, но как то это то еще удовольствие. Можно, наверное, настроить монтирование по sshfs и удаленную комплияцию, но это тоже то еще занятие. IDE однозначно удобнее, но в таких ситуациях vim и gdb есть везде, на любом разработческом/продакшн серваке.
Как правило на удаленном серваке что-то дебагают, потому что там такое окружение где баг воспроизводится, есть все нужные данные, с сетью все нормально(в том плане, что на локальной машине может быть другая подсеть, порты закрыты или еще что-нить). Ну или даже если можно подебагать локально, зачастую нужно притащить данных с десяток гигабайт, наверняка пробросить пару портов, возможно еще что-нить подчудить с DNS-ом.
На локальной машине может быть другое ядро, по-другому настроно, с другим переключением процессов, в общем дофига нюансов.DistortNeo
18.06.2016 17:44И вот снова приходим к тому, что невозможно учесть все нюансы. Продолжаем: существуют разработчики на C++, которые не занимаются разработкой серверного кода и веб-приложений, да вообще не занимаются разработкой сетевых приложений. То есть не имеет значения, в какой среде разрабатывается и запускается код.
Наверное, я не очень себе представляют процесс индустриального сетевого программирования, но что-то мне подсказывает, что если разработчики вынуждены править код непосредственно на сервере (откуда и вылезает привязка к окружению), то процесс организован как-то неправильно.billyevans
18.06.2016 18:40А зачем еще тогда на С++ писать? Может разве, что игры. Формочки рисовать? тогда можно и на питоне/перле/bash это делать. Если писать на С++, то для этого должно быть строгое обоснование, там требования по памяти жеские и/или по скорости.
Возможно можно какую то либу напистаь в отрыве(какое-нить хитроумное дерево, например), но если, например, эта либа завязана на epoll/sendfile или еще какую-нить системной хедер, а у меня Mac OS X на лэптопе, то опять же приходим к тому, что удобнее на целевой платформе это делать. А переключаться с окна virtualbox-а с IDE на браузер и назад как то не очень удобно, хотя возможно это самое оно и есть.DistortNeo
18.06.2016 19:10Я, например, занимаюсь обработкой изображений — мне критично и время, и память. Поэтому язык — C++ для вычислительной части, C# для интерфейса. Питон и Матлаб — прототипирование. Насколько удобно и эффективно обрабатывать изображения на перле, JS и баше, наверное, объяснять не нужно?
Необходимость запуска кода на сервере может возникнуть только если нужно просчитать большой объём данных.billyevans
18.06.2016 19:19-1Да, для вычислительной части, соглашусь тут нужно, как и для всяких алгоритмический/криптографических библиотек, и они часто могут быть разработаны на локальной машине. Но большинство С++ кода, с которым я сталкивался было кардинально не таким.
zagayevskiy
18.06.2016 19:23+3Сейчас можно встретить мобильные приложения, у которых ядро на С++ и UI на Java, Objective-C, Swift, C#. Почему-то вы думаете, что мир крутится вокруг вас и ваших задач.
billyevans
18.06.2016 19:48-1Я как раз таки привел пример, когда приходится использовать vim/emacs для С++ и IDE для такого рода задач как то сильно накладно использовать. Чтоб разбавить изначальное утверждение «C++ — IDE и только IDE.».
zagayevskiy
18.06.2016 19:55Эээ… ядро пишет команда, которой всё равно, где это будет запускаться. Билд под платформы — на сервере. И пишут таки в IDE, по тем самым причинам, которые названы выше.
billyevans
18.06.2016 20:08-1Да ядро может легко зависеть от специфичных системных вызовов и хедеров или линковаться с какой-нить либой, которой нет на десктопе, там могут быть ассемблерные вставки еще что-то очень специфичное. Отделять такие вещи и городить кучу уровней абстракций тоже не особо нужно. Делать код портабельным это как то странно, тк он никогда не будет работать ни на чем отличным от платформы сервера.
DistortNeo
18.06.2016 21:01Всё правильно, но причинно-следственная связь здесь нарушена. В вашем случае выбор среды разработки обусловлен не удобством для разработчика, а требованиями проекта. Аналогичного эффекта можно добиться, заставив программировать на компьютере 10-летней давности с одним небольшим монитором и запретив использовать собственный комьютер для работы.
warlock13
18.06.2016 20:28-1Суть в том, что эта идеология настолько заразна, что хочется перенести её с редактора на все сферы общения с компьютером: браузер, pdf-просмоторщик, почтовый клиент, музыкальный проигрыватель, файловый менеджер и многое другое.
Я именно поэтому отрёкся от vim (а равно и Emacs): приходится к каждой программе искать/подбирать плагины и настройки, чтобы сделать из неё что-то vim-подобное. А плагины, как правило, не работают настолько хорошо, чтобы не приходилось страдать. В конце-концов я решил, что проще перейти в лагерь vim-ненавистников: да, это не так удобно, зато можно просто пользоваться хоткеями и другими возможностями программ, которые в них заложил разработчик, а не пытаться этого разработчика перехитрить. В итоге, Geany — моё всё.
khabib
18.06.2016 23:43Лучшая среда для C++ это студия (для linux — QtCreator), лучшая среда для python — PyCharm. Но, если постоянно работаешь с несколькими языками (в моем случай c/c++ и python ежедневно, редко — java, еще реже javascript, плюс ежедневно переключаться linux/windows) разные IDE, с разными настройками, разным поведением — начинается кошмар.
Vim/Emacs позволяет добиться использования одного универсального инструмента для всего. Пусть даже и с какими то ограничениями/недостаткамиterryP
19.06.2016 00:49+2Но, если постоянно работаешь с несколькими языками (в моем случай c/c++ и python ежедневно, редко — java, еще реже javascript, плюс ежедневно переключаться linux/windows) разные IDE, с разными настройками, разным поведением — начинается кошмар
c/c++ — CLion
python — PyCharm
java — IntelliJ IDEA
javascript — WebStorm
По сути все это линейка Idea адаптированная для разных языков с одинаковым поведением, то есть практически одна и та же IDE.
плюс ежедневно переключаться linux/windows
Вообще не проблема, Idea кросплатформенная.
terryP
19.06.2016 00:58+1Для сравненияCLion:
PyCharm:
IntelliJ IDEA:
WebStorm:
VolCh
19.06.2016 09:54+1По сути все это линейка Idea адаптированная для разных языков с одинаковым поведением, то есть практически одна и та же IDE.
По сути всё это базовая IDEA с плагинами для c/c++, python, java, javascript. Если взять полную IDEA, то все эти плагины можно подключить одновременно и не надо будет даже переключаться между разными IDE.grossws
20.06.2016 03:36Отдельного плагина для C/C++ пока нет (как и для ObjC, если вспомнить ещё AppCode). Кроме того, обычно плагины по фичам и багфиксам несколько отставали от специализированных сред.
На вкус и цвет, конечно, все фломастеры разные. Мне удобнее использовать специализированные среды от JetBrains, чтобы не перегружать основную IDE плагинами, не замусоривать список проектов и т. п.
Sild
18.06.2016 23:44Раз уж тут такие полёты со стрижами, может кто даст совет.
Есть у меня 8 серверов и рабочий комп с кучей алиасов на ссш (просто не люблю кучу конфигурации в разных местах)
как мне подсасывать конфиг вима с плагинами (ну или хотя бы только vimrc) с рабочей машины на сервера автоматом в рамках создаваемой ssh-сессии без костылей?tqgwint
19.06.2016 20:40Посоветую вам вот это github.com/Russell91/sshrc. Сам в свое время был озадачен похожим вопросом. Мне достаточно было vimrc ему в числе прочих rc скормить, плагины с собой носить чуть более хлопотно, но тоже возможно. Я предпочитаю редактировать удаленные файлы моим локальным емаксом, в сочетании с закладками и историей файлов получаестя быстрее чем логиниться на удаленный сервер и открывать тамошним вимом
HurrTheDurr
19.06.2016 02:02+2Пользуюсь и vim, и emacs, и IDE всех сортов и расцветок, под каждую задачу есть свой лучший инструмент.
Но вообще везде, для редактирования текста, использую плагины для эмуляции vim, они для любой IDE, даже с поддержкой макросов и иногда с поддержкой g/ и v/. Везде, где можно — с относительной нумерацией строк и позиционированием курсора в центре экрана, на этом конфигурация заканчивается. Без относительной нумерации строк пользоваться vim практически нереально, для меня это отличительный признак новичка или «позера» от профессионального пользователя. Была бы еще относительная нумерация слов — использовал бы и ее, но ее пока рисовать не научились.
Vim для меня, в первую очередь, — способ редактирования текста без использования мыши, очень быстрый, логичный и удобный. Макросы и множество буферов позволяют творить совершенно нереальные вещи, особенно при рефакторинге, которыми без знания vim было бы просто лень заниматься. Я считаю, что пытаться делать из чистого vim IDE — такое же извращение как и использование чего-то кроме режима эмуляции vim для редактирования кода.
Стоит ли учить vim как способ редактирования текста? Безусловно, всем советую, реально повышает производительность в разы и при этом делает программирование интересным процессом. Я бы даже добавил его в университетские программы обучения.
Стоит ли учить vim как отдельную программу, разбираться с плагинами и их особенностями? Не вижу никакого смысла, конфиги на удаленных серверах удобнее править будет, разве что. Но одной правкой конфигов к vim не привыкнуть никогда, для эффективного использования он требует выработки мышечной памяти, а это месяцы активной практики, которой лучше заниматься не в ущерб работе и в привычной IDE с полноценным функционалом в отношении используемого языка.grossws
19.06.2016 03:34Добавлю, что ещё vim с плагинами крайне полезен, когда для целевого языка ещё нет IDE или она крайне убога. В текущий момент, например, для rust vim + racer/ycm — один из лучших вариантов, IMHO.
djalin
19.06.2016 20:40А есть перевод " Practical Vim: Edit Text at the Speed of Thought"? Или хорошая книга на русском?
TheRishka
20.06.2016 10:53Неплохой холивар тут развели:) Я, будучи заядлым линуксоводом, очень люблю консоль и потому vim мне в чем-то симпотичен. Но все же пересесть на него я не пытался, поскольку текущая моя работа — это Android разработчик. И я себе очень плохо представляю как можно оперировать с кодом на крупных проектах. Есть ли в vim кодогенерация? Работа со встроенными утилитами, типа сборщиков (gradle, mvn)?
punkkk
20.06.2016 14:11-2Очень люблю эту тему, так как дико не понимаю любителей консольных редакторов, безусловно, есть свои плюсы, я обожаю sed, nano. В sed написать регулярку и вместе с find'ом использовать ее где нужно для меня просто колоссальное удовольствие, но аргументы про «тяжесть» во времена, когда машины слабыми уже не бывают почти, и стоят не так дорого что бы потянуть большинство IDE и не тормозить, звучат очень странно. А vim и прочее актуально для серверов, где нет графической оболочки, но там особо и не покодишь, обычно, разве что shell скрипты какие-нибудь. Короче, каждому своя область применения. Да и зачем париться над vim, если есть легкий sublimetext и прочие графические редакторы.
И просто личное наблюдение: большая часть любителей vim и прочих редакторов, обычно, пользуются им только ради того, что бы показать свою необычность.
Crandel
20.06.2016 14:28И просто личное наблюдение: большая часть любителей vim и прочих редакторов, обычно, пользуются им только ради того, что бы показать свою необычность.
Тут много с вами несогласных. Тут тожеpunkkk
20.06.2016 15:20Я ни в коем случае не говорил про всех, я же написал что это личное наблюдение. Исключительно из тех людей, которых я знаю лично.
dmitry_ch
23.06.2016 12:13+1Vim невероятно расширяем
Такие фразы я вижу годами в самых разных текстах «не знаю как вы, а я живу в (название ПО)». Они вроде как привлекают, но ничего особенного не говорят. Расширяется все, вопрос, каких усилий требуется от автора расширения для написания и для поддержания своего творения.
А вот последняя часть (советы, собственно) — спасибо, кратко и по существу!VolCh
23.06.2016 14:13Ещё вопрос — каких усилий от пользователя требуют поиск и установка нужного ему (по функциям, названия он не знает как правило) расширения.
k12th
При всей любви к VIM… Был у меня один знакомый евангелист, дал свой vimrc. Ну и оказалось, что запускается по времени примерно столько же, сколько обобщенная IDE, а переименовать функцию, не грепая вручную по всем исходникам, по-прежнему нельзя.
k12th
VIM я правда люблю и ни за что не променяю на nano или emacs. Но делать из него IDE — ну только если вы правда сегодня на Python, завтра на Clojure, послезавтра на Magma. Плюс для некоторых обобщенных IDE тоже есть туча плагинов.
mpetrunin
А что значит по-вашему "делать IDE"? При работе с большинством ЯП я добиваюсь в минимальном варианте того, чтобы были:
Чаще всего половина этого уже есть в базовой поставке VIM. Остальное 1-2 плагина для языка.
Это — IDE?
k12th
Нет, это всего-навсего уважающий себя редактор.
mpetrunin
А что тогда IDE?
k12th
Рефакторинг — переименование функций, методов, классов, переменных, параметров, файлов (перименовал/перенес файл — везде поменялись импорты), вещи типа extract variable/method/parameter.
Умная навигация, как минимум «Jump to definition».
Кодогенерация (типа сгенерировать моки для этого класса), хотя это отчасти решается сниппетами.
mpetrunin
В VIM встроенная навигация по тегам. Чаще всего "Go to definition" реализуется именно так. Но для некоторых языков есть отдельное "go to definition".
Для рефакторинга есть много инструментов. Вот тут обсуждаются для нескольких языков и в "общем случае".
Т.е. в целом от "уважающего себя редактора" до IDE в вашем определении отделяет одно дополнение с поддержкой рефакторинга? По-моему не такое уж и преступление вкатить плюс один плагин и сделать из вима IDE.
k12th
Ну, в целом, да, рефакторинг для меня самое важное (он не исчерпывается переименованием, кстати). Хотя вот ниже еще указали глубокую интеграцию с VCS, это тоже очень полезно. И не забудьте, вы обещали это для любого языка, а по вашей ссылке список весьма скудный:)
mpetrunin
Ну, что сходу нашёл — на то ссылку дал :) Не ставил перед собой целью собрать максимально полный список. Подозреваю тот, что по ссылке — не полный.
vsapronov
Я видел много программистов на vim. Могу точно сказать: они не рефакторят вообще. Им инструмент этого не дает в удобном виде. И обычно vim идет в одном пакете с религией «код должен быть высечен в камне» — написанный код изменению не подлежит. Наверное есть такие области программирования, где рефакторинг — это не обязательно, но большинство областей не такие.
Рефакторинг в IDE — это такие вещи как непосредственно рефакторинги: rename, extract class, extract function, introduce method parameter, replace inheritance with delegate. Плюс должны быть мощные аналитические средства: найти все реализации интерфейса/метода, построить диаграмму классов и многие другие.
Теперь подумайте: как это сделать чтобы не втупляла среда. Никак! Во первых нужно строить богатое связное синтаксическое дерево налету вместе с кодом. Прощай легковесный редактор! Здравствуй real-time строитель дерева кода покруче, чем в компиляторе!
Все, кто говорят, что в vim все это есть — просто никогда не рефакторят вот и все, поэтому им не понятно зачем нужны тяжелые IDE.
symbix
Принципиально IDE от редактора отличается тем, что IDE оперирует синтаксическим деревом редактируемого кода на целевом языке (или неким к нему приближением), а редактор оперирует символами и строками.
mpetrunin
Ну это особенности внутренней архитектуры, которые меня, если я только не пишу дополнения к этому редактору/IDE, особо не должны волновать.
symbix
Разумеется, само по себе понятие о синтаксической структуре редактируемого кода, без конкретной цели, было бы бесполезно, разве что помещение обогревать. Нормальная IDE позволяет организовать навигацию по проекту в различных направлениях и контекстах, производить различные виды рефакторинга, человеческий автокомплит с пониманием контекста, анализирует код на ошибки — от банальных опечаток типа неопределенных переменных до некоторых видов статического анализа, которые осуществимы в реальном времени. Чем больше проект, тем важнее все это становится. В редакторе же все сводится к регулярным выражениям, чего для подавляющего большинства языков программирования недостаточно.
Ну и, конечно, для любой нормальной IDE есть vim-плагин, я, например, без IdeaVIM не представляю, как работать :)
stavenko
В теории и для основным языков (java, c++) это действительно так. Когда я работал в проекте, где основным backend была java это работало.
Правда в том же проекте фронтендщики работали на JS. И для JS этот функционал был неюзабелен. Батарейка ноутбука съедалась мгновенно, и даже автоподстановка для JS подтормаживала.
Если же выключить этот функционал, которые генерировал синтаксические деревья, то вся огромная и дорогая идея для JS становилась не очень хорошим клоном вима.
goodbear
По моему IDE принципиально отличается тем, что поддерживает отладку. IDE без отладки — и есть всего-лишь редактор.
symbix
Но редактор с отладкой не становится IDE, это недостаточное условие. К vim-у или emacs-у отладчик прикрутить — не проблема совсем.
VolCh
В начале 90-х по сути это было достаточным условием (плюс навигация, плюс запуск билда).
symbix
Ну… когда-то и tc.exe из Turbo C считался IDE :)
VolCh
Ну, он собственно и есть классическая IDE
lampslave
Расширенный анализ кода, навигация, переименование, глубокая интеграция с git.
mpetrunin
По навигации и переимнованию, отвечал в других комментах.
А что такое глубокая интеграция c GIT, такая интеграция достаточно глубока? И что такое расширенный анализ кода?
lampslave
Не знаю, мне лень изучать всё, что там написано. Вот глубокая интеграция, а всякие
git checkout master
я и сам из консоли делаю обычно.Самый простой пример расширенного анализа — когда IDE находит переменные, которые используются до присвоения. Или когда проверяет, можно ли библиотеку импортировать, нет ли опечатки в её названии.
Delphinum
Пастернака тоже осуждаете?
lampslave
Нет, просто в IDE всё это реализуется парой кликов мыши, и время на чтение тратить не нужно.
Delphinum
Так в GVim тоже есть менюшки, кнопочки, иконки и другие рюшечки, все для мышко-программинга.
lampslave
Ну да, всё есть кроме самого git-а :)
Delphinum
Вы хотите чтоб git был частью vim? Вам тогда надо смотреть в сторону emacs, если сильно постараться, то можно впихнуть в него ОСь.
lampslave
Если мне куда-то и надо смотреть, то только в сторону кнопки закрытия браузера, чтобы перестать тратить время на бесполезный холивар.
Delphinum
И вас хорошего дня.
poxu
Можно подумать в Intellij IDEA есть гит
stavenko
vim-fugitive.
Очень удобно смотреть диффы.
zagayevskiy
Забавно читать подобный коммент от пользователя с вашим ником =)
Delphinum
А что не так с моим ником?
zagayevskiy
Я не говорил, что с ним что-то не так. Просто он вызывает ассоциации с языком Delphi, IDE для которого известна своей ориентированостью на «мышко-программистов».
Delphinum
Это ложная ассоциация, мой ник никак с Delphi не связан, поверьте )
mpetrunin
Local History — это круто выглядит, но хз насколько полезно. В любом случае, это отдельная от git-фича, я бы не назвал её глубокой интеграцией с git. Насколько я понял, её можно реализовать с помощью eclim. Справедливости ради, я eclim в своё время не освоил, не очень удобно прикручивается.
А расширенный анализ есть, например, для python. Думаю можно найти и для других языков.
Zenitchik
Реально полезно, если ветки криво смержились, по локал-хистори можно быстро восстановить не попавшие в мерж куски кода.
stavenko
Не сочьтите занудой, но я помню, что когда работал с идеей, мне проще было сделать мерджи в коммандной строке.
То ли я не знал как, то ли в идее были какие-то проблемы, но мерджи были головной болью, пока не пересел на консоль почти полностью.
Encircled
За последние лет 4-5 никаких проблем с мерджем в Идее не встречал. Вернее там есть/были мелкие баги, которые проявляются при определенных условиях, но явно нет смысла использовать консоль.
develop7
последние как минимум N (N=7) лет лучшая мержилка на планете (не считая SemanticMerge и, возможно, Visual Studio, про которую я ничего не знаю) как раз в IDEA
lampslave
Очень полезно, когда надо выяснить, откуда у данного куска кода растут ноги.
Автоматический вызов pyflakes, или чего оно там использует, меня не очень интересует, это я и сам могу сделать. Вот этот списочек покруче будет.
mpetrunin
А это что у вас на картинке, не подскажете?
lampslave
В смысле? Окно настройки проверок в PyCharm, конкретно — проверка на совместимость с разными версиями питона.
Vkil
Очень похоже на PyCharm
mpetrunin
Есть ещё, кстати jedi, мною упомянутый: http://jedi.jedidjah.ch/en/latest/docs/features.html
evocatus
У меня процессор AMD A8-6600K. Не могу пользоваться PyCharm — слишком сильно тормозит.
Suvitruf
Ну, к примеру, в Студии это выглядит так:
Коммиты по методу/классу, можно посмотреть сами изменения. Очень удобно.
mpetrunin
Неплохо. В VIM как-то так:
kahi4
Шейдеры в VS. Слабо на виме? (Справедливости ради, с шейдерами всегда туго, до VS везде далеко, приходится кусать локти для WebGL).
Профайлинг, дебаг (ага, можно дебажить и в других местах, теряя все удобства редактора под рукой), построение графа зависимостей — да полно задач, которые vim не сможет сделать либо чисто по техническим причинам (шейдеры в cli даже не смешно), либо из-за большой сложности.
А еще из личного хобби — blueprint в quartus, simulink в matlab, waveforms приходится отображать в других средах.
mpetrunin
Я не утверждал, что VIM может всё, что может любая IDE в том же виде. Конкретно с шейдерами, какой-то костыль, вероятно, возможен, но вы правы — не имеет особого смысла.
Я повторюсь, я не призывал всех переходить на VIM, я призывал обратить на него своё внимание!
Дебаг для многих языков есть (есть Vdebug сразу для многих языков: PHP, Python, Ruby, Perl, Tcl and NodeJS, но бывает, что и конкретно под один язык плагинчик). Насчёт графа зависимостей, чтобы прямо в VIM не скажу, чтобы вывел в файлик — это бывает.
По личному хобби неотвечу — много слов незнакомых. Но в целом, с вашим утверждением согласен. Не всё можно сделать в консоли, а, следовательно, не всё можно сделать в VIM.
stavenko
Для шейдеров хотелось бы профайлер и автотестер, который бы мог на CPU выполнить код и выдать его в виде текстуры, подсчитав количество операций, с учетом версий языка, и возможных особенностей оборудования, вроде наличия тесселятора.
Визуально на картинку смотреть интересно, но не всегда полезно.
alexkunin
IDE — это интегрированная среда разработки, простите за капитанство. Это означает, что все, что вам нужно для разработки, интегрировано в более-менее целостный продукт, опять-таки капитанство.
Дальше — в зависимости от того, что вам нужно для разработки. Простой батник можно и в нотепаде написать. Если вы батники пишете много и часто — подсветка синтаксиса, какое-то управление проектами (или хотя бы последними открытыми файлами). Может где-то VCS прицепить уже можно, если батников много и меняются.
Если же вы Ява-девелопер (или C++, или PHP, или что угодно еще) с реально навороченным проектом (тысячи классов, десятки мегабайт своих исходников, гигабайты библиотечных сырцов), и вам нужен интеллисенс (а не абстрактное автодополнение), справка по параметрам, разные режимы запуска (отладка, тесты и т.д.), и чтобы все это было идинообразно, быстро (переключиться в консоль или браузер за пареметрами к функции — это не так быстро, как Alt-P), то вам нужна IDE.
Мне кажется, все попытки сделать из вима IDE основываются на том, что кто-то всю ОС (линукс, например) ощущает как среду разработки, и не безосновательно. Плюс вим расширяем (как и многие ИДЕ, справедливости ради стоит заметить), и можно в него впихнуть много чего. Просто некоторым людям нужно программировать уже сейчас, и потратить сотню-тысячу вечнозеленых на иде для них не проблема, а вот тратить рабочее время на наладку и отладку рабочей среды — проблема. Это, конечно же, второй конец шкалы (батники в нотепаде — первый), и большинство из нас находятся где-то посередине.
Если все ваши инструменты хорошо и ладно подогнаны друг к другу, если вы реально можете выполнять ваши задачи эффективно (и даже эффектно — мне нравится удивлять друзей какой-нибудь забористой командой из вима), то и отлично.
Некоторые задачи все же требуют чего-то больше, чем связка консоль-редактор-гит. И некоторые вещи гораздо изящнее решаются через ГУИ, а не консоль (сбоку кода можно поставить любую иконку, а не вспоминать мучительно, что значат *, ?, !, +, и т.д.).
Некоторые задачи требует меньше, чем дает ИДЕ.
Ну, и все это вместе движется в сторону охвата фич, аудиторий и т.д., граница размывается. Отсюда тоже постоянные попытки сделать ИДЕ из редактора (пусть даже уровня комбайна), ведь и так уже много чего есть.
Вот еще аналогия. Вим — велик, на который можно чего-то навешать. ИДЕ — феррари с много чем навешанным. Покатавшись на феррари в общем-то на велик уже может и не хотеться. Восхитившись простотой и гениальностью велика, может и не захотеться лезть в опостылевшую феррари. Но глупо ехать на лесную прогулку на машине. И глупо пытаться догнать коллег на автобане на велике.
#многобуквпроститезадумался
mpetrunin
Вот вам пример intellisense в vim для Java, C++, C#, JSP, XML, HTML, SQL:
Интерактивная помощь по параметрам функции в VIM есть для очень многих языков (не только как на картинке).
Ваши слова имеют смысл особенно в части "если вас устраивает, то и ладно". Полностью согласен. Но я бы назвал некорректной вашу аналогию Vim-IDE и велик-феррари. Vim всё-таки не велик, а условная Нива с движком от феррари, коробкой передач от BMW. И ездить вам не только по автобанам надо, но иногда и по бездорожью.
webkumo
Ещё подкорректиную аналогию:
VIM — это набор запчастей для условной нивы + попадаются запчасти более высокого качества (но их надо проверять),
хорошая IDE — условный новенький хаммер из магазина с полным фаршем.
обычная IDE — условная шевроле нива
rkfg
Похоже, этот плагин:
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 уже две версии как минимум вышли…
mpetrunin
Вы правы, похоже на старье (не обратил внимание, т.к. не пишу на Java). Народ хвалит eclim: http://eclim.org/vim/java/complete.html
rkfg
Да, набор возможностей выглядит неплохо. Но отсутствие коммитов с марта настораживает, да и рефакторинг возможен лишь на уровне переименования и вытаскивания классов. Тем не менее, инициатива хорошая, и получилось что-то явно более продвинутое, чем обычный плагин для подсветки синтаксиса.
alexkunin
Я с вимом работаю примерно с 2000-го, наслышан и наюзан его фичами. ;) И простынки конфигов, и свои плагины, и свои синтаксис-файлы, и сотня плагинов под капотом, и все это на трех платформах (вин, линукс, мак). Я к тому, что отлично понимаю вимеров и их восторг от продуманности и четкости телодвижений пользователя вима.
А для ХПХ найдете такой плагин? А чтобы я мог еще использования моего метода поискать? Только не по названию, а именно «языковый токен — такой-то метод такого-то класса или его потомков». И заодно переименовать, да, и файл с классом тоже. Линт, пожалуйста, только не по горячей клавише, а чтобы «само и быстро». И еще, у меня целевая версия 5.3 (так получилось, не пинайте), и я частенько ставлю, скажем, [] вместо array() — можно мне автоматом эти и другие подобные случаи как ошибки показать? Так, а вот хочу еще парой кнопок писать конструкции вроде public function () {} — это можно? О, уже другой плагин? Даже несколько? А какой лучше? Этот классный, но не поддерживается, а этот свежий, но меньше фич и подлагивает? Мм, что же выбрать… Хорошо, а как мне сравнить два файла, и прыгнуть по истории гита, и сравнить с конкретным коммитом, как закоммитить часть файлов? Ого, опять в командную строку? А можно просто пару галок поставить? Нет? Ну ладно, пойду опять в пхпшторм.
Уверен (даже не уверен — знаю), что при определенном упорстве можно в виме настроить абсолютно все, а чего не хватает — дописать. Но я не хочу допиливать автомобиль на ходу, я хочу получить ключи от современной быстрой тачки, педаль в пол и вот я уже работаю работу, а не настраиваю среду. Лет 15-20 назад я очень любил настраивать любимый редактор, дистрибутив ос и т.д. Сейчас — нет.
Кстати, про этот интеллисенз — «Last Update: 2013-03-22». Что-то, заброшенное три года назад, я буду использовать только как последнее средство. А за 9 баксов в месяц у меня есть первое средство с постоянными апдейтами.
Но, в общем, я чувствую, что мы друг друга понимаем. Уверен, если круг ваших задач изменится (скажем, потребуется большая гибкость вашей среды разработки, какие-то продвинутые фичи), то вы не будете стрелять себе в ногу с помощью VimScript, а возьмете… ну, ружье посовременней и помощней. :)) Простите, дурацкое вышло сравнение.
Кстати, я все еще работаю в виме. Например, в консоли на удаленном сервере. Его интеграция с шеллом очень хороша, я часто делаю Ctrl-Z и fg, и т.д. Вот там вим — хороший, незаменимый инструмент, и я просто счастлив, что когда-то потратил туеву хучу времени на покорение его дикой лернинг курв. Как побочный эффект, бывает мои проекты падают, и при дебаге нахожу в сырцах комбинацию ":wq\n" в произвольном месте. :)
moveax3
«найдите мне вот это и вот это и с перламутровыми пуговицами»
простите, может и код за вас писать? В таком ключе можно общаться с теми, кому вы баксы за ide заплатили, в случае с vim это открытый проект, где никто вам ничего не должен, не можете сами настроить — вежливо попросите сообщество помочь, а истерики вида «нука нстройте ка мне это, да вот так вот, слабо?» никогда ни к чему хорошему не приводят.
Иными словами у вас есть возможность бесплатно использовать охрененный редактор, только почитай доки да расширяй по мере надобности, но вам еще все настрой и документацию за вас почитай, и плагины подбери да поставь. Зажрались вы в общем.
и, к слову, что бы юзать vim на сервере в консоли для мелких правок, хватит 20 минут vimtutor пройти, а не «туеву хучу времени»
alexkunin
Вы напрасно агритесь. Мой комментарий был ответом тем, кто считает, что вим любую иде за пояс заткнет. Заявили такое — защищайте аргументами. К Мулинару и сообществу у меня претензий нет.
Ну, а на счет ваших советов как побыстрей овладеть вимом… Как я уже сказал, предметом владею, заметно более 10 лет. Но спасибо за ваши добрые советы, конечно же.
vsapronov
Большинство IDE с корными фичами бесплатные и open source. Да, у них есть и платные версии, но в них, в основном, поддержка всяких фреймворсков уровня Enterprise.
Так что этот гонор на счет бесплатности и сообщества немного устарел. Есть цель: выбрать лучшую IDE. Автор заявил, что vim всех рвет. За базар надо отвечать. И «ой, у нас тут сообщество, и open source» — вообще не аргумент с точки зрения функционала.
mpetrunin
Вы, пожалуйста, прежде чем такое писать, внимательно прочтите, что такого "автор заявляет". Моя основная мысль состоит в следующем: даже, если вы пользуетесь IDE, то обратите внимание на VIM — у него масса достоинств по сравнению с вашей IDE.
Совершенно точно, можно утверждать и обратное: у IDE есть достоинства по сравнению с VIM. Я нигде не утверждал обратного.
moveax3
> За базар надо отвечать
во первых вот и отвечайте за свой базар про «гонор насчет бесплатности» и «Автор заявил, что vim всех рвет».
во вторых, есть цель выбрать лучшую IDE — выбирай и успокойся, чего истерить тут, забудь про вим и обходи стороной, никто же не заставляет. Но вы зачем то читаете статьи про vim и зачем то их комментируете.
А ну настройте мне, а ну найдите мне, а есть ide тоже бесплатные, это для меня не аргумент — почему кого то должно волновать хоть сколько то, что для вас аргумент? Это ваша личная драма. Вам никто ничего не должен, ваш инструмент — ваши проблемы. Как истерички в самом деле.
FreeNickname
alexkuin уже и сам Вам ответил, но я не смог пройти мимо: его комментарий вообще не о том. Смысл не в том, что кто-то должен всё это настроить, а в том, что многие вещи настроить от «очень тяжело» до «невозможно», при этом IDE всё это уже умеет. Сразу. Ну и зачем vim? «Не было печали – купила баба порося» :) Сиди – знай себе настраивай)
alsii
В IDEA есть например интерграция с фреймворками. В методах, которые требуют ссылок на сервис мне дадут в хинте список описанных в DI-контейнере сервисов. Если метод требует ссылки на темплейт, мне дадут список темплейтов. Если метод ORM требует подстановки свойства сущности, мне дадут список свойств сущностей. Большинство плагинов к редакторам работают на уровне синтаксиса, а IDE пытается вникнуть в семантику. Особенно важно это, когда приходится работать с чужим кодом. Так что тут отличие не количественное, а качественное. Ну и богатые возможности рефакторингу вытекают из этого. Когда IDE начинает "понимать" код, она в каком-то смысле становится не просто инструментом, а соавтором кода.
VolCh
Большинство плагинов к редакторам работают на уровне текста, как правило пытаясь парсить его регулярками.
mkarev
Дебаг, деплой, статический/динамический анализ, профилирование.
Amomum
Мне всегда казалось, что IDE — это редактор + сборка + отладка.
DrLivesey
Один из моих предыдущих комментариев на тему
VolCh
Понятие IDE сильно изменяется со временем. В конце 80-х-начале 90-х стандартом для IDE де-факто было — навигация по файловой системе, редактирование исходников (практически без поддержки синтаксиса), компиляция и сборка (не для интерпретируемых языков, конечно), запуск и запуск в режиме отладки. По сути, главным было редактирование и отладка без переключения в другую программу (в те времена в доминирующей однозадачной ОС переключением было выход из одной программы и запуск другой). Верю, что сейчас это vim может обеспечить практически из коробки. Но сейчас обязательными элементами IDE являются синтаксический анализ на лету (полноценный, а не в первом приближение регулярками), навигация по сущностям языка (опять же по результату полноценного синтаксического анализа), автодополнение с учётом контекста, простейшие методы рефакторинга типа переименования, выделения в метод и т. д.
monolithed
Есть масса примеров когда текстовый редактор доводят до уровня редактора кода. Однако IDE (среда разработка) в отличии от прочих редакторов работает с проектом, а не отдельными сущностями…
Crandel
Как вам тогда это?
VolCh
Больше похоже на файловый менеджер, чем на IDE. В IDE зачастую можно работать вообще не думая о файлах, оперируя сущностями языка типа модуля, класса, нэймспэйса. Решаем задачу не «отредактировать код в файле таком-то», а «отредактировать код класса такого-то».
Crandel
Я ответил конкретно на это высказывание
VolCh
Проект — нечто большее, чем совокупность файлов в одном каталоге. Так бы и mc хватило. Главное в проекте — содержимое файлов. IDE должна быть заточена на анализ содержимого.
zim32
Это вы перечислили только одну вкладку Editor вк примеру в phpstorm
mpetrunin
Ну понятно, что испортит можно всё, что угодно. Можно написать плагин, который будет делать
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 есть соответствующая команда.
Edison
vim-go+gorename — работает отлично.
Это все таки задача плагина, а не vim'а, кмк.