Pull to refresh

Comments 218

Вим может быть хорош для новых языков, куда еще не добрались хищные лапки Jetbrains

Для них есть Sublime Text, и ещё не меньше десятка классных текстовых редакторов с элементами IDE.
> и ещё не меньше десятка классных текстовых редакторов с элементами IDE.

На Электроне.

Очень многие современные красивые и удобные приложения на электроне. И гуй у них визуально ни чуть не медленнее нативного (а по сравнению с мощными IDE, так и быстрее намного). Такой себе минус (если это вообще был минус)

На моём компьютере то, что на Электроне (Atom, VSCode) или на мозильном ядре (Komodo, Komodo Edit) всё-таки заметно медленнее того, что сделано не из браузера.

Забавная штука в том, что c9.io у меня работает визуально быстрее того же Komodo Ide, хотя он еще более браузерный.
Возможно, это потому что c9.io не рождает для себя новый инстанс всего браузера, а работает в уже запущенном :)
Единственная причина, по которой при разработке используется Electron — это возможность сильно экономить на разработчиках.
Поэтому если вы видите приложение на Electron, то это верный признак того, что код там писали люди на испытательном сроке или вообще натуральные индусы, возможно даже путём копипасты со stackoverflow. Разумеется, оно будет тормозить и глючить.
UFO just landed and posted this here
но для сравнения возьмите ide на java

Да, ты всегда выходишь победителем если выбираешь себе соперников послабее.

Проблемы кривых java ide никак не оправдывают кривости редакторов на электроне.
Давайте теперь сравним любую поделку на электроне с нормальным редактором плюсах (Sublime) или с нормальной IDE на плюсах и шарпе (MSVS) или с нормальной IDE на java (даже в IDE от jetbrains'а уже завезли zero-lag typing).
Я конечно понимаю что JS это сейчас очень дешево модно и на нем каждый второй школьник умеет писать, но по состоянию на позапрошлую неделю тот же VS Code (который еще более менее адекватный) безбожно проигрывал саблайму в плане отзывчивости.
Просто потому что когда ты хочешь скорость в рантайме а не скорость разработки — ты выбираешь соответствующие языки.

IDE на Java имеют много возможностей, поэтому долгая загрузка для них простительна. Но вот Atom, который грузится как IDE, но при этом умеет не больше Sublime — не понимаю я такого извращения.

Если я правильно понял посыл предыдущей статьи, то преимущества вима начнут проявляться, когда вы начнете написанное редактировать: для перемещения по тексту вам постоянно надо будет переносить правую руку на стрелочный блок или мышь. Концепция же вима позволит комфортно работать даже на 60% клавиатуре.
PS сам я vim совершенно не понимаю, но так я понял предыдущую статью и мне этот аргумент кажется разумным.
Мышь необязательна в IDE
А стрелочный блок — это не биг дил, имхо. Не на столько уж замедляется набор
Это если стрелочный блок вообще присутствует. Касаемо на много или мало замедляется набор — не готов обсуждать, так как не имею опыта. Но лично меня раздражает необходимость постоянно переносить правую руку для навигации. Правда, раздражает не настолько, чтобы начать освоение вима:)
Меня больше раздражает необходимость зажимать shift при печати скобок. Даешь программистскую клавиатуру с кнопочками для скобочек!
И в чём проблема? Отредактировать раскладку клавиатуры довольно просто. Погуглите по запросам тиав custom keyboard layout, уверен разберётесь без проблем.
Раскладка «Programmer Dvorak» Вам в помощь!
Единственный в нем минус — цифры с шифтом и в непривычном порядке, а поскольку пользуюсь numpad-блоком, я их так и не запомнил как следует [и это за незнамо сколько лет].
А стрелочный блок — это не биг дил, имхо.

Для многих это именно что биг дил. Особенно, когда приходится переносить туда руку по несколько раз в минуту.


Не на столько уж замедляется набор

О скорости, как я уже писал в статье, речь не идёт. Речь идёт об удобстве.

Покупайте клавиатуру со стрелками в основном блоке.
Ноутбучную, например.

Руку двигать всё равно придётся.

Кстати, меня волнует вопрос: почему производители клавиатур не используют пространство слева от буквенно-цифрового блока? Ведь туда тянуться гораздо ближе, чем даже до клавиши Enter. И ведь раньше там располагали функциональные клавиши, которые потом убрали в верхний ряд — ради двух дополнительных кнопок, или есть какая-то другая причина?

Меня вот гораздо больше волнует — почему там мало клавиатур, на которых клавиши располагаются строго друго над другом :)

Говорят, печатать вслепую гораздо удобнее. Опять же, нет асимметрии между правой и левой частью клавиатуры. Всё это по идее очень приятно. Были бы они дешевле и доступнее — давно купил бы и попробовал.

Всё сильно зависит от положения рук при печати, скорее всего удобно будет только в случае раздельных правого и левого блока клавиш… Где-то на хабре или гиктаймсе уже было обсуждение различных клавиатур и положений рук на них…
Всё сильно зависит от положения рук при печати, скорее всего удобно будет только в случае раздельных правого и левого блока клавиш…

Это почему? Вернее, по моему мнению, разделённая клавиатура удобнее всегда (по крайней мере, я такой пользуюсь). Думаю если клавиши сделать чётко одну над другой на обыкновенной клавиатуре — будет только лучше.

Странно, мне кажется, что — наоборот. Но это наверное зависит от привычного положения рук.
UFO just landed and posted this here

Я вообще считаю, что нужно использовать клавиатуры, которые поделены на 2 отдельных блока, соединённых только шнурком. С ними проблема неестественного угла вообще отсуствует.


И вот на такую клавиатуру я бы хотел клавиши, у которых нет смещения рядов. На A4Tech, которую вы описали, кстати, смещение в правой части практически отсутствует.

«не биг дил» обсуждать то, в чем не только толком не разобрались, но даже и не попробовали. Хорошо бы увидеть статью в таком стиле (именно в таком) от автора, который хотя бы года два поработал в VIM и потом перешел на IDE (не emacs=). Иначе получается «не смотрел, но осуждаю».
Да ладно. А выделить произвольное количество символов в произвольных строках?
Что не припомню, какой редактор это может.
P.S: я сейчас о sublime.

редактор far может и у него тоже есть плагины )

Ничто не мешает в IDE для стрелочек сделать сочетания клавиш, я использую:
^ Ctrl+U
< Ctrl+H
\/ Ctrl+J
> Ctrl+K

Такое своеобразное WASD для правой руки
А еще PageUp, PageDown, Home, End, Delete… и вот уже получается что вы пишете свою копию vim. Только для смены режима Ctrl зажимаете:)
и вот уже получается что вы пишете свою копию vim. Только для смены режима Ctrl зажимаете:)

Это вообще стратегия emacs :)

Когда начинаешь редактировать написанный код без полноценной IDE становится особенно трудно т.к. там автоматический рефакторинг, переход к декларации, поиск использования и т.п.

А посыл предыдущей статьи, если его правильно понял я был в том, что не надо надеяться найти в VIM что-то более крутое, чем эти режимы. По-моему большинство людей, не умеющих VIM, но питающих к нему интерес, грубо говоря думают, что его необычная система управления — это такое препятствие, которое нужно преодолеть ради того, чтобы добраться до каких-то крутых продвинутых фич, но прикол в том, что это и есть главная фича и по ту сторону неё ничего особо примечательного нет.
А посыл предыдущей статьи, если его правильно понял я был в том

Думаю правильно поняли. Во всяком случае, пользуясь vim более 10 лет, я с этим тезисом согласен. Есть ещё некоторые мелочи, например комманды через :, но они есть в IDE, хоть и выглядят не так и требуют мышку как не крути.

> требуют мышку как не крути.
В PyCharm(intellij) можно вызвать любую вообще возможность IDE нажав либо Ctrl+Shift+A либо Shift+Shift. И в нормальном дропдауне, который фильтрует возможность найти что тебе надо, а не пытаться вспомнить как конкретная команда называется.
Полный бред. Кто мешает стрелки забиндить на, к примеру, правый Alt + ESDF.

Расскажу, как забиндено у меня:
Alt + ESDF — стрелки
Alt + AG — перемещение курсора на одно слово (аналог Ctrl + стрелки)
Alt + WR — home/end
Alt + Q — Delete
Alt + T — Backspace

Alt + ZXCVY — undo, cut, copy, paste, redo

Далее используется левый Alt, а не правый:
Alt + UJ — скролл на одну строчку
Alt + IK — Page Up, Page Down

Удобно при слепой печати. Переносить руки не нужно.
Для мена проблема «переноса рук от клавиатуры» на ура решается тачпадом :)

Просто интересно как? Для меня проблема решается трек-поинтом.

Можно приноровиться пользоваться им большим пальцем, но трекпоинт все равно удобнее.
Я начал использовать Vim(раскладку) не потому что мне не удобно нажимать ctrl(реально есть люди которые не хотят убирать руки с home row?), не потому что это прям супер быстро, и не потому что режимы это супер-дупер-круто, а потому что все лучше чем раскладка в Visual Studio.
Сейчас пересел на Clion(IntelliJ IDEA) и все равно использую плагин для Vim и знаете почему? Это просто удобно. Не более. И не потому что не надо убирать руки с home row, а потому что мне это просто нравится.
Я на согласен что IDE будь она от JetBrains, Microsoft будет лучше чем любой Vim обвешанный плагинами, но просто есть такие люди которым нравится нажимать для удаления слова ESC + diw или ESC + dd для удаления строки и я вхожу в их число.
С авторам согласен полностью, что большинство плюсов Vim'a по сравнению с IDE не стоит того, но можно скачать плагин Vim для IDE и радоваться жизни.
P.S готов к минусам.
Полностью поддерживаю, пришел к виму год назад, до этого пользовался разными редакторами и IDE порядка 5-6 лет, и я не понимаю зачем спор vim vs IDE/VSCode/Atom/Sublime/etc, в большенстве редакторов и IDE есть vim-режимы, сам лично пользуюсь WebStorm+vim-mode & VSCode+vim-mode, при небольших настройках и подгонах под себя получается удобное сочетание.
Опять же все на любителя, так же есть Emacs с кучей плагинов и сменой клавиши ctrl на caps, дело каждого, как говорится на вкус и цвет!
Вот вы все говорите про сочетания ESC + something, а ведь Normal-mode он на то и Normal чтобы в нём находиться постоянно. Не надо после каждой команды возвращаться в Insert-mode.
А как код новый набирать?
Хм, я обычно пишу функции строчек в 5, да и то, частенько в рамках одного блока приходится перемещаться, объявить переменную там или добавить что-то в начале строки. Не представляю случая, когда бы мне пришлось делать ESC + diw, если я хочу удалить слово, я уже в Normal-mode, ведь как-то я это слово нашёл, f там или / или пресловутые hjkl.
Я не знаю как вы, но я пишу код так — написал, отредактировал, дописал, подредактировал. У вас какой-то другой процесс?
Я пишу код так — думаю, читаю в нормал моде, переместился туда где нужно что-то отредактировать, нажал ciw или ci), написал, esc (который у меня на капслоке), дальше всё повторяется. Хочу изменить функцию, которую вызываю под курсором — *. Хочу перейти к другому буферу — bn. Нормал мод — моё нормальное состояние.
UFO just landed and posted this here
> Лично мне для редактирования кода вим не нужен, не уговаривайте

