Pull to refresh

Comments 94

В итоге практически на каждый чих–пых ищи плагин.
Спасибо, не надо.

Vim – хороший редактор, не превращать его в IDE – перебор.
Модульность и юникс-вей — разве плохо? VimScript и правда не очень, но можно использовать и другие скриптовые языки для плагинов (Python, Lua, Ruby).
Это очень даже хорошо.
Только, ИМХО, vim – не самый лучший выбор для программиста.
Цель статьи – показать абсурдность использования vim как редактора под что-то серьезное. Для правки скриптиков на удаленной машине это хороший инструмент, но как редактор для программиста является сомнительным удовольствием. Можно заметить, что все пункты кроме первого скорее делают антирекламу редактору, чем побуждают к его использованию.
Цель статьи – показать абсурдность использования vim как редактора под что-то серьезное.
У вас не получилось.
Аналогично у меня — не понял сарказма ни разу.
спасибо за обратную связь, добавил небольшой комментарий к посту
И лучше переместите его в начало поста.
Я и не понял, что это статья — сарказм. За 10 лет пользования VIM я не заметил особых проблем…
За 10 лет
Собственно, ИМХО, поэтому и не заметили. Попробуйте какой-нибудь современный редактор или IDE…
Пробовал. VisualStudio, Builder, Eclipse, IDEA, Comodo и много других по-меньше. Доктор, что со мной?
Vi стоит знать хотя бы потому что он есть везде, начиная от старинных солярок и заканчивая современными мейнфреймами.
Не аргумент. Много где стоят и другие текстовые редакторы. В большинстве современных дистрибутивов Linux идет почему-то не vim, а nano.
>В большинстве современных дистрибутивов Linux идет почему-то не vim, а nano.

СТРОНА ДИГРОДИРУЕТ
согласен, нано на мой взгляд куда удобнее и более нативен, но опять же это исключительно мое личное мнение.
Нажал Ins в Vim — вот тебе и nano…
Правда надо еще научится сохраняться и выходить…
Хотя в nano тоже надо запоминать, что Ctrl+O — сохранить, а Ctrl+X — выйти…
Ссылка на скрин ниже, скажите где там надо запоминать про выход и сохранение? Снизу есть все подписи, а при выходе, если были изменения, то сам спросит сохранить или нет.

joxi.ru/-YODUxjKTJA2H40mNQg
сам пользовался nano, пока, к своему сожалению, не обнаружил, что у него вообще нет операции undo…
Alt+U — undo. Правда, для этого нужно nano запустить с ключиком -u.
Вы што, это же экспериментальная фича! уже 15 лет как
Vi есть везде, vim надо ставить отдельно
Vi, который не Vim, а именно Vi, это боль. К нему надо привыкать дополнительно.
set noerrorbells оставляет только одни режим
> VimScript — замечательный язык. Определенно стоит потратить выходные на его изучение, ведь новый язык всегда так весело!

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

То есть фразы
…и набрать G55 для перемещения на строку 55, ведь на ней начинается объявление интересующей функции…
…виммер всегда держит весь словарь в голове…
вас не смутили?
ну я заметил, что тут весь текст не ладен, но решил не уточнять про всю статью :)
Признайтесь честно, вы просто не знаете как из него выйти?
А нет, судя по последней строке в посте — знаете. Теперь вы из него вышли и начинаете полноценную жизнь с полноценной IDE. Поздравляю.
IDE немного подтормаживает? Ничего, просто купишь новый компьютер и все будет нормально! Что, что? Через год выйдет новая еще более крутая версия IDE, что тогда делать? Купишь новый, все так делают.
Не используешь 95% возможностей программы, потому что они нафиг не нужны, а панельки и менюшки с ними занимают значительную часть экрана и никуда не деваются? Ничего, со временем привыкнешь.
Какая-то «ох!@#ь какая классная и удобная фича» просто не отключается и ты видишь слово «бобер» вместо нужной строчки кода, потому что IDE знает что тебе нужно гораздо лучше тебя? Так она и правда знает лучше, просто расслабься и получай удовольствие
И запомни, никогда не выбирай альтернатив вроде MacVim или GVim, только супер крутые IDE, только хардкор!!!
Скажите, а если Vim раскрутить плагинами до уровня полноценной IDE — тормозить не будет? Вот список того, что мне хочется для комфортной работы:

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

