Vim — не IDE
Он не перегружен ненужным функционалом. Серьезно, IDE-люди, сколько процентов функционала своей IDE Вы используете? 25-30%? Фича VIM — здесь в тотальной конфигурации, при чём не только в общем смысле, но и отдельно для каждого языка\проекта. Вы можете загружать одни плагины для c, другие для js, третьи для go. Можете на одном проекте использовать отступы в четыре пробела, а на другом в восемь. Используя разные конфигурации VIM для каждого языка\проекта. Как верно заметили в комментариях к предыдущей статье — в vim это не закладывалось, но так получилось.
IDE — тоже не vim, даже с плагином
Да, в Вашу IDE более тесно интегрирована поддержка языка и больше удобных фич для рефакторинга кода и потягивания смузи. Это хорошо, удобно и работает, пока кто-то озаботился написать IDE для Вашего языка, ну или хотя бы плагин для поддержки языка, на котором Вы пишите. Но представьте, Вы, к примеру, в основном пишите на C++, и возникла необходимость посмотреть JAVA-код. Будете ставить отдельную IDE или плагин? В случае с vim Вы просто откроете код и «из коробки» получите минимальную поддержку языка (подсветка, сворачивание блоков и т.д.)
IDE — хороший выбор, когда Вы окопались на 2-3 языках и никуда с них не уходите.
В комментариях к той статье было не раз высказано предложение использовать vim-плагин. Хорошая идея, если решили перебраться с IDE на vim, а вот в обратную сторону работает плохо — Вы знаете хоткеи и комбинации Vim, конфиг vim «вылизан» годами работы, и тут оказывается, что Ваш конфиг работает максимум на половину, что приходиться учить новые комбинации, которые, как правило, не удобны, делать «распальцовки» на клавиатуре и время от времени всё таки тянуть руку к мышке.
Немного о мышке, клавиатуре и VIM
Ваш конфиг «вылизан» и приглажен, совершаете все нужные операции даже не задумываясь о них, пальцы делают всё сами — именно так работает vim-ер со стажем. Серьезно, когда мне надо, к примеру, сдвинуть блок кода на 2-3 отступа в право — мои руки делают это сами, когда меня спрашивают как это сделать в vim — я «зависаю» на несколько секунд пытаясь вспомнить. С IDE, лично у меня, так не получилось — приходилось отвлекаться на мышку, вспоминать в каком меню находиться нужный пункт, добираться до него.
В vim все операции осуществляются с клавиатуры, и это чертовски удобно. Комбинация vim+tmux+i3 и мышка 99% времени валяется в стороне, но это тема для отдельной статьи. В чем удобство отказа от мышки? Начиная от банально отсутствия движения руки между мышкой и клавиатурой, заканчивая тем, что это действительно быстрее. Набрать комбинацю 2dw для удаления двух слов быстрее, чем выделить их мышкой и нажать Backspace\Delete.
Режимы
Режимы — не киллер фича vim, они удобны, хороши, но, по большому счету это всего лишь один из двух путей как сделать так, что бы редактор обладал богатым функционалом и полностью управлялся с клавиатуры. Второй путь — это путь emacs.
Распространенность
Знать vim — надо, хотя бы потому, что vim или его предок vi есть почти на любой *nix машине.
Иногда vim — единственный способ поправить конфиги на удаленной машине.
Вместо заключения
Vim — хороший и удобный инструмент, но требует предварительной настройки.
IDE — позволяет работать с ней, в большинстве случаев из коробки.
Vim — Мощный и многофункциональный инструмент.
IDE — Мощный, но узкоспециализированный инструмент
Vim — поддерживает больше языков, чем Вы способны вспомнить
IDE — поддерживает 1-3 языка, но делает это лучше VIM
Если Вы всё ещё хотите холиварить на тему Vim VS IDE, то не забывайте — это инструменты. Ваять доброе и вечное можно хоть с помощью awk, вопрос что использовать — дело лишь удобства и привычки.
Комментарии (65)
zagayevskiy
12.10.2017 20:34Серьезно, когда мне надо, к примеру, сдвинуть блок кода на 2-3 отступа в право — мои руки делают это сами, когда меня спрашивают как это сделать в vim — я «зависаю» на несколько секунд пытаясь вспомнить. С IDE, лично у меня, так не получилось — приходилось отвлекаться на мышку, вспоминать в каком меню находиться нужный пункт, добираться до него.
В IDE нужно выделить этот блок кода и нажать таб. Или Shift+Tab в обратную сторону. Максимально просто и не надо подвисать на несколько секунд. И уж тем облее не надо вспоминать пункт меню.
t0pep0 Автор
12.10.2017 20:42Был не прав, привел в пример не ту операцию. Хотел продемонстрировать механику работы, но так уж водится, что всегда найдется тот, кто воспримет это как показательный пример.
:set sarcasm
В следующий раз специально приведу не тривиальную операцию, в пример, а что ни будь ярко-индивидуальное, трудно настраиваемое, работающее только у полутора анонимусов из-за специфичности.
:set sarcasm 0
wing_pin
13.10.2017 10:37В следующий раз обязательно приведите такие нетривиальные операции, как рефакторинг сотни файлов, изменение сигнатуры метода во всех местах, где он используется, вынесение части кода в отдельный метод\класс. Ну в общем такие типичные операции с кодом.
Desprit
13.10.2017 11:04Рефикторинг сотни файлов делается с помощью макросов. Во всяком случае, нечто тривиальное вроде смены сигнатур — это вообще можно сделать в автоматическом режиме, для начала протестировав созданный макрос на паре файлов. Если задачи сложнее, то да, «личное присутствие» будет необходимо, но что-то мне подсказывает, что и в IDE нет отдельной кнопки «сделать рефикторинг всего проекта».
ZyXI
13.10.2017 11:24Такая «кнопка» даже в Vim может быть: к примеру, дополнение pymode предоставляет интерфейс к rope, каковая является библиотекой для рефакторинга Python проектов (правда, в документации я увидел только переименование модуля). Но Python — это язык с динамической типизацией, много вы тут в автоматическом режиме не нарефакторите. Java и C++ — другое дело, тут рефакторинг автоматизировать гораздо легче (если не злоупотреблять макросами в C++).
Правда, во что я не поверю, так это в то, что IDE способны ещё и комментарии отрефакторить. Особенно если это не комментарии?документация (где могут и часто должны возникать явные и типизированные ссылки на конкретные сущности вроде классов и методов), а просто комментарии к коду.
И ещё я не поверю в то, что есть вменяемый автоматизированный рефакторинг динамически типизированных языков, в т.ч. проектов, где часть кода на C++, а часть на каком?нибудь luajit с его ffi.
В общем, старый добрый grep (точнее, его альтернативы) мне кажется хоть и менее удобным, но одновременно более надёжным и более универсальным.
quantum
13.10.2017 11:35>И ещё я не поверю в то, что есть вменяемый автоматизированный рефакторинг динамически типизированных языков
для php есть
kosmonaFFFt
13.10.2017 11:51Idea, если ей указать, может не только в комментах что-то переименовать, но, и, например, в строковых константах или конфигах (при этом обычно понимая семантику конфиг-файлов). При этом прежде чем изменения применятся, можно удобно посмотреть что подлежит переименованию и оставить только то, что нужно.
Crandel
13.10.2017 11:27А мне в идее жутко бесит, что нету дополнения слов, когда пишу коментарии или просто строку с названием атрибута. А в емаксе дополняет прекрасно
YemSalat
13.10.2017 18:34С IDE, лично у меня, так не получилось — приходилось отвлекаться на мышку, вспоминать в каком меню находиться нужный пункт, добираться до него
Ну тогда наверное для вас будет открытием, что большинство опытных пользователей современных редакторов и IDE все «стандартные» манипуляции с текстом делают с клавиатуры, а не мышкой.
LightSUN
12.10.2017 20:42+1Серьезно, IDE-люди, сколько процентов функционала своей IDE Вы используете? 25-30%?
Что за аргумент такой? Одной самой нужной из других возможностей достаточно чтобы что-то использовать. Сколько вы изпользуете процентов возможностей своей жизни? 30-50%?t0pep0 Автор
12.10.2017 20:44А кто сказал, что это аргумент? Это вопрос был, риторический. Как можно было заметить я не призываю ни кого переходить на vim, и не агитирую за IDE
Imbecile
12.10.2017 20:45Про 1-3 языка, поддерживаемых IDE, пользователям VS Code было обидно.
t0pep0 Автор
12.10.2017 20:46VS Code у нас стал IDE?
Visual Studio Code — кроссплатформенный редактор исходного кода, поддерживающий базовые возможности интегрированной среды разработки, созданный в Microsoft
Imbecile
12.10.2017 21:41Тот же фронтенд на нём пилить — очень ок. Ну и несложные бэкенд приложения — тоже. Я с Visual Studio переключился на Code, как более удобный при работе с angular2+. Да и с развитием всяких cli — VS Code становиться весьма мощным инструментом разработки.
DrPass
13.10.2017 01:08Даже пользователи обычной Visual Studio немного обиделись, которая штук семь языков поддерживает «из коробки» и ещё немало с помощью сторонних плагинов.
Это не говоря уже, например, про пользователей Eclipse :)
Вообще, неправильно говорить, что IDE — узкоспециализированный инструмент. Наоборот, функционал тяжелых IDE способен заменить не только vim, но вообще весь инструментарий разработчика на вашем компьютере. Собственно разработка, отладка, визуальное проектирование, средства моделирования и документирования, профилирование, контроль версий, командная работа — всё это есть в IDE.niya3
13.10.2017 07:05Даже пользователи обычной Visual Studio немного обиделись, которая штук семь языков поддерживает «из коробки» и ещё немало с помощью сторонних плагинов.
В vim из коробки 500+ файлов синтаксиса =) Мне их столько не надо, но на какой язык\синтаксис бы меня не забросила работа — всё или уже есть, или легко скачать и доставить — C, C++, Bash, Python, Perl, PHP, Javascript, HTML, XML, Yaml, ini-файлы, error-файлы — это я пробовал сам.
ZyXI
13.10.2017 10:08+1Кстати, самое интересное: в Vim есть подсветка intel hex файлов. А в Atmel и CCS studio (последнее что?то на основе какой?то другой IDE, кажется, eclipse) и вроде каких?то ещё IDE для микроконтроллеров нет.
worldxaker
13.10.2017 03:40нужно чёткое разделение где ещё текстовый редактор а где уже ide, тот-же vs code и дебажить например может, и в рефакторинг умеет и с т гитом работать, чём же он не ide?
Barabashkad
12.10.2017 20:52Наверное я не знаю всех фитчь моих IDE… (сарказм) но из тех что знаю пользуюсь 80%…
разные конфиги для языков… прекрасно работает в IDE
минимальная поддержка синтаксиса для экзотики настраиваеться в 2 клика мышкой…
мультиязычные проэкты прекрасно подерживаються…
я пользуюсь в основном eclipse и VSCode…
работа без мышки… абсолютное дело вкуса… и привычки…
немного умею работать в VIM… и согласен с предыдушей статьей про режимы… именно из них вытекают все особенности VIMa
а в IDE для меня киллер фитча это дебагирование… задал конфигурацию, нажал кнопку мыши и все сразу на экране…
и код и переменные и логи… и терминал если надо…
и если забыл скомпилировать то все за тебя сделали…
и если забыл за аплоадить то тоже
и все из коробки…
vvpoloskin
12.10.2017 23:38Прокаченный VIM позволит сначала получать удовольствие от написания теста (да, нравится сам процесс), а потом написание текста станет неким автоматическим действием как, даже не знаю, есть из тарелки столовыми приборами… ты просто не задумываешься ни то что для набора можно пользоваться чем-то другим, даже не думаешь о наборе текста, все проиходит само каким-то естественным образом. Модальные режимы, motions, навигация, буферы/окна, закладки — все этому помогает. А проникнувшись этим дзеном графическая среда становится нужна только для браузера и офисного пакета
Plugin в IDE поверхностно спасает, но есть ли плагин к вашей IDE такой, чтобы скриптовать расширеия? И в полном ли объеме поддерживается фунционал vim?
dmitry_dvm
12.10.2017 23:48Почему vim упорно сравнивается c ide? Он разве умеет отладку по шагам, сборку пакетов, рефакторинг, диаграммы классов и т.п.? Вы его ещё с автокадом сравните.
mdErrDX5341
13.10.2017 10:31Легко))) пару дней и набросаем команду ".*" для создания кубиков и треугольников в 3D)))
Шутка)) полностью поддерживаю
aelaa
13.10.2017 15:56А разве IDE умеет? Он вызывает дебаггер, пакетный менеджер и т.п. И это чаще внешние утилиты, чем встроенные.
vim тоже всё умеет, если плагины подключить.
mefrill
13.10.2017 00:09Все в vim хорошо, только мизинец левой руки почему-то стал толще, чем правый. И вообще, почему-то дергается время от времени.
sentyaev
13.10.2017 01:29VIM конечно же отличный редактор текста, тут не поспоришь.
Но! Я 95% времени читаю код и для меня киллер-фича это навигация по коду, все остальное не так уж и важно.niya3
13.10.2017 07:11Шутка в том, что IDE (и большинство редакторов) вы открываете и 95% времени проводите в режиме ввода текста (если вы нажмёте на клавишу, то в текст добавится новый символ). Vim сразу открывается в режиме навигации, и он в нём силён.
sentyaev
13.10.2017 17:27Шутка в том, что IDE (и большинство редакторов) вы открываете и 95% времени проводите в режиме ввода текста
Штука в том, что в IDE нет режимов.
Vim сразу открывается в режиме навигации, и он в нём силён.
Насколько я знаю в Vim нет режима «навигации». Есть командный режим, режим ввода и выделения (поправьте меня если я неправ или упустил что-то).
А вот навигация в Vim добавляется использованием плагинов, причем вы используете командный режим для навигации, а он в свою очередь был добавлен не для навигации по коду, а для удобной манипуляции с текстом.
fatronix
13.10.2017 07:24В далеком 2010 влюбился в Geany и чаще всего использую его. Работает быстро, нет ничего лишнего, плагинов достаточно.
WarKnife
13.10.2017 10:31Я бы отметил, что Vim становится лучшим редактором только при одном условии: если вы владеете методом слепой печати.
netch80
13.10.2017 19:43Слышал такое мнение, и интересно, кто и почему его поддерживает.
У меня получается 4-6-пальцевый и не совсем слепой метод (надо видеть краем глаза контуры клавиатуры), но предпочитаю vim всем прочим консольным.
Использую IDE только там, где нужны её специфические возможности типа рефакторинга между несколькими файлами или тыкания в 500 ошибок, и то не уверен, что мне просто не хватило терпения найти плагин для этого.WarKnife
16.10.2017 07:20+1Я имел ввиду, что при сравнении с другими редакторами, главное преимущество Vim — это его «эргономичность» управления при наборе вслепую. Я не встречал ни одного редактора (ни самостоятельного, ни встроенного в IDE), где это удобство сочеталось бы со всей полнотой возможностей Vim. Поэтому я его и выбираю. Если опустить вышеприведенный критерий, то Vim перестает быть уникальным и может уступать тому же Emacs, в целом, и специализированным IDE, в частности.
rimmer333
13.10.2017 16:05Не хочу вступать в этот холивор, мой редактор — это мой редактор, я не рыцарь его ордена, чтобы ходить за него в крестовые походы. Мой общефилософский подход к вещам: если тебя куда-то изо всех сил тянут и что-то тебе предлагают и нахваливают на замену того, что у тебя и так есть и работает — слушать не стоит. Покуда сам я не найду свои причины пользоваться этой новой хренью, меня против моей старой хрени никто не переубедит. VIM я пробовал, не прижилось. Пробовал много других редакторов, некоторые успешнее, некоторые хуже. Когда-то считал, что круче редактора кода в IDE Delphi 6 вообще ничего на белом свете быть не может, даже HTML c джаваскриптами в нем писал. Много чего еще другого пробовал, под всеми осями. У меня был просто мегаредактор под линуксом (не вим, не скажу какой, там всё равно фишка-то не в нём самом была). С недавних пор нашел себе 2 оконных фаворита, могу vim, если в консоли, но предпочту nano, если есть. И вот меня удивляет эта странная укушенность именно vim-юзеров — топить за свою любимую тулзу там, где их не спрашивали, ругать то другое, в чем они сами не разобрались, и волочить всех против воли в свою религию. В двух конторах, где я работал, vim вообще стандартом был — ты получаешь курс обучения на входе и никакой поддержки на тему поставить что-то другое. Продуктивнее [одной кроссплатформной IDE] для меня в те дни ничего не было, я ставил её в юзерспейс и клал с прибором на мнение всех, кто говорил «Зря ты этой штукой пользуешься». Вышеприведенный рефакторинг, интеграция с гитом искаропки (с гитом, коего в одной из компаний и не знали (!), а я юзал его для себя, и это стало для многих открытием — мол, вон как с кодом оказца можно, зря мы это по старинке-то), да хотя бы и локальный сервер (с горячей клавишей запуска/останова для аллергиков на мышиные хвосты) — это всё в ходе демонстрации впечатляло, хотя у всяких тимлидов сначала вызывало вопрос «А чо не из командной строки?» а потом слегка уязвленное «Понапридумывают же». Могу и из командной, но есть инструменты, которые merge conflict понятнее покажут и быстрее разрешить помогут, чем если руками колупаться. Начальник вот пишет код на полумертвом TextMate на своём маке — я не лезу к нему и не советую своё, потому что понимаю, этот парень вот там умеет быстро. Я в своих редакторах умею быстро, и не надо мне всовывать ваш vim на основе того, что у вас быстро в моём редакторе не получается.
t0pep0 Автор
13.10.2017 16:12Цитата из статьи:
Если Вы всё ещё хотите холиварить на тему Vim VS IDE, то не забывайте — это инструменты. Ваять доброе и вечное можно хоть с помощью awk, вопрос что использовать — дело лишь удобства и привычки.
rimmer333
13.10.2017 16:16-1Моё удивление в основном тому, что именно вимяне ходят и «говорят со всеми о Боге». От остальных столь трепетного отношения к отвертке я не наблюдаю.
mdErrDX5341
13.10.2017 16:28+1Мое удивление в основном тому, что именно не вимеры накинулись на статью про режимы в виме и начали доказывать что оно не кому не нужно и даже вимерам.
baldrs
13.10.2017 16:24Добавьте пожалуйста вариант: я люблю IDE с VIM-plugin.
Сам сижу на PhpStorm/PyCharm + IntellijRust c IdeaVIM. Да он не идеален, но поддерживает с горем пополам основные функции vim которых вообщем-то с головой хватает именно для редактирования, да и подсветка кода у этих IDE гораздо лучше чем VIM может себе позволить. VIM использую каджый раз когда IDE что-то не может: язык, большой файл, да просто заметки которые найти можно без лишних проблем.rdifb0
14.10.2017 11:44Это IMHO самый лучший вариант, сам пользуюсь vim-mode плагинами в Idea, VS Code, VS Studio.
Но обсуждения этого вариант утопает в войнах ситхов.
С одной стороны пользователи IDE которые не понимают зачем им Vim в их IDE. В теории их можно понять, порог входа в Vim не маленький, и не хочется тратить время на изучение.
С другой стороны гуру Vim-a сразу начинают искать способ завести свои 101 плагина, и импортировать .vimrc. А потом начинают песню «а король-то — ненастоящий», хотя большинство претензий это их привычки к разным плагинам.
j_wayne
13.10.2017 17:09> Но представьте, Вы, к примеру, в основном пишите на C++, и возникла необходимость посмотреть JAVA-код. Будете ставить отдельную IDE или плагин? В случае с vim Вы просто откроете код и «из коробки» получите минимальную поддержку языка (подсветка, сворачивание блоков и т.д.)
А в чем проблема выйти из IDE (в смысле переключить окно) и посмотреть «неродные» файлы vim, sublime, чем-нибудь еще?
tangro
14.10.2017 14:35IDE — хороший выбор, когда Вы окопались на 2-3 языках и никуда с них не уходите.
А, ну то есть хороший выбор для где-то 99% людей. Окей, на этом и сойдёмся.
algor_1
16.10.2017 09:53Когда-то я пытался настроить Vim для нормальной работы с Python. Оказалось, что:
— Нормального автодополнения (а не того, которое грузит процессор на 100% и виснет на несколько минут) нет.
— Нормального дебаггера (без необходимости делать print на каждую переменную) тоже нет.
Т.о. для меня vim так и не стал заменой ide, к сожалению.
Но надо ли ему таковой быть?
n0dwis
16.10.2017 10:51Сразу оговорюсь — мне vim нравится. Первый более-менее сложный сайт на php я написал именно в нём. С удовольствием бы вернулся, если подскажете как в нём настроить или чем заменить:
1. Нормальную поддержку проектов. Я знаю про плагины project и NERDTree, но последний — это вообще не о том, а project на больших проектах тормозит и были какие-то проблемы с импортом (прошу прощения, точно уже не помню)
2. Навигацию по коду — как минимум, переход от места вызова функции к месту определения (php). Да, ctags, но как делать индексацию? Руками всего проекта? Долго и неудобно.
Ещё очень хотелось-бы, но, думаю, нереально
1. Автоматическая генерация импорта (php)
2. Более-менее интеллектуальное автодополнение, а не тупо по списку слов.
Вот из-за отсутствия этих фич у меня производительность в IDE гораздо выше чем в vim, несмотря на его возможности по обработке текста. Поэтому, несмотря на все симпатии, я не могу полноценно использовать vim в повседневной работе.t0pep0 Автор
16.10.2017 11:15Могу ответить только по автокомплиту, ибо на пхп очень давно не пишу. Попробуйте YouCompleteMe
Subrisk
На Хабре новый тренд — делать сериалы из статей. Только завершилась мыльная опера про необразованную молодёжь и малосерийный триллер про хирурга-тимлида, как появился новый — про VIM. Лично я спродюссировал бы пару серий о VIM, потому что нежно его люблю, правда, уже год ввиду смены профессии не использую.
kindratmakc
На хирурга сменили?)
Subrisk
Ну нет уж, староват я на такие перемены. Видеопродакшеном балуюсь понемногу.
t13s
Что, в vim нет режима для монтажа видео? Ну вооот…
[ИронияНаГраниСарказма мод офф]
kivsiak
За этим вам в операционную систему зовущуюся Emacs www.youtube.com/watch?v=0vumR5Hcz7s
kahi4
Если говорить про vim — то это уже эм сколько там лет хабру, 11? Тогда это 11 сезон сериала про vim.
master65
где скачать без регистрации и смс?
remo001
Новый тренд: сериал статей ни о чём