А кто-то пытался уговаривать?
Не заметил, статья указала на удобства vim, а не на неудобства чего-либо другого (или агитацию за vim).
Мне почему-то показалось, что статья про «киллер фичу» как раз тонко(или не очень) тролила vim. Что косвенно подтверждает текущая статья-ответ и первый комментарий к упомянутой выше статье.
Эта статья habrahabr.ru/post/339908 пыталась в какой-то мере

Нет, не пыталась :). Наоборот, она была написана для того, чтобы те, кому категорически не понравились режимы, не искали в виме чего-то, что компенсирует их наличие. Ведь, если киллер-фича приложения вас не радует, то и приложение вам не нужно. А киллер-фича вима это именно режимы, а не что-то ещё.

Я, как человек, который таки слез с PyCharm на более легковестные штуки (сначала Sublime, а потом VSCode), могу сказать, что у IDE в этом плане есть гигантская проблема. Они делают много вещей, но значительную часть этих вещей они реализуют посредственно или просто плохо. В то время как в случае с vim или VSCode, вы сами настраиваете то, что вам нужно, еще имея возможность выбрать из ряда альтернатив, причем таких, что каждая альтернатива в целом старается делать что-то одно, в случае IDE это все идет вам пачкой, и когда оно работает плохо — вы просто страдаете.


Более того, у IDE от JetBrains в целом есть тяжелое наследие в виде Idea, которое довольно часто проявляется (в духе, почему у вас индексация для Python, а не language server?)

в случае IDE это все идет вам пачкой, и когда оно работает плохо — вы просто страдаете

Не знаю как вы, а я не хочу страдать от отсутствия нормального автодополнения (про SublimeJedi знаю), удобного интерактивного отладчика, удобной интеграции с СКВ в Sublime и т. д. IDE != редактор кода.

Мне бы тоже не хотелось, но…
Для локального интерпретатора и у VSCode и у Sublime все няшно, но как только начинается удаленный, то тут небольшие проблемы, но есть нормальный language server.


По поводу того же СКВ, по крайне мере с git интеграция у VSCode мне нравится больше в целом.


А по поводу PyCharm:


  • Автодополнение не учитывает __all__, а значит почти гарантированно превращается в мусор
  • Автодополнение нужно пересобирать ручками, потому что вместо language server оно импортирует все структуру интерпретатора и работает только с ней, как только установили что-то большое — сидите ждите импорта. Более того, иногда импорт отваливается и нужно инвалидировать все с перезапуском. Более того, эта штука не работает для удаленных дебагеров через ssh, а значит там каждая новая либа или версия — инвалидация кеша.
  • Интерактивный дебаг это круто, он не тогда, когда он виснет, когда старые точки прерывания и когда опять же работает неправильно из-за того, что забыли сделать инвалидацию кеша.

IDE это отлично, но значительная часть вещей работает там не так, как хотелось бы. Единственное чему я не нашел замену — это работа с удаленным интерпретатором, а так все нормально и на VSCode.

Это VS Code-то легковесный?
А с чем вы сравниваете? C Vim или с Pycharm? По сравнению со вторым — да, довольно легковесный.
С PyCharm конечно же. С доставленными аддонами для питона VS Code будет не многим легче PyCharm. А Vim, который едва ли не в 3к строк имплиментируют, естественно будет меньше.

Простите, но вы не правы. Открытый в pycharm проект иногда расползается до 2-3 ГБ памяти, VSCode у меня пока еще такого себе не позволял.


Базовый PyCharm — 700 mb, VSCode с плагинами на git + docker + pyhton — 150-200mb.


У меня так, ну и VSCode стартует куда быстрее, потому что не выполняет индексацию после запуска.

Вот уж что-что, но поставить ST и VSC в один ряд по «легковесности» — это надо умудриться=)
Еще в VS Code и Sublime Text более богатая подсветка синтаксиса для Python. PyCharm в этом плане крайне убогий :)
Куча плагинов от разных разработчиков, которые порой конфликтуют друг с другом — это тоже не всегда удобно. Не скажу за вим, но вот у SublimeText и Atom я на такие глюки насмотрелся.
А ещё можно поставить плагин ideavim…
Killer feature VIM — это навигация через jkl; да и в режимов в Emacs по более будет. так что JetBrains IDE плохое сравнения для VIM так как есть ideaVim со всеми вытекающими ништяками, он навигации до макросов. Да и пока этот Vim запуститься со всеми плагинами чтобы открыть файлик я уже на IDE проект скомпилирую. А так всегда запущен spacemacs для открытия быстро файлов и для org-mode.
И да если вы во время программирования используете мышку, скорее всего вы дизайнер. Набирать код мышкой очень не прагматично.
Не путайте режимы Vim с режимами Emacs. Название одно, но означает оно в Emacs и в Vim совсем разные вещи.
ну да, но в с случае с spacemacs одно дополняет другое.
ideaVim со всеми вытекающими ништяками

Из вытекающих ништяков, там только частичный функционал normal mode вима, но этого увы, совсем недостаточно для замены (

Да и пока этот Vim запуститься со всеми плагинами чтобы открыть файлик

Какие то не правильные у вас плагины, у меня Vim любой (совершенно любой, с которым я когда либо работал) проект открывает меньше чем за секунду.
Из вытекающих ништяков, там только частичный функционал normal mode вима, но этого увы, совсем недостаточно для замены


Да конечно, но я вот как то вот вообще не тянусь к vim благодаря этому плагину. А можно плз по подробнее, что вы такое юзаете в vim? И действительно ли так часто?
Непосредственно от Vim я юзаю его VimScript, а дальше уже пилю плагины, которые мне чаще всего нужны в проектах. Их довольно много, но все обычно сводится к примерно такому алгоритму:
1. Открываем вим, появляется список проектов — плагин vim_start
2. Открываем проект, загружается история — плагин vim_prj
3. Открываем таск трекер — плагин vim_notepad (и да, у нас еще в телеграме есть бот таск-трекер, его тоже юзаю, но вне вима, хотя можно и интегрировать)
4. Создаем нужный файлик — плагин nerdTree
5. Именуем файлик, на пример OrderRepository, он автоматически заполняется шаблоном класса-репозитория — плагин vim_templates
6. Добавляем недостающий код набором типа ifelse, вставляется структура ветвления — плагин UltiSnips
7. Добавляем правки в текущий коммит через 'gC, открывается окно ввода комментария, заполняем его, сохраняем, пушим 'gp — плагин vim_git

На счет частоты — не просто часто, очень часто, каждые несколько секунд. В браузере, кстати, тоже ) Попробуйте какой нибудь плагин для браузера типа VimFx — очень удобно, когда левая рука на скролле, а права на мыше.
О круть спасибо. Сейчас попробую контр атачнуть ^_^
1. Открываю IDE, либо там же выбираю проект, либо открываю сразу проект так как IDE замаплина на него.
2. Если нужна история файлов над которыми работал юзаю CMD+ALT+E. Так же имеется планиг контекстов, мапится на таск трекер практически любой от redmine до Jira. При взятии задачи через этот таск мнеджер, меняется ветка через git flow, переключается конеткст октрытых файлов (очень удобно, когда открыто 100500 файлов, и тебя просят сделать хотфикс, то можно просто поменять задачу в таск менеджрее, а потом свичнуться обратно и открыть все те же файлы — безценно).
3. решается задачей 2.
4.1. CMD+1 переходим в навигейшен, вводим имя директории или примерное место локации где нужно создать файл, нажимаем CMD+N, выбираем шаблон.
4.2. Вариант чаще юзающийся. CMD+ALT+O ищем нужный класс открываем его, CMD+ALT+J переходим в навигейшен, далее по стандартной схеме CMD+N…
5. решается на шаге 4.
6. Юзаем live templates, смарт suggest tool. заполняем не достающие переменные, теплейт создает класс.
7. CMD+ALT+C (у меня) вызывает Commit от плагина VCS, заполняем коммент, так же предупреждены о метках в коде, о ошибка о оптимизации и авто форматировании кода. Коммитится всегда guide style company код, хоть ты в одну линию все написал, все будет чики пуки (конфигурабельно).

т.е. это не заслуги VIM, сколько заслуги VIMScript. При всем этом IDE тоже поддерживает плагины и их можно писать на Scala ^_^
Я не пытаюсь вас убедить, что «срочно надо бросать эту дебильную IDE и переходить на богоподобный Vim». Я пользовался многими редакторами и популярными средами разработки, но остановил свой выбор на Vim из за тех свойств, что описал ниже.
Не ни в коем случае, не пытаюсь оспорить что либо, просто боялся что я теряю тот или иной функционал отказавшись от VIM. Чисто для себя проверил.
Сильно сомневаюсь, что вы теряете что-то крайне важное, без чего нельзя быть «полноценным программистом» отказываясь от Vim.

Это скорее ваш «комплекс неполноценности программиста» (как, на пример, некоторые страдают от того, что не знаю ассемблер), коим страдают практически все, но это временное явление и ничего опасного оно не несет.

Для общего развития, возможно, вам стоит пройти vimtutor, возможно вас что-то заинтересует в самой концепции редактора, благо проходится он за час.
возможно, вам стоит пройти vimtutor,