И да, где достать все эти плагины? Мне платят за код, а не за написание плагинов к Vim.

И еще интересный вопрос: как человек, неспособный найти кнопку закрытия занимающей место на экране панельки, будет разбираться с Vim? :)
быстрое переключение между файлами
навигация
автокомплит (а ещё у vim есть autocomplete по имени файла — тоже удобно)
автоотступы
— не изучал вопрос (не использовал)
— вроде как умеет из коробки (не использовал, в IDE тоже не юзаю)
— не изучал вопрос (не использую и в IDE)
более того, есть вполне годные готовые сборки типа subvim =)
Спасибо, может когда-нибудь пригодиться.
> автоматическое форматирование кода;
ggVG=
Вообще‐то, скорее gq, а не = (последнее должно ограничиваться изменением отступов, от второго можно ожидать и более радикальных изменений вроде добавления египетских скобок). Только надо настроить formatprg или formatexpr.

Замечу, что ограничения не высечены в камне: никто не мешает вам сделать set equalprg=echo\ Foo и наслаждаться заменой всех выравниваемых строк на «Foo» (хотя с intentexpr такое не выйдет). Или просто привязать = к чему‐то ещё. Но от = ожидается только изменение отступов и ничего больше.
Используешь для работы компьютер, найденный на помойке?
Не используешь 95% возможностей программы, потому что лень разбираться, для чего они нужны?
Не можешь отключить какую-то «ох!@#ь, потому что не осилил настройку IDE?
Испытываешь комплексы, когда статический анализ пытается исправить твой говнокод?
Тогда да, только хардкор…
Не в качестве повода для флейма (я не программист, а сисадмин и vim мне ближе, чем gui ide).

3. Множественная замена (несколько курсоров)

Я, наверное, не совсем понял, что под этим подразумевается, но vim из коробки умеет множественную замену (с подтверждением и без, по всему файлу или только в одной строке или определённой области).

10. Быстрое открытие нужного файла в проекте

vim из коробки умеет автодополнение путей (и не только путей). Смотрите опции wildchar (для переопределения, если TAB чем-то не устраивает) и wildmenu (для наглядности автодополнения).
Несколько курсоров, это когда можно установить каретку курсора сразу в нескольких местах и все сигналы ввода с клавиатуры будут одновременно применяться для каждого курсора (очень хороший пример есть на главной странице редактора sublime text).

Про быстрое открытие нужного файла: представьте, у вас открыт файл app/controllers/apps_controller.rb, затем вам нужно подправить что-то в app/models/app.rb. Вместо того, чтобы набирать путь по два символа и затем нажимать Tab для дополнения — вы нажимаете комбинацию клавиш и в появившемся окошке начинаете вводить app… и программа динамически показывает файлы, в пути которых содержится app. Т. е. вы просто начинаете вводить имя файла который хотите открыть, а вам сразу показывается список файлов с таким именем и папкой, в которой он находится.
Да ладно название файла, а если Класс нужно быстро открыть или отобразить список классов реализующих интерфейс.
Кстати, как часто вы пользуетесь многокурсорностью? И если часто, вас не смущает, что у вас много повторяющихся кусков кода?
А у вас нет? На странном языке вы, должно быть, пишете. Многокурсорность в Sublime по‐моему применяется тогда же, когда <C-v> в Vim (если после <C-v> вы использовали c или I): для добавления различного стандартного текста (вроде разделительной запятой) в множество мест сразу. Просто многокурсорность гибче. Вас же не смущает огромное количество повторяющихся разделителей, символов присваивания и т.д., с окружающими их пробелами?
Я не пользуюсь вимом.
Для меня эти действия равнозначны:

Сначала протыкать мышкой в нескольких местах, потом нажать запятую и пробел
и
Протыкать мышкой, и после каждого тычка нажать shift+insert

Ну и control+r никто не отменял для остальных действий. Поэтому мне действительно непонятны такие восторженные возгласы о многокурсорности. Да, полезная штука, но не киллер фича
Сначала протыкать мышкой в нескольких местах, потом нажать запятую и пробел

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