Дак не я ж бывалый vimer, в IDE принимаю таблетки от ideaVIM плагина. Просто я думаю тут зависит от наклонности девелопинга для obj-c девелоперов vim немного сыроват, кучу всего нужно придумывать. Но еслб я был Web девелопером или c может быть даже и сидел бы на VIM. Или был бы hardware девелопером, тоже можно. А сейчас очень сильно и по хардкору юзаю refactoring и vim как ни крути не готов к такому, ну либо я не научился курить как делать рефакторинг в Vim и как делать inline debuging в vim. и прочие плюхи.
Для inline debuging в Vim есть плагины, но лично я предпочитаю не дебажить этим методом, а писать тесты для перехвата багованного кейса.

Для рефакторинга Vim'у недостаточно «мозгов», а втягивать в него семантический анализатор никто не хочет (да и зачем, когда есть IDE?). Опять же, я рефакторю очень редко, потому не испытываю особую нужду в этой функциональности.
Для рефакторинга Vim'у недостаточно «мозгов», а втягивать в него семантический анализатор никто не хочет (да и зачем, когда есть IDE?). Опять же, я рефакторю очень редко, потому не испытываю особую нужду в этой функциональности.

Таким образом делаю выводы что на 2017 октябрь. Vim для VIM юзеров, IDE для IDE юзеров. Поэтому холиворить нет смысла )
Вы это объясните авторам такого рода статей )
Попробуйте какой нибудь плагин для браузера типа VimFx — очень удобно, когда левая рука на скролле, а права на мыше.

О да это ваще киллер фича, я не юзал VimFx я слез с файра на оперу и юзаю хром плагин Vimium. Без VIM навигации вообще ни куда. это тру стори.
Кстати чтоб полностью отвыкнуть от мышки, и развить навык управления компьютером с клавиатуры, я ее убрал в долгий ящик. :D
У вима из коробки есть несколько уникальных возможностей редактирования, которых нет в IDE
Да, черт возьми, интересно какие…
Перейти к следующему/предыдущему абзацу
Перейти до пробела.
перейти на полстраницы вниз/вверх.
Перемещение на первую/последнюю/среднюю строку экрана.
Можно удалить ровно X строк кода.
Серьезно? Т.е. вот это «уникальные возможности»? Не то, что можно комбинировать разные команды, вроде `dFx`, не операции над текстовыми объектами, аля `di{`, не макросы и повтор команд при помощи `.`. Наличие множества буферов, ex-режим, запуск внешних команд навроде sort?.. Да кому это нужно, настоящая мощь вима в команде «перейти до пробела»!

PS: использовал vim, потом emacs, потом emacs+evil.
Для большинства повседневных задач в IDE достаточно знать буквально пару-тройку горячих клавиш.
А для набора текста достаточно буквально одного-двух пальцев!

dFx — удаляете всё до символа x?
Вы можете привести кейсы с примерами кода? Вот я нахожусь здесь, мне надо сделать такую-то вещь, поэтому я нажимаю такую-то комбинацию. Просто практически всегда можно обойтись другими средствами

На пример при работе с HTML/XML находясь тут:
<ul>
  <li>...|...<li>
</ul>

можно заменить все содержимое тега li комбинацией cit.
Круто, но лично я бы предпочел без ctrl )
Нет конечно, зачем к нему тянуться? Вы, видать, один из тех, кто вимом не пользовался, но «знает» что плохо? )
Я же спросил, а не утверждал. Как вы между режимами переключаетесь?
Вимом пользовался на уровне «блин, почему здесь не Нано по-умолчанию, как теперь отсюда выйти?»
Там возможностей много, от ctrl+c до jj (предпочитаю второй вариант).
А в режиме редактирования разве «jj» не поставит два символа?
Не знаю как у господина Delphinum, но у меня Caps Lock переназначен как Esc. В итоге получается очень удобно и никуда тянутся не надо.
У меня КапсЛок — переключение языков.

Если набрать в режиме редактирования jj, то:


  1. с настройками по умолчанию — вставит jj
  2. с настройкой типа inoremap jj ^[
    в зависимости от величины паузы между нажатиями (задержка регулируется переменной timeoutlen):
    • вставит jj
    • выведет вас из режима вставки
dFx — удаляете всё до символа x?
После. Но это лишь рандомный пример, не обремененный смыслом. Но вот, например, `ct.` может быть удобен (удалить все до ближайшей запятой и перейти в режим вставки для нового содержимого).

Просто практически всегда можно обойтись другими средствами
Именно! Поэтому я лично вообще не понимаю всех этих десятипальцевых методов и прочих «оптимизаций». Ведь набирать можно вообще одним пальцем.
ППКС. (тоже emacs + evil) Ещё повтор и переворачивание позиционирующих команд (nN,;), text marks, vimdiff, undo/redo знающий о ветвлениях… Но нет, драма на несколько статей идёт по поводу command/insert mode и базовых команд.
Ну дык напишите нормальную статью. Все статьи про преимущества вим — не отражают никаких преимуществ
Все статьи про преимущества вим — не отражают никаких преимуществ

Немного не так. Статьи про преимущества вим натыкаются на критику в стиле — "Это, конечно, неплохо, но разве это компенсирует возню с режимами? В других редакторах ведь можно получить похожий функционал без режимов, зачем мучаться с вимом?"

Но нет, драма на несколько статей идёт по поводу command/insert mode и базовых команд.

Драма только по поводу режимов, а не по поводу базовых команд. С точки зрения тех, кто не любит вим, режимы — зло и, чтобы пользоваться вимом нужно найти в нём что-то, что это зло компенсирует. А ничего такого естественным образом нет, потому что вся модель работы с вимом построена на режимах.


Вот автор текущей статьи, например, считает, что возможность перейти к какому-то конкретному символу в строке, существующая в виме это неплохо, но в другом редакторе ведь можно нажать Control+F и потом перейти к символу и это не сильно хуже, а то и лучше, потому что для этого не используется отдельный режим.


Та же история с марками, позиционирующими комантами и undo tree. Зачем делать это с помощью режимов, когда можно и без них?

Но ctrl+f запускает режим поисковика по текущему документу, разве нет?
Но ctrl+f запускает режим поисковика по текущему документу, разве нет?

Или по проекту, зависит от редактора. Для поиска нужно перейти в другой режим, но в этом режиме пользователь проводит мало времени, а аналога normal mode в виме в этом другом редакторе вообще нет и это хорошо.

Получается режимы в Vim плохо, а режимы не в Vim хорошо?

Если я правильно понимаю автора, то режимы, в которых ты немножко побыл и вернулся в стандартный режим — хорошо. А когда есть несколько режимов, в каждом из которых ты проводишь существенное количество времени — плохо. Но это мои домыслы — лучше автора спросить.

> Драма только по поводу режимов, а не по поводу базовых команд.

Тем не менее вон автор недоумевает, чем команды перехода лучше Ctrl+F.

> Вот автор текущей статьи, например, считает, что возможность перейти к какому-то конкретному символу в строке, существующая в виме это неплохо, но в другом редакторе ведь можно нажать Control+F и потом перейти к символу и это не сильно хуже, а то и лучше, потому что для этого не используется отдельный режим.

Сто раз на этот вопрос уже отвечено. '/' в виме это не просто поиск по тексту. Его можно нажатием одной кнопки повторять (n), делать шаг назад (N), откатывать на прежнюю позицию (Ctrl+o), делать частью цепочки команд. Command mode это целый мир, его возможности перевешивают цену одного нажатия клавиши переключения режима (за исключением случая, когда надо в небольших границах всё время попеременно перемещаться и редактировать, но для этого я лично смешиваю хоткеи vim и emacs, а «стрелочники» в этом сценарии так всё равно и будут тянуться к мышке/стрелкам).

> Та же история с марками, позиционирующими комантами и undo tree. Зачем делать это с помощью режимов, когда можно и без них?

Затем, что из-за всех этих, казалось бы мелких, экономий на клавишах и принципа vim «самые частые действия уже забиты на 1 удобную вам клавишу в command mode» при определённом уровне автоматизма практически до любого значимого места в коде можно добраться в пару нажатий клавиш вообще не приходя в сознание и не снимая рук с home row — это позволяет гораздо лучше сосредоточиться на задаче, а не на навигации по коду и перемещениях рук с мышки на клавиатуру. Некоторые сценарии из названных мной вообще не воспроизводятся в традиционных редакторах, например text marks:

— вижу «интересное» место в коде, про которое уверен, что захочу вернуться не раз — жму mm (вообще не думая)
— хочу вернуться на отметку — жму M (перезабил на циклическое перемещение по отметкам)
— посмотрел код вокруг отметки, хочу прыгнуть туда откуда пришёл — Ctrl-o.

И таких сценариев десятки.
Его можно нажатием одной кнопки повторять (n), делать шаг назад (N)

Типа F3 и Shift+F3?

А как сделать что-то похожее на '3n' или '5N'?

3n перейдёт через 3 вхождения искомого текста, 5N через 5 назад.
Т.е. для первого случая вам нужно нажать 3 раза F3, во втором 5 раз Shift-F3.

Не вижу особой разницы. Если, конечно, не переходить более чем на 5 позиций, но не представляю, зачем это может быть нужно, для случаев, какие я могу сходу придумать есть закладки.

Ну, закладки не помогут, если все эти результаты в одной длинной строке, например.

И опять же. Это можно комбинировать с другими командами, например(безумие, но вдруг?): d3n — удалить всё до 3 результата поиска, или y3n — скопировать всё тоже самое в буфер.

Никогда не мог понять смысл этих команд. Подсчитать навскидку количество слов или строк, если их больше 2-3 достаточно сложно. А на 2-3 строках преимущество уже не особо заметно.
В особенности не могу понять способ использования
удалить всё до 3 результата поиска
— откуда я знаю, где будет третье вхождение? Проще и точнее, на мой взгляд, выделить что нужно и удалить.

Да, пожалуйста. Выделяйте. v3n. Недолёт? Ещё раз n. Перелёт? N
По поводу "откуда я знаю", это может быть cvs файл, в котором вы знаете до какого разделителя нужно провести операцию.

Спасибо за Ctrl+b!!! А там и Ctrl+Alt+Left нашел.
IDEA Киллер фича это — live tamplates, просто яб заменил бы ими все Gist на хабе )
Польза режимов Vim, автор, не в том, о чем вы подумали, тут главное «Единообразие» и «Комбинирование». Есть еще прицел на знание редактора пользователем, но не будем об этом, иначе половина хабра тут точно обидится )

Под единообразием я имею ввиду, что, как правило, управление всем что связано с разработкой выполняется примерно одними и теми же сочетаниями.

Под комбинированием я имею ввижу, что, как правило, те единообразные управляющие команды можно комбинировать между собой, как утилиты командной строки.

В результате сравнивать Vim с, на пример, Intellij IDEA, это как сравнивать Bash для работы с git + docker + postgresql с Kraken + Admiral + PgAdmin.
UFO just landed and posted this here
про то, что vim — хорош, а IDE — так себе, скорость набора текста не та.

Стабильно такие статьи от адептов вима появляются на хабре. Только я до сих пор одного понять не могу, если у них все так круто, то зачем об этом трубить и разводить срач в комментах)
Сторонники VIM просто пишут про свой редактор, в то время те, кто не используют VIM, обсирают первых. Причем задают провокационные вопросы в стиле «зачем вам эти режимы», получают ответ и начинают нести не аргументированную критику в стиле «да у меня и вим тормозит», «да вим архаизм» и т.д. В итоге пытаются доказать что их Мега-супер-пупер IDE круче VIM, хотя, как выясняется, вимом они толком и не пользовались.

Заметьте, почти нет комментариев от тех, кто долго работал в VIM и перешел на IDE. Весь вайн разводят те, кто VIM толком не осилил. Вот такое проявление ксенофобии.
про то, что vim — хорош, а IDE — так себе, скорость набора текста не та.
Что то я не нашел где там про это сказано.
И про посыл тоже как то не о том, как мне кажется. Там было скорее про то что без режимов vim-а нету, а плагины это второстепенное. Убери режимы, это будет не vim. Убери плагины, то это все еще vim.

А еще есть такая замечательная штука AceJump.

Кстати AceJump говно после последних апдейтов :) затрахался с ним, переюзал все плангины данного типа и вот CharJump просто вкусняшка… лучше нет ничего.

И VIM тоже есть подобный плагин. От туда и пришло в IDE.

Ну, AceJump — это скорее маркетинговое название, подобные расширения существуют в целой куче редакторов и IDE: emacs, vim, vscode и т.д.

А что не так с последними апдейтами?
А что не так с последними апдейтами?

очень часто крашится, теряет мапинг хоткея, очень долгая инициализация, много не нужного в коде, нужно быть проще для такого рода тулзы.
Как мне кажется, автор не до конца понял фразу «без мыши». Это понятие подразумевает, что её нет совсем. У меня на рабочем столе нет мыши физически как предмета, vim мне помог окончательно отказаться от такой вещи. Это была моя основная цель при изучение редактора.
Вот вам челлендж: отключите мышку, уберите её куда-нибудь и попробуйте поработать так хотя бы день в вашей любимой IDE.
Другой плюс vim-a, лично для меня, возможность работать удаленно без установки какого либо дополнительного софта. Он меня избавил от мучительно меню настроек с огромной вложенностью и функциями, которые мне не нужны. Подтягиваем конфиг файл на хост машину и вы уже в работе.
Автокомплит стал меня раздражать, по большей части. Обычно я знаю что мне надо и могу это напечатать достаточно быстро, что бы не обращать внимание на выпадающее меню. Я его отключил, но хочу заметить, он там есть.
Про vim нужно усвоить, что у всех он разный. Каждый его настраивает под себя и потому, он становится идеальным инструментом именно для вас.
vim мне помог окончательно отказаться от такой вещи. Это была моя основная цель при изучение редактора. Вот вам челлендж: отключите мышку, уберите её куда-нибудь и попробуйте поработать так хотя бы день в вашей любимой IDE.


А зачем? Что это за цель такая: «отказаться от мыши»?

Не надо переводить взгляд с клавиатуры на мышь и обратно, не надо пермещать руку на мышь и обратно. Это бывает удобно.

ЭЭЭЭ, а зачем переводить взгляд на мышь?
Видимо те люди, которые толком мышь не используют просто не имеют навыков работы с ней: перенести руку на мышь и обратно на клавиатуру вслепую, быстро сделать несколько кликов в сочетании с нажатием хоткеев левой рукой… Это так-то и не удивительно и получаем замкнутый круг: не пользуешься -> нет навыков -> неудобно -> не пользуешься.
Просто тут два варианта — либо оставить всё как есть, либо долго и упорно работать над собой, имея пониженную производительность, но при этом осваивая новые инструменты.
Видимо, я должен уточнить про свои навыки работы, для понимания.
Я не говорил, что я не умею пользоваться мышкой. До вима, я работал около 7 лет попеременно в Sublime Text и intelliJ IDEA. Но всегда чувствовалась проблема, мне не так удобно работать без мыши и в отрыве от оборудованного места. Последнее время я работаю исключительно на ноутбуках и мне хотелось быть максимально независимым от рабочего места. Тут мне и пришелся по вкусу vim. Примерно за 2 недели я восстановил в нем все функции которые мне нравились в sublime, привык к его режимам и хоткеям и к IDEA/Sublime я уже не возвращался несколько лет.
По поводу самой мыши, разницу в скорости нужно прочувствовать. Примерно 10 лет назад, я работал в одной международной компании, прослушивая и фиксируя радиоэфир. Мышь там была моветоном, так как скорость работы человека значительно падала. Велась статистика по сотрудникам, в среднем с мышью работал 1 человек из 20.
Алгоритм примерно был такой:
Мышь — дойти до границы рекламного ролика, навести мышкой на начало клипа, аккуратно выделить кусок, контекстное меню, выбрать сохранить.
Клавиатура — были хоткеи на смещение по 30/10/5/1 секунды. Выделение занимало примерно 2-5 нажатий на кнопку, ctrl-s.
Сам процесс выделения, наведения занимает больше времени чем кажется. Клавиатурой можно было сделать это все даже на слух.
Всё-таки этот момент сильно зависит от задачи, для варианта радиоэфира я бы тоже выбрал клавиатуру, и я даже не сомневаюсь, что точно спозиционироваться на секунду назад куда проще хоткеем, чем мышкой…
К примеру — нужно заменить часть имени переменной в куске кода без автозамены или дополнений на другую — я делаю это клавиатурой, переходя по строкам и столбцам(со всевозможными End'ами, Home'ами и быстрыми пропусками слов CTRL+стрелка) и используя Shift и Ctrl+V для замены, мой коллега то же самое дело делает мышкой + Ctrl+V для замены…
В результате он примерно такой же кусок кода обрабатывает раза в 4 быстрее, причём именно на выделении текста он экономит время. Можете просто попробовать посоревноваться с коллегами на подобной задаче, особенно если среди них есть геймеры, увлекавшиеся\увлекающиеся шутерами)
Я так понимаю, вы предлагаете переименовать переменную в, скажем, десяти разных местах вручную? Значительно быстрее мышкой+клавой, чем просто мышкой. Пишем новое название, дважды кликаем по нему, ктрл+с, потом дважды на каждом старом названии, ктрл+v, ктрл+v, ктрл+v. Чем больше замен нужно сделать — тем выгоднее получается мышь.
Значительно быстрее мышкой+клавой, чем просто мышкой.
НУ я всё-таки сравнивал вариант просто клавиатурой и мышкой + клавиатурой, но ситуация от этого не меняется на мой взгляд…
Для меня тут важно либо попытаться показать товарищу в обсуждении выше, что способ мышка + клава быстрее чем просто клава, либо узнать что-то новое про работу на клавиатуре, и научиться действительно быстро на ней работать…
Ой, простите, я это и имел ввиду — «Значительно быстрее мышкой+клавой, чем просто клавиатурой»

У вас получилось О(n), с клавиатуры получается O(1) =)
:%s@\<old_name\>@new_name@g
Добавьте в начало tabdo, eсли нужно провести замену в нескольких открытых файлах.

По условиям задачи автозамену ведь нельзя. Я так могу просто ctrl+r нажать

Можно записать макрос для первого вхождения и повторять пока они не кончатся

Есть же ещё мультикурсор (в IDEA), пришедший из Sublime. Тоже без автозамены, местами удобнее авторефакторинга, только переменные (или любые идентичные друг другу подстроки) выбираются в несколько раз быстрее, и да, с клавиатуры

Такое ощущение, будто в текстовых редакторах нет опции замены. Причём многие понимают регулярки.
Раз уж мы на территории холиваров…
Конкретно ваш пример быстрее делается на клавиатуре, даже в саблайме средствами мультикурсора. Через шифт выделяется нужный кусок, несколько раз по ctrl+d(cmd+d) и переписываете.
В виме так и вовсе простая pcre регулярка или замена куска по поиску и в дальнейшем несколько раз «n» для перемещения к следующему элементу и "." для повторения предидущего действия с ним.
Про соревнования. Я тоже играл в 1.6, катался по турнирам с командой, мне хватает опыта работы с мышкой. Что же вы меня за инвалида то держите :\ Мышка мне нужна при работе с графическими приложениям, вроде фотошопа или скетча, но так как этим я уже не занимаюсь, нужда в ней отпала совсем.

В любой нормальной IDE мышь тоже не нужна.
Я пользуюсь IDEA с ideavim-плагином, но если его отключить, мышь тоже не понадобится, просто станет менее удобно.


Смысл IDE не в том, чтобы меньше печатать. IDE от редактора отличается тем, что оперирует не символами и строками, а токенами языка программирования, и потому многое знает о проекте и помогает в работе, делая статический анализ кода в реальном времени.

Сложности и прелести работы в Vim сильно преувеличены. Когда я работал с юниховым сервером разработки (а такое было не один раз в карьере) и не было возможности организовать тестовую песочницу по виндой, то использовал vim в терминале и был вполне щаслив. Кстати, мышь он вполне себе поддерживает. По мне это удобнее, чем редактировать под виндой, а потом синхронизовать на сервер.

Когда же была возможность работы под виндой под ней и работал. И с удовольствием сейчас использую Sublime и VSCode (вот Atom у меня не пошёл). И ставить вим как-то смысла нет.

Так что всё вопрос лени. В виме килер фича это то, что всё что используется часто сделано очень удобно, несмотря на то, что со стороны последовательность клавиш кажется бредом. Думаешь какой идиот будет это нажимать. А нажимаешь и понимаешь, что не напрягает. И довольно удобно. По крайней мере жить можно )

В общем это один из очередных холиваров между теми, кто кроме как работа в виме достижений не имеют и теми, кто хочет поставить на место первых, но сам в виме на работал. А популярность в таких спорах, как и в любом холиваре, обеспечивает вентилятор
Вот в оригинальной статье автор просто описал одну из фич vim — модальные режимы. В этой же статье автор попытался обгадить эту фичу. Так он ее даже не пробовал (открыть редактор, написать hello world и выйти не считается)!