При знании Vim вам без разницы, редактировать таким способом выровненный список на 5 или 500 позиций (но только выровненный; курсоры, судя по всему, этим не ограничены, но сказать, насколько удобно создавать эти курсоры при невыровненном списке я не могу). Попробуйте протыкать список на 500 позиций — скорее всего, вам придётся использовать поиск и замену.
в Sublime тоже не используют мышку для множественных курсоров

Не скажу за всех пользователей ST, но лично я иногда использую для этого мышь. Для множественных курсоров с помощью мыши в Sublime Text — клики с зажатым Ctrl в нужных местах. Двойной клик с контролом, при этом, выделяет слово. Тоже мультикурсорно.
Я читал Вашу статью с увлечением, дошел до пункта про несколько курсоров, сказал WOW!, я много слышал об этом и хочу такое. Загуглил vim multicursor и получил требуемое счастье. Хоть статья и саркастическая, но для меня оказалась полезная.
Подскажите, как/где вы смотрите дельту изменений в системе контроля версий?
К сожалению, пока еще не встречал такого GUI для git, который был бы удобнее для меня, чем работа с консолью.
SourceTree неплохой, но под Linux его нет…
Если сравнивать cli и gui от GitHub, то последний значительно удобней использовать, но редкие действия приходится делать в консоли (например: объединение коммитов, перезапись истории и т.д.) Гуем от гитхаба хорошо заменяются рутинные действия, например просмотр изменений перед коммитом, выбор отдельных файлов для отправки в репозиторий или даже можно одним кликом мыши пометить конкретные строки, которые войдут в коммит. Доступен только под мак и виду.
редкие действия приходится делать в консоли (например: объединение коммитов, перезапись истории и т.д


Я бы рассматривал GUI от Github, если бы он:

1. Умел работать не только с Github
2. Был доступен под Linux
GUI от Github умеет работать с любым git репозиторием
UFO just landed and posted this here
Могу рекомендовать Araxis Merge, замечательная программа для сравнения двух и более файлов(не только текстовых), но она поддерживает только Win и Mac
Так для merge есть супер-пупер утилита Meld.
Дельта хорошая в JetBrains идейешках и новом интерфейсе Битбакета. Может, еще в куче мест и клиентов такая же или даже лучше, просто это те, про которые я знаю.
Автор, да вы извращенец! Если вы такой гений, то почему вы тогда байты в памяти вручную не правите? Зачем вам vim?

Виммеру чуждый эти излишества

Вы это через «Промт» переводили?
Пользуюсь vim c 2006 года, но не потому что считаю, что он «лучше» какого-либо другого редактора или IDE. Просто мне нравится — я пользуюсь. Статьи подобного рода вызывают недоумение. Мне вот, например, глубоко фиолетово в чём автор статьи и тысячи других программистов пишут код — будь то notepad.exe или sublime — какая мне разница? Как говорится, каждый дрочит, как он хочет.
Автору, вероятно, навязали мнение, что для всего нужно использовать vim, и никак иначе. А он пытается донести до нас свою фрустрацию, но не в очень понятном виде (судя по комментариям). Что-то вроде этого:
Скрытый текст
В общем, стандартное hatters gonna hate.
Вредно писать ночью. Опечатку я заметил довольно быстро, но позже отведенных трех минут.
Сильно напрягает избыточность режимов. Если с режимом «команда/вставка» ещё можно смириться и даже понять его некоторую полезность, то остаётся непонятным, зачем нужен отдельный режим выделения, почему нельзя просто выделить текст, зажав Shift/Shift+Ctrl и передвигая курсор в режиме вставки? Зачем так усложнять то, что можно сделать просто? Многие горячие клавиши не поддаются никакому логическому уразумению. Откуда взялось gg — в начало файла, а Shift-g — в конец? И там ещё много всего такого. К этому можно добавить, что из коробки редактор очень не оптимально настроен, многие его возможности просто не раскрыты, поэтому большинство из тех, кто осилил найти выход и остался, пилят свои конфиги и плагины годами, радуясь, что теперь их можно выкладывать на Гитхаб, и они никуда не потеряются.
> почему нельзя просто выделить текст, зажав Shift/Shift+Ctrl и передвигая курсор в режиме вставки

Можно!
На самом деле всё совсем не так плохо. Я думаю это индивидуально, но мне команды вима намного лечгче запоминаются чем хоткеи. К тому же они друг с другом отлично комбинируются, например:
d — удалить
iw — слово под курсором
diw — удалит слово под курсором

Теперь — v — выделить, y — копировать. Угадаете, как выделить или копировать слово под курсором? :) Дальше — можно w заменить на (, ", {, [, <.
Смотрите, по сути вы только что узнали (хотя скорее всего вы и раньше это знали) 3 команды. Но комбинируя их вы можете выполнять множество различных операций над текстом (18, если посчитать все комбинации которые я упомянул в этом комментарии).
Да, я знаю про все эти команды, но мне такое управление редактором кажется не удобным. Я использую vim там где нет gui, но за всё время так и не смог к нему привыкнуть. Для выделения слова под курсором и далее комбинация Ctrl+D как в SublimeText мне кажется более удобной.
Весь пост наполнен стебом и сарказмом над vim, или мне показалось? А то так не долго и до
12. Для выхода из vim не обязательно вызывать killall vim, достаточно использовать плагин vim-real-exit.

Пост начинался как что-то серьезное, а по факту у меня сложилось впечатление о наборе стебных подколов в сторону vim.
У меня такое впечатление сложилось со второго пункта. Кстати, в конце статьи автор признается, что оно так и есть…
Это p.s. появилось в статье уже после моего комментария.
Да, раньше я тоже использовал IDE — и там действительно есть куча полезных фишек, упрощающих жизнь. И это все безмерно радует пока не начнешь натыкаться на небольшие баги — например, тесты помечаются как зафэйленные, если длятся более 30 секунд; иногда фризится ГУЙ (при открытии определенных файлов). Баги мелкие (поэтому первый, например, разработчики фиксили 2!!! года), но неприятные (особенно, когда есть Мысль). Именно это побудило перейти на саблайм. По п.9 — у IDE раньше тоже бэкапил файл настроек, чтобы в случае чего не настраивать все заново.
P.S. приглядываюсь к емаксу, Elisp шикарен.
Ниасилили?

IDE, который знает о проекте больше вас

У меня для вас плохие новости…
Когда в проекте >100к sloc, и над проектом работает более чем один человек — сложновато знать весь проект целиком, и в этом IDE очень сильно помогает.
толсто же. Вы высказали сугубо личное мнение, причем очень однобокое. На мой скромный взгляд, для статей на хабре стоит быть более объективным =)