Пишите критику обосновано. А не так, что я не осилил, значит оно мне и не надо.
ИМХО прелесть VIM-а заключается в том, что единожды настроив его с плагинами и прочим, копируем на любой сервер или локальный комп и вуаля — та же среда разработки, что и на родной машине. Ни одна IDE этим похвастаться не может. Остальное — режимы, расширения и пр — на любителя. Я честно пробовал несколько вариантов IDE, но все равно сижу в VIM-е :)
Эмм, а кто мешает залить на гитхаб папку с настройками Саблайма или закинуть конфиг той же Idea в репозиторий конфигов?
Наверное тот же, кто не поставил на сервера иксы ;) как собственно Идею или саблайм то же
Для серверов — согласен. А для локального компа?
На локальный комп надо точно так же качать и ставить IDE. Хорошо, если у нее, как у PHPStorm, к примеру, нет привязки к железке в плане ключа — авторизировался и можно работать.
Аргумент работает и в другую сторону — Vim и все его плагины тоже надо скачивать и устанавливать, копировать/чекаутить .vimrc и т.п.
Ну VIM бесплатен и сходит в состав стандартного репа линуксовогог, ставить его не впример быстрее, чем любую IDE, денег не требует, супер железа — тоже. Настройки с плагинами развертываются из гитхаба или чего-либо подобного в течении пяти минут от силы.
Замените в этой фразе VIM на ST3 — кроме «денег» ничего не изменится (можно пообсуждать, можно ли ST3 считать IDE, но это к делу не относится, запишем её в текстовые редакторы).

Я не спорю, что vim+плагины — это хорошо (и я не спорю, что поставить VS даже на твердотельник — это та ещё морока), просто он не монополист по части «я могу развернуть настроенную среду с конфигами и плагинами за 5 минут».

И таки есть относительно стандартные линуксовые дистрибы, где вима по умолчанию нет — тот же NixOS, например (но этот дистриб — отдельная песня). Про винду промолчим=)
На мой взгляд у IDE и VIM'а просто разные сценарии использования. Если часто приходится работать на разных компьютерах, где может не быть иксов, где вообще не предполагается установка какого-то нового ПО — учим VIM и радуемся возможности работать на любой машине используя консоль и перетаскивая свой конфиг. Если компьютер для разработки один, или у всех устанавливается одинаковое окружение — можно разворачивать и использовать большую IDE…
У каждого из вариантов опять же свои соответствующие минусы — если ты привык работать в VIM но тебе приходится частенько приходить к подчинённым\коллегам и править что-то в их IDE — будет неудобно и медленно. Если ты используешь IDE, но при это часто подключаешься к серверам, где не IDE, ни даже иксов нет — та же самая грусть и печаль.
В любом случае — используй то, что тебе привычно и удобно, и не ломает какие-то корпоративные гласные и негласные правила, а отстаивать свой собственный инструмент как «золотой молоток» не стоит.
Да гореть в аду тем, кто разработкой на серверах занимается. Зачем этот бардак? Разработка только локально, затем на сервер только развернуть и не более. А если в плане разворачивания/администрирования, то не проще ли написать скрипты на тестовом окружении и затем юзать на боевом?

Или вы за то, чтобы переписывать всё заново, конфигурить каждый сервер индивидуально, выкладывать везде индивидуально. Ну мсье знает толк.
Ну например разработка сетевых сервисов. Если боевой сервак будет крутиться на юниксе, то зачем тратить ресурсы пытаясь повторить его под виндой, где другая сетевая модель.

Дальше выбор разработчика.

Поставить виртуалку под виндой и работать в виме через консоль (мой выбор). Поставить виртуалку и заливать на неё из IDE при редактировании в винде. Поставить себе юниховую машинку и работать в «полноценной» линуховой IDE.

В другой конторе, где работа шла на линухой машине на работе я работал в виме через консоль. А дома собрал из говна и палок конфигурацию «идентичную натуральной» — из большой IDE. Просто дома было лень ставить виртуалку, а инет в те времена тормозил, чтобы комфортно работать в терминале. А на работе было лень поднимать домашнюю конфу, потому что в корпоративной NT она не встала с первого раза.

Всё же из-за удобства и лени. Если ты справляешься с работой никого не волнует должен ли ты «гореть в аду» из-за того, что работаешь на сервере.
Незнаю как вам.
Для меня киллер фича VIM это то что он работает через COM порт и через SSH на чем угодно и не требует 2Гб оперативы и топового железа и при этом не тормозит.
Вы пишете терминальное ПО сразу на целевом железе подключаясь по SSH/COM?

Сравнивать Vim с Idea, которая вышла на 10 лет позже и еще 15 лет дорабатывалась, и вот теперь умеет все, что Vim… Ну ок. Если начинать кодить сейчас и с Idea, то может Vim и не понадобится. Правда, вы можете захотеть кодить на С++. Или редактировать текст. Или не платить. Или на сервере или слабой машине.
Бесспорно, автодополнение и авторефакторинг в современных IDE сильно облегчают работу, и этого не может Vim (так же хорошо). Но зачем выбирать, если можно поставить vim-plugin для своей IDE? ;)

на мой взгляд в виме главное не режимы, главное — практически моментально можно получить настроенную под себя среду разработки на любом десктопе/сервере. А также скорость (да, еще есть рабочие места с 2 Гб ОЗУ).
Хоткеи же интуитивно понятны: daw — delete a word, cs — change surround и т.д. (ну и плюсом написание/выполнение макросов, локальные и глобальные закладки, собственные плагины...)
> интуитивно понятны
нет, это не интуитивность. но не зная описаний изначально догадаться что это означает невозможно.
Автор сравнил теплое с мягким. В виме все делается без мыши, а не только набор первой буквы и Enter/Alt-Enter, по сравнению с предложенным в Idea. В посте только крик о том, что «вот я нажал p, у меня вылезло автодополнение „public“» и все. Автодополнение, киллерфича, ага. В виме ты в любом месте в любом случае имеешь все, что о нем было сказано в прошлом посте, а не только при написании нового слова и в виде автодополнения.
Использую VIM лет 10. На мой взгляд, мы упускаем важный момент: IDE, которые используют Emacs-подобную схему управления, не ограничинваются Ctrl. Нажать Ctrl — не проблема. Труднее постоянно нажимать комбинации ctrl-alt-чтото, ctrl-shift-чтото и alt-shift-чтото. Далее — стрелки. Если слепая печать, то просто так до стрелок не добраться — нужно смещать правую ркук, потом обратно ее ставить. Неудобно. Далее page up, page down, home, end — которые активно используются в IDE и которые на ноубуках обычно в странных местах или через Fn. Мы, как разработчики, любим ноутбуки.
Меня всегда удивляет одно: люди не пользуются какой-либо вещью, чуть-чуть попробуют ее и начинают критиковать. Сядьте и поработайте в нем с месяц другой, потом напишите статью. Два раза запустили программу — это еще не значит понимание сути того как она работает и почему именно так работает.

http://www.viemu.com/a-why-vi-vim.html


Особенно понравилось это:


Turns out, this is just a completely wrong way to use vi or vim. Using vi/vim properly, you don't use it modally. You are always in normal mode, and only enter insert mode for short bursts of typing text, after which you press <Esc> to go to normal mode. Thus, the remembering-the-mode problem just doesn't exist: you don't answer the phone in insert mode to get back to vi and not remember where you were. If you are typing text and the phone rings, you exit insert mode and then answer the phone. Or you press <Esc> when you come back. But you never think about insert mode as a mode where you stay.

Может, кто-нибудь хочет перевести всю статью?


P. S. Сам я vim не использую

Астрологи объявили неделю статей про Vim. Количество жертв холиваров увеличилось вдвое.

Мне кажется, что все, кто пишет про вим и про то, что он плох, постоянно подводят к тому, что в нем неудобно писать большие программы. Я с этим полностью согласен. Но мне кажется, что вим хорош не для этого. Коротко обо мне — сейчас мою профессию модно называть словом DevOps, в последние годы я занимаюсь OpenStack-ом, постоянно что-то пишу на ansible/puppet/python/bash. Бывает, что надо поправить пару конфигов руками или изучить что-то новое (последнее, что пришлось изучить — MS Azure cli).

Мне приходится много всего тестировать. Надо поджойнить количество VM-ок и процент свободных ресурсов облака? Открываем IPython, начинаем. В соседней вкладке tmux-а записываем то, что показалось правильным и интересным. Накидали несколько функций, потестировали из консоли — окей, можно открыть PyCharm, начать писать нормальный код — с логированием, try/except, правильными наследованием и композицией. Но вот эти несколько функций в консоли удобнее накидать в vim, чем в nano, потому что из коробки в vim есть автоотступы для python. Можно переключать консоль сразу в IDE, но интерфейс очень уж разный, фокус теряется постоянно.

Идем дальше. Понадобилось написать новую роль для ansible. Помню, что можно как-то явно указать синтаксис из docker-compose для docker_service, но не помню точный синтаксис. Окей, открываем в виме соседнюю вкладку с ролью, которую я писал месяц назад и в которой был docker_service и смотря на нее на том же экране пишем нашу новую роль. Очень удобно — гуглить не надо, постоянно переключаться никуда не надо. Можно, наверное и в IDE так делать, но мне неизвестны люди, которые так на самом деле вообще делают. Копировать без мышки опять же, быстрее и удобнее.

Окей. Написали роль, давайте потестируем. Вот у нас ELK в ансибл ролях — конфиги, сертификаты, пайплайн паттерны для Logstash и т.д. Кучка сервисов. Запустили ансибл, развернулось, но работает явно не так, как ожидалось. По опыту — значительно быстрее пойти на удаленную тестовую машину и руками разобрать все, чтобы понять, что случилось а потом уже rsync-нуть изменения, поменять немного роль и запустить ее снова, нежели пытаться каждый раз менять саму роль, запускать ее и смотреть, угадал ли в этот раз с изменениями. А на удаленной машине опять vim, потому что json и снова отступы из коробки.

Идем дальше. Надо потестировать rspec-ом тесты для паппетного модуля. Но только вот тестов в модуле 4970, а мне надо только те тридцать, которые я сейчас написал (а потом уже только будем запускать все остальные, если мои новые не сломаны). Как из IDE это быстро сделать — я не знаю, а из консоли — знаю. И оказывается, что сделать небольшие правки из консоли в случае чего быстрее, нежели переключать фокус на GUI. И правки эти делаются vim-ом, потому что к нему можно линтер в два щелчка прикрутить, а к nano нельзя.