2. Скролить можно и мышкой и чем хотите. И да, может я уже постепенно превращаюсь в заросшего мхом линуксоида, но мне кажется, что плавный скролинг — это вопрос второстепенной важности =)
По поводу еще ряда пунктов, где вы аппелируете к необходимости скачать плагин — замечу, что, опять же, с моей скромной точки зрения, никакое IDE не должно быть всем и сразу. Оно должно предоставлять минимальное ядро+обвязку из плагинов. Собственно, поэтому вим так и популярен до сих пор, потому что для него существует громадная обвязка из плагинов на все случаи жизни. И это очень и очень дискуссионный вопрос, что проще — скачать нужный плагин или ковыряться в бесконечных настройках в поисках галочки, которая отключает ненужную лично мне свистоперделку.

PS к адептам vim себя не отношу.
Единственное, чем мне действительно не нравится vim – необходимость заучивать кучу комманд и шоткатов, 99% из которых абсолютно неочевидны.

Как пример обратного подхода – Sublime Text, где почти на любой случай жизни есть нечёткий поиск (и для комманд, и для файлов проекта, и для поиска функций в файле и т.д.) _И_ куча шоткатов. Чем удобно – тем и пользуешься.
Как показал мой опыт учить команды пришлось только поначалу и мне потребовалось выучить их не так уж и много для начала.
А потом я просто использовал VIM (первые две недели в принудительном порядке только в нём, чтобы не сорваться) и команды ушли в мышечную память.
Я использую далеко не все его возможности, но даже этого мне не хватает в других редакторах, ощущаешь себя как в кандалах.
Для меня совсем не смешно, т.к. на текущем месте работы есть требование использовать только и исключительно vim (gvim) для кодинга. И все подобные пункты из статьи (и ещё куча других аналогичных) всерьёз приводятся как достоинства… Приходится держать окошки gvim открытыми, а кодить втихую в нормальном редакторе.
Это печально, когда кто-то навязывает свое мнение, особенно если это ничем не обосновано (например вим можно шарить между разработчиками через tmux если они работают удаленно и по каким-то причинам не хватает демонстрации эрана в скайпе или любой другой программе).
А что за компашка? Они делают мир лучше, просто не все это понимают.
Они фильтр высококачественных нердов.