Продолжаем. Звонят коллеги, просят подебажить немного удаленный сервер. Говорят, что это не прод и можно прямо на нем править, чтобы понять, что не так (это вообще очень частый кейс). Идем. Там питоновый сервис и куча конфигов. И vim. Ну вы поняли — отступы из коробки, удобное копирование, свернуть его можно, команду запустить из консоли, не выходя, на нужную строку быстро перейти и т.д.

И вот для такого использования оказывается, что nano неудобный — там он отступы не сконвертировал из табов в пробелы, тут ошибка линтера закралась и т.д. А vim в самый раз. И везде есть. К тому же непонятно мне, какое я количество IDE должен купить себе буду, если все эти мелочи захочу в IDE править. А когда у тебя к vim-у есть еще git, tmux, zsh etc. — оказывается, что комплекс этих утилит по удобству перекрывает любую IDE, потому что нельзя написать IDE, которая будет делать все очень хорошо (JetBrains пытаются, да). Но можно написать много утилит, каждая из которых будет делать свою функцию идеально. Если вы программист, пишущий на одном языке и иногда что-то делающий в консоли — мне кажется, вам вполне позволительно обо всех этих утилитах не знать. Но в IT мире полно людей, для которых программирование — побочная деятельность и для них иногда vim удобнее.

А в свободное время я пишу на Java. И как это делать в vim — я не хочу даже знать. Android Studio скрывает все шероховатости, которые мне неинтересно изучать в рамках хобби.
Отлично сказано! Жалко не могу плюсануть. Очень похожее мнение крутилось в голове.
Сам пользуюсь только VIM (в режиме VI, т.е. без плагинов, ну автоподсветка разве..), как для правки конфигов, так и для программирования.
Статье ставлю твердый плюс за адекватность. Каждому свое, в конце концов. Кто-то находит востребованными возможности IDE по работе с обширной базой кода, кого-то прет от возможностей VIM по обработке текста. Лично для меня самый жирный плюс VI это то, что им можно править удаленно текст даже в условиях жуткого интернета, без особых проблем. Ну и доступен везде и всегда (винду не учитываем, не мой профиль).

Эх вот я сейчас огребу…
Господа любители "определенного" продукта. Устройте соревнование по написанию кода и потом его редактирования. Делайте это в онлайн и транслируете на одной площадке, что бы было видно одновременно экраны всех участников. Задание для всех одно и тоже. Язык один и тот же. Все остальное на выбор участника. Вот после такого соревнования и можно будет говорить, за тот или иной инструмент. Или свалить вину за "проигрыш" на конкретного участника.

Я использую режим вима в Емакс. Возможно вверху уже ответили, я довольно бегло пролистал комменты. Отвечу тем не менее на конкретные аргументы статьи:


для того, чтобы сместиться на два-три слова вправо, — переходить в какие-то режимы и обратно, да еще и считать это киллер-фичей вима, — увольте.

Я согласен. Я использую вместо этого C-f и C-b. Совсем не обязательно выходить из режима вставки. Я так работаю даже в оригинальном Vim (который я юзаю для мелких правок, а прямо сейчас для набора этого коммента).


Если вы ненавидите мышь, то для навигации по коду есть свои горячие клавиши: можно без мыши перейти к нужному классу, файлу, методу, номеру строки и т.д.

Это окончание абзаца, где вы удивлялись, зачем строить велосипеды, если в IDE можно так же настроить хоткеи.


Отвечу тем же: для чего мне под каждый язык программирования настраивать новые хоткеи в новой IDE с новым интерфейсом, опасаясь что именно в этой IDE не окажется возможности что-нибудь забайндить — если есть проверенный редактор, где все отлично работает, и мне лишь надо пару плагинов для навигации и автодополнения?


  • Перейти к следующему/предыдущему абзацу


Да, это было бы полезно иметь в IDE. Но в основном при редактировании статей для хабра, а не для кода.

Вообще, когда код не напоминает решето из пустых строк, я довольно неслабо абузю это и в коде. В любом случае, есть еще, например, «перейти к концу/началу текущей функции» (у меня на [m и ]m забайндено соотв.).


  • Перейти до пробела.


Ну, можно считать полезной штукой, но не слишком крутой. Несколько раз нажать ctrl-стрелочка будет иметь тот же эффект.

Уточню: до любого след. или предыдущего символа. Перейти к открывающей скобке, чтобы изменить аргументы; перейти к запятой, чтобы изменить слово перед ней… Вы не представляете, сколько времени суммарно это экономит на работе с кодом.


  • перейти на полстраницы вниз/вверх.


Не знаю, надо ли это мне, пока не решил.
  • Перемещение на первую/последнюю/среднюю строку экрана.


Не знаю, зачем это нужно. Ну то есть, может пригодиться, но не киллер-фича.

Обе вещи полезны при навигации. Например вы переместились к функции, и изучаете что она делает. Одно C-d, и вы чуть сместились. Насчет «первой/последней/средней строки» — я часто для того же юзаю. Например держу курсор в центре, и двигаю экран то к нижней строке, то к верхней… Это немного трудно объяснить, но это не бесполезный хоткей. Кроме того, нередко при редактировании, какой-то код, что надо изменить, оказывается практически в центри, или внизу, или вверху… Скажем так, я могу по статистике работы сказать, что те комбинации не бесполезны.


  • Можно удалить ровно X строк кода.


Каждый день так делаю. Вот ровно 19 строк кода надо удалить порою.

Я рад, что вы тоже нашли Hybrid Line Numbers. Очень полезно.


В целом, то что вы встретили называется Blub Paradox. Я рекомендую попользоваться редактором хотя бы месяц (только нормально, а не «две минуты в нем, три часа в IDE), и вы поймете насколько он все упрощает.

> Вы не представляете, сколько времени суммарно это экономит на работе с кодом.

А, кстати, интересно было бы узнать, сколько? Какую долю вообще в работе программиста составляет именно редактирование кода? Думаю, не ошибусь, если порядка единиц процентов. Соответственно, даже удвоение-утроение скорости работы с кодом не даст общего буста больше, чем 1-2%.

Вы знаете, я даже немного затрудняюсь ответить. Во-первых, даже когда я в режиме исследования незнакомого кода, т.е. сам код не изменяю — я стараюсь делать в отдельном файле пометки о найденных мелочах, странностях, возможном рефакторинге. Во-вторых, это подводит к вопросу о преимуществах Vim при чистой навигации, без редактирования. Здесь надо подумать.


В принципе, если оставить чистую навигацию, предположить что вы вообще не редактируете код — это сразу отбрасывает большинство преимуществ навигации в пределах видимого экрана. И хотя тут Vim тоже крут, но мне кажется большинство этих вещей поддерживаются в IDE тоже. Например я гуглю «перейти к открывающей/закрывающей фигурной/квадратной/круглой скобке» (к примеру посмотреть начало цикла) по IntellijIdea, и я вижу что такой шорткат там имеется. Мне много разных хоткеев идет в голову, но (я правда не проверял) вероятно они есть в той или иной форме и в IntellijIdea.


Я думаю, это сводит все к аргументу, упомянутому мной в пред. комментарии — при использовании Vim вам не нужно под каждый язык программирования искать новую IDE с новым интерфейсом, новыми… э-э-э… особенностями, и перенастраивать шорткаты, опасаясь что именно в этой IDE не окажется чего-то вам важного.

Что круче, палочки или вилка? Вим — это палочки. Миллиарды китайцев закрывают вопрос. Аминь.
Чорт, что за минусы, попробую развернуть.
Что лучше, палочки или вилка? Очевидно, что это вопрос привычки.
Палочки более сложны в освоении и использовании. Если вы умеете пользоваться тем и другим, и у вас по какому-то недоразумению возникли возражения к предыдущему предложению, попробуйте использовать эти приборы противоположной «нетолчковой» рукой. С каким прибором она лучше справится?
Спор в таком ключе, что лучше и при каком применении — бессмыслен. Аналогия про палочки и вилку призвана служить иллюстрацией. Кого на что в детстве учили, тот то постоянно и использует — в массе. Но это не приговор, можно и наоборот поступать, никто не запрещает. Лично я ем палочками на постоянной основе уже несколько лет — оказалось, что мне так гораздо удобнее.
Главное — понять, к чему лично у тебя больше лежит душа. А душа — это уже поближе к религии, аминь.
а вроде ж в семействе IntellijIdea есть режим vim. или это не совсем то?
Мне показалось (NB!) что смысл статьи, на которую вы так нервно отреагировали, не в том, что VIM круче IDE, а в том, что это просто другой подход к управлению. И всё сводится исключительно к вопросу «кто в чём привык работать». Для привыкшего работать в IDE неудобен VIM, и наоборот.

Похоже, перед добавлением статьи в этот блог надо ставить галочку "Я прошёл vimtutor" (привет, ZyXI =)


Но для того, чтобы сместиться на два-три слова вправо, — переходить в какие-то режимы и обратно, да еще и считать это киллер-фичей вима, — увольте.

Для этого не надо выходить из режима вставки. Ctrl-O, 3w, печатаем дальше.


У вима из коробки есть несколько уникальных возможностей редактирования, которых нет в IDE
Перейти к следующему/предыдущему абзацу — Да, это было бы полезно иметь в IDE. Но в основном при редактировании статей для хабра, а не для кода.
Перейти до пробела. — Ну, можно считать полезной штукой, но не слишком крутой. Несколько раз нажать ctrl-стрелочка будет иметь тот же эффект.

Можно и номер телефона вводить вот так, будет тот же эффект, что обычная форма.
image
Серьёзно, это очень круто — редактор делает ровно то, чего я от него хочу. Круче только нейроинтерфейс, наверное.

Позволю себе высказать менее популярное мнение.


Несколько лет тому я пользовался вимом на уровне обывателя — мог задать начальную конфигурацию в .vimrc (не шибко сложную), поправить файл, использовать буферы (на уровне открыть-переключиться-закрыть буфер). Плагины ставить пробовал, но не осилил, равно как и всю мощь навигации.


Во время учебы в университете, преподаватель представила нам-студентам среду Matlab, у которой редактор использует по умолчанию комбинации emacs. Подкрепленный цитатой знаменитого человека (уж не помню, то ли Линуса, то ли Ритчи; цитата точна ровно настолько, насколько крепка моя память) "выучите сочетания клавиш emacs — и вам будет намного проще работать со всей средой linux", я выучил некоторые основные комбинации emacs. Мне понравилось. Я научился несколько интереснее настраивать emacs — разузнал как настроить и использовать плагины, работать с файловым менеджером, узнал о замечательном консольном UI для git, Magit и научился работать в режиме split-screen.


В тот же промежуток времени я сменил место работы. На новом месте мне удалось работать удаленно на серверах (проект был достаточно большой, и поднять его локально за вменяемое время не представлялось возможным). Позже, на все том же месте работы, я пришел в проекте на Clojure, и узнал от товарища по команде что трекболами до сих пор кто-то пользуется и что для Сlojure есть шикарный плагин в IntelliJ Idea (ныне — отдельная IDE, Cursive ). Уже гораздо позже я выяснил, что все киллер-фичи работы с Clojure (а это действительно впечатляющие вещи — разбитие списков, склеивание, перемещение s-exp внутри других s-exp и еще многое другое) пришли как раз из emacs, а точнее — из плагина paredit.


От товарища по команде я узнал самую, наверное, значимую для программиста истину о IntelliJ — она знает контекст. То есть, в зависимости от положения курсора, типа открытого файла (читай: синтаксиса, который файл использует), всего проекта и т. д., IDE имеет разные подсказки в коде, разное форматирование и способы перехода по символам как внутри файла, так и внутри проекта. Таким образом, IDE предлагает в качестве типа новой переменной типы того ЯП/фреймворка/модуля, который в данный момент загружен в редактор кода.


И вот я захотел освоить vim в более расширенном формате. Я узнал о быстром перемещении внутри файла, о разнице между редакторами, которые позволяют сходу писать текст и режимами vim (в основном — почему INSERT mode — не основной режим vim? потому что бóльшую часть времени в vim'е предполагается проводить не создавая новый текст, а модифицируя старый и перемещаясь по нему), как можно делать более интересные вещи (нежели просто писать/удалять текст) командами vim, как комбинировать команды, как работать с макросами.


На нынешнем моем месте работы я познакомился с расширенными возможностями IntelliJ — работа без табов, переходы внутри проекта исключительно с помощью клавиатуры и т.д. Я до сих пор пользуюсь (с равной степенью удобства) трекболом, тачпадом macbook'а и обычной мышью. На предыдущем месте работы у меня была эргономичная клавиатура, сейчас я в поиске еще более изощренной клавиатуры или раскладки клавиатуры.


Испробовав такое количество различных способов работы с текстом и с кодом, я, полагаю, могу сделать некоторые обоснованные выводы. В некоторых случаях я все еще считаю комбинации emacs более удобной альтернативой командам vim. Для работы с clojure я бы все же воспользовался киллер-фичами paredit (продолжение данного тезиса следует). На работе (да и дома тоже) я работаю в IntelliJ или, в случае с JS — в Visual Studio Code (лучше работает с контекстом) либо в Sublime (банально быстрее работает; более шустро запускается и отзывается). Тем не менее, ни vim, ни emacs, ни sublime не стали моим рабочим окружением по умолчанию по одной простой причине — даже будучи обвешанными плагинами, без тонкой настройки они все равно не справляются с главной задачей IDE (по моему скромному мнению) — с подсказками к коду, действиям (привет, Cmd+Shift+a!) и переходу по файлам/символам, как то умеет IntelliJ. Именно по этому я считаю, что до редактор, понимающий контекст и помогающий в этих банальных действиях — и есть настоящая среда разработки.


Разные способы навигации — будь то текст или экран, мышь или трекбол, C-a/C-e или a/e — это все я использую исключительно с целью развития мозга. А на работе нужно быстро писать/читать код, а не выделываться.

Сколько ни пытался перейти с Vim на какую-нибудь из мейнстримных IDE — всегда сталкивался с отсутствием критичного количества фич, связанных именно с редактированием текста, к которым я слишком уж привык.

С другой стороны, некоторых фич IDE мне в Vim тоже не хватает — но, как показала практика, посредственная IDE с отличным текстовым редактором для моей производительности значительно безопаснее, чем отличная IDE с «простым» текстовым редактором. Кроме того, польза от характерных для IDE фич нивелируется практической невозможностью их использования в проектах, написанных не в данной IDE (а я не так уж редко имею дело с opensource-кодом), в то время как элементарная подсветка кода и переход к определению функции в Vim-е работают везде и всегда.

P.S. Убедительная просьба не предлагать Vim-плагины к существующим IDE в комментариях. Помимо того, что они редко работают стабильно, ни в одном из них нет и 1/10 необходимого мне функционала.
Ценность vim в модальном режиме, в котором каждая команда переход-действие обозначается отдельной буквой (отдельной клавишей). Одно действие — одна кнопка. Набор нового текста — скорость как у всех, но вот редактирование текста как игра на пианино. Если привыкнуть, происходит безболезненно и почти со скоростью мысли.

Нужно ли это для всех? Нет. Для всех нужен notepad. Для vim надо владеть слепой печатью и долго тренироваться набивать комбинации. Но вот если научиться, то залипнешь настолько, что во всех системных комбинациях клавиш будут h,j,k,l. В Chrome будет установлен плагин Vimium. А во всех остальных местах будешь набивать ciw, dw, cw, yy, dd, p, , i и не понимать что собственно говоря происходит.

Еще vim быстрый и нетребовательный, очень просто настраивается и работает удаленно, да и еще при использовании вместе с tmux, zsh получается очень сильное кунг-фу.

Я автор статьи, на которую этот пост ссылается в самом начале и которую он вроде бы критикует.


По какой-то непонятной иронии судьбы, вышло так, что статья, написанная специально для того, чтобы повода писать статьи наподобие данной не возникало — привела к появлению именно такой статьи.


Я не понимаю, как могло так получиться и не понимаю, как можно было увидеть в моей статье то, что увидел в ней автор.


Например, автор пишет:


Недавно вышла статья, которую вы наверняка читали, про то, что vim — хорош, а IDE — так себе, скорость набора текста не та.

Но, только в статье не было написано, что вим объективно хорош, там только был раскрыт вопрос, что в нём самое главное.


Да и про то, что IDE — так себе в статье не сказано. Там написано:


IDE настолько облегчает работу программиста, что отказаться от использования интегрированной среды разработки нынче можно только имея очень веские причины.

И уж тем более, я не говорил, что скорость набора текста в IDE не та. Вообще-то в статье открытым текстом написано, что скорость тут вообще не при делах:


Речь не идёт о том, что с использованием режимов всё получается быстрее, чем без них. Речь исключительно о том, что с использованием режимов пользователям вима работать удобнее и приятнее.

Как можно было это не заметить?


После краткого пересказа идей, отсутствующих в моей статье, которые автор, по какй-то причине, счёл её основными мыслями, идёт краткое изложение впечатлений автора от вима, которое практически точно такое же, как то, что описано мной в критикуемой статье.


Вот что написано у меня:


И ещё выяснится, что люди в нём программируют. То есть, натурально, пишут код. То есть, на дворе 21 век, в любой момент можно скачать Visual Studio, Intellij Idea или, прости господи, Eclipse, а они пишут код в виме. Добровольно.

А вот, что у автора:


Вим может быть хорош для новых языков, куда еще не добрались хищные лапки Jetbrains. Под вим проще писать свои плагины (в 99% случаев вам это не надо в нормальной IDE). Возможно, удобно редактировать длинные тексты. Но не для обычного же промышленного программирования!

Так как впечатления автора от вима совпадают с впечатлениями гипотетического программиста в моей статье, получается, что я писал её именно для автора! Именно для того, чтобы донести до него свою точку зрения, которую, увы, не донёс :(.


Далее автор почти цитирует доктора Ватсона с картинки из моей статьи.


Из вима можно сделать подобие IDE, поставив плагины, и выучив для этих плагинов горячие клавиши

Можно. Но зачем это нужно?

Автор информирует нас, что в IDE есть те же фичи, что и в виме, только гораздо удобнее.


На то, что я прямо пишу, что режимы тем, кто пользуется вимом, удобнее, автор не обращает никакого внимания.


Ведь не может же быть так, чтобы что-то, неудобное ему, было удобно кому-то ещё. Так же не бывает :).


Возможно, нужно было назвать статью — Как режимы могут быть киллер фичей вим? Они же мне не нравятся!, это бы многое объяснило.


Серьёзно, автор зачем-то начинает перечислять фичи IDE, хотя я прямо писал, что это не пользователи терпят режимы ради фич вима, а пользователи пилят фичи для вима, чтобы иметь возможность продолжать использовать режимы.


Может бы он просто мне не верит, сложно сказать.


Короче, автор пишет


Я тот еще знаток vim, возможно упустил что-то мегаважное. Поделитесь плиз в коментах.

Да, varanio, вы пропустили мимо бОльшую часть текста статьи, в ответ на которую написали свою :) .


И ещё хотелось бы ответить на вопрос, который автор ставит в названии статьи.


Да! Серьёзно! Режимы — киллер фича вима! Да, вимом пользуются из-за режимов! Да, модальное редактироване для многих очень удобно! Правда! Честно!

Да, вы в чем-то правы.
Похоже, я не очень внимательно прочел статью.
И начал писать ответ про режимы, которые мне не нравятся, а в итоге скатился к сравнению vim и IDE. Получилось, что я выступил, как бессмысленный хейтер. Зря я вообще упоминал вашу статью, надо было просто писать про сравнение vim vs IDE
Извините.

Я бы не сказал, что вы выступаете, как бессмысленный хейтер, по моему мнению сравнивать IDE и вим вполне можно, нужно только огласить признаки, по которым их сравнивают.


Может быть, вышло бы лучше, если бы сначала вы написали свою статью, а потом я свою, но так тоже неплохо получилось — ваше мнение о виме выражено чётко и понятно, что в нём вас не устраивают в первую очередь именно режимы, а это в свою очередь делает вашу статью хорошим дополнением к моей.


Так что не переживайте :)

Что вы такое пишите, что вам нужны эти самые режимы? Программист больше думает, чем пишет, а судя по фотографиям из ВКонтакте, Авито и т.п. люди там пишут не более двух строк в день валяясь в гамаке.

Вот у меня есть блокнот и Word. Обычно я пользуюсь Word'ом, при этом блокнот безусловно крут. Я им пользуюсь тоже. Но вообще я пользуюсь Word'ом.