1. Человек с удовольствием работающий в VIM будет так же с удовольствием работать и в любой другой теме, так как это люди, которые получают удовольствие от процесса программирования.

2. Человек с удовольствием работающий в VIM так же будет с удовольствием познавать все новое. Так как нельзя просто взять и начать программировать в VIM, потому что он из коробки просто никакой и чтобы на нем эффективно работать его надо очень сильно запилить напильником. Вот не существует 2х одинаково настроенных VIM.

3. Человек умело работающий в VIM однозначно умело работает и в консоли и может на коленке слабать скрипт на баше. А это очень полезный навык.

4. Человек умело работающий в VIM имеет черный пояс в регэкспах ибо нафиг тогда ему еще VIM сдался.

5. Человек умело работающий в VIM может на удаленном сервере только с помощью консоли поднять любую софтину, будь то что-то опенсорсное или самописное. При этом если оно еще и не компилируется, то у него будет возможность прямо на месте запинать это, пропатчить или подставить костыль. Тоже полезный навык.

ЗЫ: Я вовсе не хочу сказать, что человек не любящий VIM не сможет всего этого. Я просто говорю, что любовь к VIM это достаточное условие всех этих навыков, но не необходимое. Встречу человека, который лабает в VIM, сразу возьму к нам в команду.
Осталось выяснить, что будет с человеком, который без удовольствия работает в Vim, ибо его заставили…
Удивительно, что на очевидно стёбный текст сразу сбежались пользователи vim и начали на полном серьёзе доказывать автору, что он не прав.
Было бы более удивительно, если бы при публикации в хабе Vim этого не произошло. То, что текст стёбный, не означает, что автор прав. Также сложно несерьёзно доказывать неправоту (сложно — но можно, просто не у всех хватит литературных способностей).
1) Да, редактор готов на любой машине. А при наличии интернета, ваша привычная IDE готова за пару минут
2) Пользователям VIM НЕ надо знать, что через 42 строчки находится нужный им код. Просто потому, что они найдут искомое место нажатием /<что-то-похожее>. И да, они сразу попадут на нужное место без скроллинга мышью
3) У пользователей VIM не возникает проблем с множественным курсором, как и не возникает поблем с ошибками компиляции в следствие одного и того же кода в нескольких местах
4) Vimscript — легкий и интересный язык, конечно же пользователи могут потратить выходные на его изучение. Но они лучше потратят их на внедрение нового функционала в целевой продукт. А для того, чтобы сделать это быстрее, черкнут пару строк в конфиге их любимого редактора на python/perl/lua
5) Пользователь Vim нажмет Cntrl-N и получит список возможных дополнений. В это же время пользователь умной IDE будет искать нужный метод в длинном списке возможных вариантов.
6) Пользователь Vim четко знает, в каком месте и какой версии используемые библиотеки. Используя go-to-defenition он быстро перепрыгнет к нужному месту
7) Пока пользователь IDE найдет и запустит свой любимый difftool, пользователь vim запустит vimdiff с нужными ключами и помержит нужные изменения.
8) Пользователь vim воспользуется go-to-defenition и перепрыгнет к определению метода, не дожидаясь индексации проекта. И да, опять никакой прокрутки.
9) В случае поломки жесткого диска ваша привычная IDE будет уже у вас быстрее исходников
10) Пользователям Vim не нужны дополнительные окошки, чтобы открыть файл.
11) Vim отличный редактор кода, но если вам лень разбираться в проекте — запустите IDE и заварите чая)

P.S. цель коммента — показать, что не стоит смеяться над инструментом, не зная как им пользоваться.
Смотрю, статья о vim, а карма минусовая. Думая как так? И только начав читать понял, что вместо того, чтобы поцеловать священную корову под хвост, вы ее пнули.
Sign up to leave a comment.

Articles