Страсть к vim при этом вообще не обоснована и похожа на манию. Что с режимами, что без. Как будто вы любите тонировать и присаживать девятки, хотя уже 2017 за окном. Ау!
Что вы такое пишите, что вам нужны эти самые режимы?

Я ещё раз проартикулирую. Использовать режимы при редактировании текста мне удобно и приятно. Что в случае написания одного предложения, что в случае написания одного приложения :).


У меня создаётся впечатление, что вы думаете о режимах, как о чём-то сложном в использовании. Как о чём-то чего пользователи вима избегали бы, если бы перед ними не стояло задач, которые решаются только режимами. Но с моей точки зрения всё скорее наоборот — нужно найти такой текст, при создании которого режимы не нужны и мешают и точечно от них отказываться.


Страсть к vim при этом вообще не обоснована и похожа на манию. Что с режимами, что без.

Если убрать из вима режимы — вим перестанет быть. И страсть к нему будет похожа на манию примерно в той же мере, в которой на манию похожа страсть к саблайму или notepad++.


С режимами страсть к виму более обоснована — всё таки их до недавних пор больше нигде не было. Если ты любишь штуку, которая выделяется уникальной фичей — возможно дело не в штуке, а в фиче :).

Все-таки интересно, потому что моё знакомство с вимом началось из любопытства — типа, почему бы не попробовать в нем поработать, раз уж его любят многие мои современники и не променяют на современные IDE.

А теперь мне проще повысить свой скилл слепой печати и круто переделать раскладку клавиатуры, чем переехать на другую IDE с Vim.
Для меня vim остается любимым консольным редактором. Если надо что-то подправить через ssh или коммит написать. Странно, конечно, сравнивать его с IDE. Я считаю что, каждому, кто имеет дело с терминалом Linux, полезно знать, хотя бы, пару основных команд.
UFO just landed and posted this here
практически любой редактор умеет делать замену регулярками
Те кто знает, что это за действие — скорее всего используют не IDE, а VIM… Уж будьте добры — опишите что это на русском, или хотя бы схематично — тогда будет кому проверить)
UFO just landed and posted this here
удаление строк содержащих заданный шаблон
должно вполне себе решиться слегка изменённой регуляркой…
Честно говоря, при работе с кодом, мне ни разу не приходилось удалять какие-то строки или символы по шаблону. Куда более частый и используемый мной вариант — удалить использование той или иной переменной, или же удалить параметр из функции, с удалением его и во всех тех местах, где он используется…
Сортировать строки кода по какому-то принципу тоже не приходилось — сомневаюсь, что в этом случае код останется сколько-нибудь осмысленным, разве что только отсортировать порядок аргументов в конструкторе и в коде, копирующем аргументы в поля класса, но и в этом случае порядок не зависит от самой строки — он зависит от самой семантики параметров.
Не очень хочу развивать соревнование вида «придумай команду с которой не справится %program_name%», так как заранее знаю ответы — сложная работа с кодом, включающая его синтаксический разбор — не для редакторов текста, как и сложное редактирование произвольного текста зачастую не для IDE, ибо каждый из них отвечает за свои задачи…
UFO just landed and posted this here

Удалять строки по шаблону нередко приходилось при отладке. Например, очень изощрялся при разборе, почему изменение в GLSL компиляторе привело к поломке интерполяции под моей видеокартой (r600g драйвер). Мне приходилось сравнивать ассемблерный вывод до- и после-, и всячески его модифицировать, ибо разные оффсеты и адреса не совпадали, и GVimDiff показывал все в красном, тогда как настоящих изменений там было немного, хотя и были раскиданы по вертексному и пиксельному шейдеру. Это далеко не единственный пример, просто последнее что я помню.

удаление строк содержащих заданный шаблон

В Vim для этого проще всего воспользоваться g/pattern/d либо для удаления строк не подходяших под шаблон моджно v/pattern/d. Лично я польуюсь последним когда мне нужно отфильтровать логи по какому-то логическому принципу, например, оставить только полученные команды и переходы состояний.


Но, вместо d что является командой к удалению, можно использовать другие команды, например связав с заменой по регулярному выражению g/pattern/s/some_other_pattern/replacement/.


Мне это кажется удобным.


Стоит отметить, что это фичи текстового редактора, которые я считаю удобными.

Если # просто замена /, то %s#^/\.*\s##g — удаляет последовательность точек, а то что вы написали — удаляет последовательность любых символов до последнего пробела.

Не люблю споры насчет вкусовщины, тем более в этой вкусовщине кого-то убеждать.
Скажу чисто мои ощущения. Я люблю vim, а точнее этот самый «киллерфичер» aka режимы.
На самом деле сам Vim у меня хоть и настроен, но довольно слабо.
Зато и в IDE, и эдиторе я пользуюсь Vim-раскладкой (благо она почти везде сейчас есть). Ибо удобно. Лично мне. У меня одна из клавиатур еще без «стрелочек». Так на ней еще удобней получается.
Насчет сложностей запоминания и изучения комбинаций: не так уж и сложно. Я не считаю себя супер про вимером — множество команд не знаю, множество не помню, но те что нужны вполне органично (чуть ли ни на рефлексах) исполняются мной. И я не учил прям Vim, в какой-то момент решил попробовать, начиная с hjkl, i, a, esc, :q. Буквально за полмесяца уже мог спокойно многое делать.

Я понимаю людей, которые не хотят прикасаться к Vim — это нормально. И в том, что люди пользуются Vim-ом и при этом им реально удобнее так, работают продуктивнее и т.п., а не понтов ради — в этом тоже ничего ненормального нет.
Ну кстати, у меня гораздо бОльшая аллергия к людям, которые говорят что те кто не на Vim — нихера не понимают, чем те, которые говорят что Vim-еры — понторезы.
Мне просто скучно набирать/править текст не в Vim-е — тупо надр*чивать стрелки, шифты и проч.
Куда интереснее подумать «а давай-ка изменим текст в скобках „()“» и набрать «ci(»
Напомню: главный посыл той статьи был в том, что главная киллер-фича вима — это режимы, благодаря которой всё остальное не важно.


Вовсе нет. Автор той статьи указывал на то, что спор VIM — НЕ-VIM ведётся на самом деле по поводу режимов. Если вы за него, то вы за режимы в первую очередь. Если вы против него, то вы против режимов в первую очередь.
UFO just landed and posted this here
Многие отписавшиеся просто никогда не пользовались этим редактором, потому они и проецируют свой опыт на него, а их опыт: мы всегда в режиме вставки, а для перемещения курсора нужно перейти в какой то другой, непонятный режим.
Да. Короткая сессия набора текста между i и esc. В этом плане автодополнение — это круто, но как бы и мешает. Мне лично для автодополнения пришлось перебиндить клавиши чтобы осуществлять выбор из вариантов не уходя далеко из домашнего ряда клавиш.

Мда,Notepad++/Akelpad летят в трубу
С появлением Atom/VSCode не вижу смысла в Vim, если не нравится огромная IDE.
Честно, наилучшее ощущение было от nano, потому что интуитивно понятен.

С появлением Atom/VSCode не вижу смысла в Vim, если не нравится огромная IDE.

Если вы не видите смысла в vim после появления Atom/VSCode, то вы его и до этого скорее всего не видели. ИМХО Atom претендует на нишу emacs, а не vim.

UFO just landed and posted this here
Интересно, как все спорят из-за мнимой скорости набора кода. Хотя в реальности программист тратит гораздо больше половины своего времени не на набор текста, а на другие задачи.
Серьезно!
Дело в том, что это начинает хорошо работать вместе со всеми остальными фишками вима.
А навигация и редактирование текста в коммандном режиме без использования лишних контролов и альтов (которые в маках, к слову расположены так неудобно, что чтобы добрать ся до сочетания надо менять положение руки).

Вим-плагины иногда спасают на IDE типа VS Code, IDEA, но привычки по использованию в редких случаях таких приятных вещей, как быстрая смена регистра по shift+~, инкримент-декримент чисел в командном режиме, навигация по всем видам скобок в режиме выбора (shift-V, $, %), да и просто навигация по home-row, сводят на нет полезность IDE.

Но мой ответ — это не вербовка в секту вима великого — это просто объяснение, почему у меня лично не получается переехать на «нормальную» IDE.
Вим-плагины иногда спасают на IDE типа VS Code, IDEA, но привычки по использованию в редких случаях таких приятных вещей, как быстрая смена регистра по shift+~, инкримент-декримент чисел в командном режиме, навигация по всем видам скобок в режиме выбора (shift-V, $, %), да и просто навигация по home-row, сводят на нет полезность IDE.

Что из этого не работает в IdeaVim, vscodevim, и заставляет полезность стемится к нулю?
В идее я очень давно не работал — но там не работали какие-то специфичные плагины, к которым я привык и к флоу с которыми мне было удобно. Мне было гораздо проще поработать в виме чем в идее с плагином. А крайний раз я попытался VSCode с плагином — там не работает выделение от скобки к скобке. И плохо работали не ts-плагины языков.
Я как-то обнаружил, что положительное отношение к vi и его вариантам довольно надежно антикоррелирует с умением играть на фортепьяно. :) Понятно, что выборка данных небольшая, но эффект хорошо заметен и, пожалуй, даже легко объясним.

Почти все характерные именно для vi преимущества сводятся к возможности не переносить руки с центральной части клавиатуры куда-нибудь еще. Однако люди с навыками пианиста без проблем нажимают ctrl, alt или shift, например, мизинцами, им технически проще и быстрее нажать одновременно несколько клавиш на расстоянии, чем близкие клавиши последовательно, в результате киллер-фича vi оказывается ненужной.
Пользуюсь Vim около 7 лет. Основной фичей, которой мне не хватает в IdeaVim, является плагин vim-easymotion. Вместе с ним перемещение по файлу ощущается очень естественным и позволяет удерживать фокус на процессе редактирования. По этому поводу создал issue, за которую даже начали голосовать.

Также придерживаюсь подхода DevOps и мечтаю, когда IDE сформируют общие спецификации/протоколы, станут модульными (здравствуй, langserver) и клиентсерверными. Тогда серверную часть возможно будет запускать в целевом окружении на удаленном сервере, а клиентскую — на рабочей станции с любимой ОС.

А пока живу со своим велосипедом из Ansible+Vim+Tmux.
Можно выделить текст, нажимая несколько раз ctrl-W

А Alt+F4 выделяет сразу весь текст функции/класса.

UFO just landed and posted this here
Sign up to leave a comment.

Articles