Как стать автором
Обновить

Комментарии 769

Статья очень понравилась, узнал много нового для себя и полюбил vi еще сильнее.
Для всех сторонников vim рекомендую книгу Drew Neil Practical Vim. В книге собраны советы, позволяющие ускорить редактирование в vim.

Отличная книга, прочитал за две недели отпуска и остался крайне доволен информацией оттуда.

Действительно, некоторые примеры в статье — просто шикарны. Но если бы автор не писал так неуважительно в сторону IDE, статья была бы лучше. Сравнивать IDE и Vi некорректно.
Очень хорошая переводить спасибо
Во вселенной, где не изобрели мышь, vi, конечно, рулит.
А вы часто используете мышь в текстовом редакторе? Для чего?
(нет, не сарказм — я использую лишь изредка трекбол, поэтому мне очень интересно)
Для моментального позиционирования текстового курсора в нужное место.
Я бы не назвал необходимость переносить руки из привычного для слепой печати положения на мышку и потом возвращать назад «моментальным позиционированием». Лично мне это всегда доставляет жуткий дискомфорт и очень сильно выбивает из потока.
А если у меня привычное положение — одна рука на клаве, вторая на мышке?
Если вы печатаете одной рукой, то да.
Тогда вы либо не используете «слепой десятипальцевый», либо занимаетесь не написанием текстов, а чем то еще.
Либо у него три руки.
ну так программирование, администрирование, веб-браузинг != написание текстов
Что есть по вашему «программирование»?
для начала, изучение предметной области и того, как сейчас решается задача, которую нужно автоматизировать

затем рисование схем, всё более детальных, как это работает и как должно рабоать

потом автоматическая кодогенерация по этим схемам, а также разработка UI

и потом наконец ручные правки, отладка
Ручные правки должны выполняться одной рукой?
Могут выполняться одной рукой. Часто они эффективно выполняются мышкой (например, в IDE прокрутить колёсиком среди методов и выбрать другой).

А почему вы игнорируете комментарий об исследованиях Apple на тему «клавиатура или мышка быстрее»?
например, в IDE прокрутить колёсиком среди методов и выбрать другой

Не скачите с темы на тему.

Я задал конкретный вопрос: ручные правки должны выполняться одной рукой? Вы мне отвечаете что это возможно. Вы правите текст одной рукой?

А почему вы игнорируете комментарий об исследованиях Apple на тему

Потому что много лет назад я работал с исходным кодом аналогично, с помощью мыши и клавиатуры. Как только я отказался от этого подхода в пользу одной лишь клавиатуры, ощутил две важные вещи:
1. Я перестал отвлекаться на аппаратную модальность
2. Я подобрал для набор часто используемых команд, которые ранее выполнял с помощью мыши

We’ve done a cool $50 million of R & D on the Apple Human Interface. We discovered, among other things, two pertinent facts:

* Test subjects consistently report that keyboarding is faster than mousing.
* The stopwatch consistently proves mousing is faster than keyboarding.

This contradiction between user-experience and reality apparently forms the basis for many user/developers’ belief that the keyboard is faster.

Это по вашему называется исследованием? Вынужден вас огорчить, исследование, это когда приводятся предусловия, описывается процесс тестирования, озвучивается статистика, делается вывод. Здесь я вижу только: «мы там у себя протестировали и вот что решили...» — слишком уж похоже на старый добрый подход маркетологов. Не убедительно.
Ваши «а я попробовал и у меня получилось так» ещё менее убедительны. Тут хоть какие-то исследования, претендующие на объективность, которые кстати покрывают и ваш случай — сами субъекты уверены, что стали быстрее, хотя сторонний наблюдатель регистрирует, что это не так.

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

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

Ну и сколько я за вимерами не наблюдал, все они в реальности выполняют комплексную зачачу не быстрее меня. Было несколько бывших коллег, которые упорно пытались cd/ls/vim, а я в то же время бегал по директориям в mc и нажимал F4 для редактирования — и был впереди. Все они, как и вы, утверждали, что я ничего не понимаю, и должен, чтобы стать эффективнее, меньше отрывать руки от десятипальцевой клавиатуры и изучить vim.
Ваши «а я попробовал и у меня получилось так» ещё менее убедительны

Поэтому я и не привожу статистики, вы меня вынуждаете своими маркетинговыми статьями.
Тут хоть какие-то исследования, претендующие на объективность

Нету там никаких исследований, претендующих на объективность. Я могу выплюнуть в интернет аналогичное «исследование», это не сделает его объективным.
сами субъекты уверены, что стали быстрее, хотя сторонний наблюдатель регистрирует, что это не так

А кто эти субъекты? Программисты, дизайнеры, бухгалтера? Кого исследовали?
Аппл утверждает, что вам это только кажется

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

Я и не говорил, что стал работать быстрее.
Было несколько бывших коллег, которые упорно пытались cd/ls/vim

Предложите им воспользоваться mc или nerdtree, а не заниматься ерундой.
>Я могу выплюнуть в интернет аналогичное «исследование», это не сделает его объективным.

А вы точно многомиллиардная корпорация с высоким уровнем доверия людей?
А вы точно многомиллиардная корпорация с высоким уровнем доверия людей?

По вашему мнению любое слово многомиллиардной корпорации с высоким (спорное утверждение) уровнем доверия людей должно восприниматься догматически? Бедный хабр… (
Да к этом огрызку нет доверия, как него его и к апплу в целом. Было бы это статьёй в реферируемом журнале — я бы даже слушать никого не стал. Но к личным ощущениям анонима, пишущему писюльки на хабр, доверия ещё меньше.
Если нет особых альтернатив, то почему бы и нет?
Даже если бы были — доверие мнению, отличному от вашего, пороком не является. Так что не такой уж хабр и бедный
Если нет особых альтернатив, то почему бы и нет?

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

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

Если нет особых альтернатив, то почему бы и нет?

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

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

Никак. Я разве утверждал обратное?
Ваши слова?-

> Тут хоть какие-то исследования, претендующие на объективность, которые кстати покрывают и ваш случай…

Тут сплошь вопросы вкуса, так что у каждого своя правда, и объективности как бы нет и не нужно.
Ваши слова?

Похоже на мой комментарий?
Тут сплошь вопросы вкуса, так что у каждого своя правда, и объективности как бы нет и не нужно

Так я никому не навязываю свою правду.
Промахнулся — не вам отвечал, mille pardon.

Это мои слова.


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

Поэтому я и не привожу статистики, вы меня вынуждаете своими маркетинговыми статьями.

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

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

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

А кто эти субъекты? Программисты, дизайнеры, бухгалтера? Кого исследовали?

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

Я и не пытался. Если вы выбрали для себя удобный инструмент, я только рад за вас. Пользуйтесь им и даже не думайте смотреть в сторону других инструментов (я серьезно).
А теперь вы утверждаете, что я вас вынуждаю

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

Думаю под «реальной аргументацией» вы имеете ввиду статистическое исследование? У меня такового нет, и ни у кого нет. Если вы такое найдете, обязательно дайте мне знать, буду благодарен.
И вообще я теперь очень хочу запретить вимерам писать про то, какой вим хороший и как они стали быстро работать, пока в каком-нибудь университете не проведут такое исследование

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

Да! А он отвечает:

Я и не пытался. Если вы выбрали для себя удобный инструмент, я только рад за вас. Пользуйтесь им и даже не думайте смотреть в сторону других инструментов (я серьезно).


Но меня тут назвали дураком и мои инструменты дурацкими, мне обидно.
Статья так себе, не нужно придавать ей большого значения.
С чего вы взяли, что вы реально стали быстрее? Аппл утверждает, что вам это только кажется.

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

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

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

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


Итак, высказывание о переброске руки реально очень сомнительно. Я вчера весь день за собой следил, это не медленнее, чем дотянуться до ctrl+c или esc или смены раскладки (у меня это caps lock)

Итак, высказывание о переброске руки реально очень сомнительно

Повторю еще раз, для особо сомневающихся — ваши сомнения не имеют никакого отношения к объективной реальности. Засеките время переброса руки и тыке по иконке в быстром меню и время нажатия клавиш, на пример, 'gc.
У меня получилось (только на переброс руки с клавиатуры на мышь и обратно) ~ 1.1 секунды
Против ~ 0.5 секунды
Повторю еще раз, для особо сомневающихся — ваши сомнения не имеют никакого отношения к объективной реальности.

Я тоже могу повторить раз 10 для непонятливых: ваше субъективное понятие быстроты или трудоемкости не имеет отношения к реальности. Просто потому что это чисто субъективные понятия. Ваши.

Выше вы некрасиво передернули:
Ну то что элементарная частица может быть в двух местах одновременно, тоже довольно сомнительное высказывание, но что поделать, не все упирается в наши предпочтения и веру.

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

Засеките время переброса руки и тыке по иконке в быстром меню и время нажатия клавиш, на пример, 'gc.

При чем тут это? Макросы обычных редакторов никто не отменял. Весь сыр-бор разгорелся из-за позиционирования курсора, а не тыканья мышкой по иконкам вместо клавиатурных комбинаций.
Просто потому что это чисто субъективные понятия. Ваши

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

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

А если у меня привычное положение — одна рука на клаве, вторая на мышке?

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

Что это за стиль такой?

Можно еще мышкой по экранной клаве тыкать.
Что это за стиль такой?

Возможно это стиль «Программирование мышкой».
Это может быть автоподсказка при вводе, которая работает по префиксу. Но тут преимущество мыши неочевидно.
А я бы так ответил
1. изучение предметной области
2. поиск библиотек или проектов, реализующих отдельные аспекты задачи (может быть даже почти всю задачу), и их изучение, включая чтение документции сборку, запуск, небольшую модификацию и отладку примеров
3. соединение этих библиотек вместе и написание необходимого соединительного кода
4. отладка, отладка и еще раз отладка того что получилсь :)
Прекрасно. Из всего вышеперечисленного для чего вы используете редактор или IDE?
2,3,4
Как с помощью редактора/IDE вы ищите проекты и библиотеки?

По 3 и 4 пунктам — вы пишите текст одной рукой?
По пункту 2 — компилирую, провожу эксперименты и отлаживаю в IDE.
Текст набираю двумя руками — но программирование это не та сфера, где нужно набирать много текста. Большая часть времени — это медитация над исходниками, документацией и результатами работы программ.

Пожалуй 50% рабочего времени я руками вообще ничего не делаю. Правая рука просто лежит рядом с мышкой и клавиатурой на столе, левая на левом краю клавиатуры. Где-то 35% кручу колесо и щелкаю мышью и только 15% набираю и исправляю текст.
Ну так я веду речь о написании текста. К чему эти аргументы вида — а программирование это не только написание текста — я все никак не могу понять (
Ну так набор текста занимает незначительную часть общего времени, чтобы экономить миллисекунды.
Ну так не экономьте миллисекунды, если у вас набор текста занимает незначительную часть времени. Я ведь не против.

Так вот интересно, какой текст в больших объёмах набирают поклонники Vim. Романы пишут, что ли? Мне правда интересно.

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

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

Серфинг не считается? Или вы программу простыней набираете?
А как сёрфинг связан с Vim?
Напрямую. Эхх… Очередной хейтер, который знаком с Vim на уровне «двоюродный коллега один раз запускал и ему не понравилось» (
Я уже писал здесь, что использую Vim постоянно для задач, которые в нём выполняются лучше всего. Линуксом пользуюсь чуть более восьми лет, Vim'ом примерно столько же. Зачем вы переходите на личности? Мне по-прежнему неочевидна связь сёрфинга и редактора текста. В Emacs есть встроенный браузер, но он, очевидно, не подходит для современных сайтов, ориентированных под Webkit/ES5/Мышь/Тач. Для Vim я ничего такого не видел. Если вы намекаете на Vimperator и Vimium (для Chrome), то они тоже являются лишь дополнениями, но никак не связаны с редактированием текста.
При чем тут серфинг и браузеры? Я разве говорю об интернет-серфинге? Серфить можно и исходные коды проекта, и документацию, и тесты, и еще много чего.
Впервые встречаю это слово в таком значении. В эклипсе для навигации эффективнее использовать и мышь, и клавиатуру. Чаще всего мне требуется найти вызов метода по проекту и перейти к определению. Как опять же писалось тут, сомнительно, что Vim сможет определить правильную перегрузку функции или выбрать правильный метод для объекта, если есть несколько одинаково названных методов в разных классах (например, run() или start()). Когда происходит вызов такого метода, нужно учитывать тип объекта, для которого он вызывается, чтобы найти определение. Для определения типа нужно как минимум распарсить код и найти определение переменной, иногда вывести её тип (как в случае с ключевым словом auto в C++), иногда отрезолвить цепочку typedef'ов. Eclipse справляется с этим без проблем, а что делать в Vim? И это я ещё не трогаю рефакторинг, без которого в большом проекте будет нелегко.

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

Но ведь оно для описания действий прекрасно подходить, разве нет?
а что делать в Vim?

Vim не умеет семантику, потому серфинг в Vim больше сводится к другой области управления (более мелкой или более специфичной). Было бы прекрасно, если бы кто нибудь таки включил Vim в качестве основного редактора в какой нибудь Eclips (на пример).
Вопрос в том, так ли важен быстрый набор текста

Набор текста это не только печатание (как многие тут считают), это и микросерфинг и макросерфинг по проекту. Vim с этим прекрасно справляется.
средства удобного и надёжного контроля кода?

О каких средствах идет речь?
>Но ведь оно для описания действий прекрасно подходить, разве нет?

Возможно, я лишь сказал, что не встречал его в таком значении.

>серфинг в Vim больше сводится к другой области управления (более мелкой или более специфичной)
>микросерфинг и макросерфинг по проекту

Непонятно, что же это такое. Открытие разных файлов и переход между ними? По-моему, это не так полезно, как семантическая навигация.

>О каких средствах идет речь?

Рефакторинг и Quick Fix (автоматическая генерация кода и исправление типичных ошибок), в основном, иногда анализ ресурсов на предмет соответствия коду, как в Android Studio проверка соответствия типа view из XML типу в коде и в Eclipse проверка наличия определения контрола в ui.xml, если он определён в аннотации @UiField (это для UiBinder из GWT). Автоматический рефакторинг позволяет не беспокоиться, что где-то что-то не исправилось как ожидалось, либо изменилось что-то, что не должно было. Возможно, он не идеален и тоже может накосячить, но я с таким пока не сталкивался.
Непонятно, что же это такое.

Микросерфинг это, к примеру, замена блока кода, переход к аргументам функции, переход к началу слова и т.д. Этих действий в процессе набора исходных кодов выполняется уйма.
Открытие разных файлов и переход между ними? По-моему, это не так полезно, как семантическая навигация

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

Я об этом уже много раз писал, потому отвечу коротко — я рефакторю что то настолько редко (если раз в день переименую один метот, то это будет событием), что мне достаточно грепнуть по проекту и за 5 минут все закончить.
Quick Fix

Аналогично с рефакторингом. У меня для генерации кода свои механизмы, и они только облегчают набор шаблонов, а шаблоны рефакторить нет необходимости, да и типичных ошибок в них нет.
Автоматический рефакторинг позволяет не беспокоиться, что где-то что-то не исправилось как ожидалось, либо изменилось что-то, что не должно было

Для этого предпочитаю тесты и онлайн сервисы проверки исходных кодов.
Программы пишут. Не одну функцию в день, а реальный функционал.
Вот хотелось бы посмотреть на процесс. Не исключено, что я просто тугодум и не умею писать простынями, а вместо этого больше думаю, чем печатаю. Поэтому и скорость набора не является для меня критичной, и поэтому интересно увидеть, как работают другие. Видел стрим на twitch, где разработчик Crea исправлял баг, там собственно ввода было минимум, больше навигации по коду.
а вместо этого больше думаю, чем печатаю

А это взаимоисключающая деятельность?
Вот хотелось бы посмотреть на процесс

Где то на хабре я выкладывал ссылку на видео. Можете поискать если интересно.
Для этого нужно иметь как минимум двухядерный мозг. Есть такое интересное явление как «Эффект дверного проёма» гуглится на гиктаймс первой же строчкой.
Для этого нужно иметь как минимум двухядерный мозг

Нет, достаточно использовать такой инструмент, который не потребует от мозга вмешиваться в процесс печатания. Это называется «печатать на скорости мысли».
Вообще-то статья именно о преимуществах vi/vim при редактировании а не наборе текста. В больших объемах набирать plain text вообще безразлично в чем, да хоть в notepad.

Мощь vim проявляется именно при редактировании (изменении, исправлении, форматировании, небольшом дополнении) в командном режиме.
не используете «слепой десятипальцевый»

Можно подумать, вы программируете код в редакторе со скоростью 500 символов в секунду! Никогда не знал, что в программировании важна скорость ввода текста!

А при чем тут скорость ввода текста? Вы вообще мой комментарий прочитали?
Программист регулярно серфит по исходному тексту, заменяет, ищет и пр.

Так что да — каждое нажатие клавиши имеет значение и оптимизация работы по работе с исходником (не важно vim это или Ctrl+Shift+Right) освобождает больше времени для «чисто подумать» над кодом или почитать Хабр.

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

Исключение разве что текстовый редактор acme, который специально заточен на мышетекстовое управление.

https://habrahabr.ru/post/208482/
Дело не в скорости как таковой. Просто после овладевания слепым десятипальцевым методом на приличном уровне меньшая часть мозга задействована на то, чтобы что-то напечатать. Напечатать что-то – это вообще не задача. Вам не нужно переводить взгляд. Не нужно задумываться, где какие кнопки. Не нужно позиционировать руки над клавиатурой. Это куча мелочей, которые выбивают из потока. Вы вообще не отвлекаетесь. Вы просто смотрите в экран, а там сам собой появляется текст, о котором вы думаете. И вот это как раз важно. Полагаю, мастерское владение vi/vim может дать схожий эффект. Не знаю. Не владею :)
Если одна рука на asdw, а вторая на мышке — тогда удобно. Для печати, на мой взгляд, не очень.
Ну если вы писатель, то да. А если программист?

Я вот обычно сижу, думаю над кодом, неспешно прокручиваю его колесом мыши… иногда делаю переходы по дереву классов, или контекстные переходы типа «go to definition» — тоже мышью… время от времени переключаюсь на чтение документации опять-таки ничего не пишу, а только читаю и кручу мышью… иногда переключаюсь на браузер, там да — нужно набить фразу в поисковике, хотя часто можно сделать копи-паст мышью (например имя функции или сообщение об ошибке), а нередко прямо в программе в контекстном меню встроена команда «найти в гугле» (и думаю вскорости эта команда будет во всех ридерах и IDE).

И только иногда, когда вдруг в голове складывается полное понимание того, что нужно написать — откладываю мышь в сторону и пишу какой-нибудь кусок кода. Уже сразу обеими руками на клавиатуре.
А как вы позиционируете текстовый курсор в нужное место? Вопрос без сарказма, мне правда интересно. Вот я вижу точку на экране, в которую ткнул бы мышью — что вместо этого я должен сделать в виме/емаксе? Самый быстрый способ, до кторого я пока додумался — вызвать поиск и набрать сочетание символов из этого места, уповая, что оно уникально. Но даже если оно таки уникально, выходит, по-моему, не быстрее тычка мышкой, а если их таких оказалось несколько — так и тем более.
А как вы позиционируете текстовый курсор в нужное место?

В Vim для этого есть normal mode.
Вот я вижу точку на экране, в которую ткнул бы мышью

При работе с текстом, автор оперирует синтаксическими конструкциями, а не точками на экране. Для них в Vim есть множество команд перевода курсора.
Ну ок, и какая команда для «спозиционируй мне курсор на начало четвертого формального параметра пятью строками ниже»?
У меня это ss который дергает easymotion.
Как ни крути — это будут разные комбинации. А позицинирование мышью — универсально.
Позиционирование мышью тоже требует различных сокращений мускулатуры, что с того?
Когда ходите — вообще караул. Это автоматизированное, рефлекторное действие. Одинаковое, универсальное. В отличие от. Есть баланс этих инструментов.
В отличие от

Очередное безосновательное заявление. Вот он я, и у меня работа с easymotion так же рефлекторно.
Очередное безосновательное заявление

Отнюдь. Каждый говорит за себя.
Ну естественно для вас работа с easymotion будет сложной и долгой. Только мы не сравниваем опытного пользователя (на пример) emacs с новичком Vim, ведь так?
Я говорю об универсальности метода, а не том, насколько его освоил кто бы то ни было.
Говорить об универсальности метода как ссылаться на использование только ed, так как он есть даже в атмосфере. Универсальность не имеет значения.
Клавиши перемещения курсора прямо на буквах — руки не нужно переносить. Можно возразить, что курсором медленно позиционировать. Но учитывая время перемещения рук до мышки, позиционирование курсора и обратно на клавиатуру, перемещение сразу с клавиатуры может быть более быстрым. Ведь если нужно переместить на пять строчек вверх и 30 символов влево достаточно нажать клавиши вверх и влево по одному разу. А можно еще и через слова прыгать! А время нажатия определяет перемещение. Кажется удивительным, но после тренировки точность перемещения за одиночное нажатие клавиши управления курсором достаточно высока.
> Ведь если нужно переместить на пять строчек вверх и 30 символов влево достаточно нажать клавиши вверх и влево по одному разу.

Это как?

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

И в этом вообще была моя главная проблема с Вимом, да и с Емаксом, до некоторой степени. Как редакторы-то они мощные и легко уделают любое IDE, без дураков. Более того, ниже товарищ пишет, что-де вот то да сё в Эклипсе удобнее чем в Виме — да, вполне может быть, что конкретное «то» и «се» действительно удобнее в IDE, но это только для каких-то совершенно определенных вещей, которые предусмотрели разработчики данного IDE, а в Виме из стандартного набора можно что хочешь собрать, о чем разработчики, возможно, и в страшном сне не помышляли. Но проблема в том, что эти преимущества Вима проявятся в полной мере только на какой-то нетривиальной задаче редактирования, возникающей раз в месяц, а то и реже. Допустим, я подумал, загуглил, еще подумал и нашёл способ, как сделать это в Виме супер-пупер-эффективно. С учётом времени на раздумья и гугление, я бы давно уже сделал то же самое в IDE, потыкав куда надо мышкой, конечно. Но теперь-то я уже умею в Виме и в следующий раз сразу быстро и эффективно сделаю, да? Нет. Ибо задача нетривиальна и понадобится её решать опять через месяц, за который я благополучно забуду своё нынешнее решение начисто. В результате опять думать, опять гуглить, и опять быстрее было бы потыкать мышкой в иде. Та же картина, кстати, и для ещё одной иконы опенсорса, написанной много лет назад, но до сих пор превосходящей и затмевающей — системы TeX. Всякий знает — ну или хотя бы слышал — что набирать формулы в TeX гораздо быстрее, чем в Word, и это факт. Вот только мало кто сидит и день за днём, час за часом долбит одни и те же формулы — прежде надо эксперименты поставить, расчёты провести, тексты написать, синтаксис формул опять успеешь забыть, опять гугль, опять дотянулся проклятый Кнут… (TeX крут, тем не менее, просто его истинная крутизна в другом.)
НЛО прилетело и опубликовало эту надпись здесь
Ага, мне тоже кажется, что в основном этим он и хорош. Или когда твою статью не принимают в один журнал — пошёл на сайт другого журнала, скачал их стилевой файл, пересобрал документ с ним, послал туда. Теоретически как бы и в Ворде как-то так тоже можно, но на практике потом затрахаешься вручную править форматирование практически везде.
С TeX проблема в том, что не существует вменяемого конвертера из TeX в Word. Именно поэтому я так и не смог перейти ни на TeX, ни на LyX — ведь всюду требуется исключительно Word. Куда я потом этот TeX-документ дену? Да даже среди научных издательств крайне мало таких, которые ещё принимают TeX-документы, и даже они пишут, что предпочтительнее всё же Word.
В этом плане Markdown гораздо юзабельнее — там нет проблем с конвертированием, у него глаже кривая обучения, а благодаря расширениям он крайне богат возможностями.
Не знаю, у меня Word ни разу не требовали, всегда хотели либо PDF, либо PDF + исходник в TeX.
Зависит от предметной области. Я, например, сталкивался с чисто биологическими журналами и журналами по биоинформатике. Первые требуют почти исключительно doc/docx, изредка принимают PDF или odt. Вторые обычно принимают doc/docx и TeX.
Клавиши перемещения курсора прямо на буквах появились потому, что давным давно в старых терминалах передавались в основном печатаемые символы, и стрелки не передавались. Так появилось перемещение курсора буквами. Просто исторически сложилось.
Вот я вижу точку на экране, в которую ткнул бы мышью — что вместо этого я должен сделать в виме/емаксе?


В vim можно использовать easymotion
А в emacs или avy или ace-jump-mode.
Все они работают на похожем принципе:
  1. нажимаете хоткей, затем вводите первую букву слова на которое надо перепрыгнуть
  2. редактор подсвечивает все слова начинающиеся с выбранной буквы
  3. выбираете на какое именно слово прыгнуть

Так можно за 3-4 нажатия клавиш переместиться в любое место на экране.

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

Круто. У нас CodeGuide предполагает все формальные параметры начинать с буквы «A», как раз подойдет — скажем, ф.п. штук пять и нужен последний.
Так можно за 3-4 нажатия клавиш переместиться в любое место на экране.

Оно того стоит, если тронуть мышь — пол-секунды?

Ну во-первых можно прыгнуть на вторую букву, во-вторых пока количество формальных параметров на экране меньше чем 26, вы все равно в три keystroke попадете на букву А.
Я не знаю, удобнее ли это чем мышка для тех, кто хорошо владеет мышкой, я мышкой владею плохо, мне EasyMotion намного удобнее.

> все формальные параметры начинать с буквы «A»

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


А это каждый решает сам для себя. Редактор предоставляет возможность перемещаться с помощью мыши и клавиатуры, что больше нравится — то и используйте.
UPD: УПС: опередили выше про avy
В emacs есть https://github.com/abo-abo/avy
Очень удобно. Работает, даже если открыто несколько виртуальных окон
Вим\Емакс это не какие-то суровые редакторы для перфокарт. Там тоже есть гуй и поддержка мышки. И даже в консоли типа iterm2 есть поддержка мышки.
НЛО прилетело и опубликовало эту надпись здесь

Ниже уже где-то писали про AceJump (видео демо), добавлю, что есть в IDEA плагинчик. Всё-таки, даже рефлекторное и отработанное движение мышью не моментальное по той только причине, что вы не можете точно сказать где окажется курсор перед движением. Само движение строится на обратной связи текущего положения курсора (то есть вы смотрите как он движется и по ходу корректируете скорость/направление). Что, как бы, очевидно, менее эффективно, чем клавиатурное (даже если не AceJump, то можно просчитать наперёд при ручном перемещении).
И да, я до сих пор позиционирую курсор мышью (трекпадом, если точнее).

Мышь, может, и не моментально, — а вот тачпад (или айбиэмовский прыщик) — очень даже моментально.
Всяко пошустрее, чем комбинации вида «прыгни-ка к первому вхождению символа „f“», если их там много. Да и позиционирование мышью — непосредственное. Это просто удобнее.
Где-то год назад я программировал одну исследовательскую хрень с использованием gaze tracker (прибора, определяющего точку на мониторе, куда смотрит юзер). Была мысль попробовать запилить установку текстового курсора по хоткею прямо в точку взгляда. Напрямую водить указатель мыши взглядом было уныло — точность позиционирования так себе, и из-за шумов в измерениях он еще дрожит, как рука алкоголика. Но поставить где-то в пределах трёх нажатий на стрелки от нужной позиции, возможно, удалось бы. К сожалению, девайс у меня отняли раньше, чем руки дошли попытаться чего-то сделать в данном направлении…
Это вы ThinkPad'ом никогда не пользовались.
Его трекпоинт позволяет делать это, вообще не отрывая руки от клавиатуры.

Я уж молчу о том, что в моем понимании «моментальная навигация» — это прыгнуть к нужному классу/файлу/функции в проекте или исходниках библиотеки (и потом обратно, а лучше — и вовсе в отдельном окне показать), а не в пределах экрана-двух на регулярках ерзать.
Спасибо!
Уже добавляю ":set mouse=" в свой .vimrc :-)
моментального? рука перемещается на мышь — рука с мышью перемещается в нужное место — рука с мыши возвращается на клавиатуру.
НЛО прилетело и опубликовало эту надпись здесь
Вы понимаете значение слова «моментально»? Одна-две секунды это не моментально.
1/125 секунды — тоже. И?
И зачем тогда говорить, что это моментально? Для красивого словца?
Зачем тогда саркастически спрашивать «вы понимаете значение млова „моментально“» и сравнивать с 1-2 секундами, если это значение не определено в числах?
Затем, чтобы люди таки научились пользоваться своим лексиконом, а не занимались демагогией, выплевывая в комментарии терминологию, не имеющую никакого отношения к реальности.
Демагогией здесь занимаетесь вы, с претензией на объективность.
Слово «моментально» в контексте разговора, очевидно, означает, что продолжительность промежутка в абсолютных значениях не имеет роли, т.к. пренебрежительно мала по сравнению с другими действиями. Ваши попытки переходить к абсолютным числам выглядят нелепо.
что продолжительность промежутка в абсолютных значениях не имеет роли

Когда человек привык отвлекаться от основной деятельности на 1-2 секунды, для него это не имеет роли. Мы говорим о Vim, редакторе, который позволяет пользователю писать программы «со скоростью мысли», а в его контексте термин «моментально» играет огромную роль.

Перенос руки с клавиатуры на мишь и обратно — это не моментально.
Когда человек привык отвлекаться от основной деятельности на 1-2 секунды, для него это не имеет роли. Мы говорим о Vim, редакторе, который позволяет пользователю писать программы «со скоростью мысли», а в его контексте термин «моментально» играет огромную роль.

Мы говорим о том, имеет ли значение скорость ввода как таковая.

Перенос руки с клавиатуры на мишь и обратно — это не моментально.


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

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

Повторюсь, если бы это делалось моментально, то это не имело бы значение, но это не так.
НЛО прилетело и опубликовало эту надпись здесь
Жаль что подобного рода результаты диалога, с полным съездом собеседника, не отражаются в карме
за компом сижу много, но, чтобы найти глазами курсор, зачастую надо пошерудить мышкой. Плюс, позиционирование ее у меня выглядит как затухающее колебание на 1-2 периода. Это я вот сейчас специально попробовал. В виме либо перескоки на несколько строк автоматом руки делают, либо быстрее поиском, он тоже начинает автоматически набираться
Народ говорит, что работа с мышкой должна быть моментальной. Вы что то не то делаете!
У меня включен поиск курсора по Ctrl, видно сразу.
В gvim это, к сожалению, есть. Очень хочу научиться эту возможность отключать — бесит, когда переключаешь мышью окно и курсор оказывается в непредсказуемом месте.
:set mouse=c
В этом режиме вставка из системного буфера обмена стала даже удобнее. А вот как скопировать в буфер я так и не понял (по крайней мере в windows ). Видимо придется документацию почитать…
А что вы делаете, если нужно что-то сделать с текстом с планшета, где мышь отсутствует, ткнуть пальцем можно примерно в 3-5 соседних символов, а клавиатура тачпадовская?
Если приходится редактировать много текста в описанном окружении, то сделать, на самом деле, можно только одно: достать чернил и плакать.
А если нужно поправить совсем немного текста, вы запускаете IDE или блокнот?
vi — это notepad++ в среде *nix
Sublime Text?
Его даже в репах официально нет. Вообще нет.
Рекомендую взглянуть на плагин EasyMotion.

В Vim для этого есть EasyMotion, который позволяет прыгать в любое место без того, чтобы убирать руки на мышку.

В Vim для этого есть плагин easymotion. В нём перемещение к тексту состоит из двух-трёх нажатий на клавиши: 's' (перейти в режим поиска), далее символ, к которому нужно переместиться. Эти символы на экране подсвечиваются. После этого надо нажать последнюю клавишу, чтобы переместиться к этому символу. Например, перемещение к первому на экране определению C++-функции: 's{a'. Это быстрее, чем нашарить мышь, спозиционировать курсор и щёлкнуть, вернуть руки на место.
Разработка и набивка текста это разные вещи, продуктивность набивки текста обычно не влияет на скорость разработки, а на качество может повлиять только отрицательно. Посыл изначально не верный, текстовый редактор это не правильный инструмент для программиста, это просто редактор текста.
Вот хотел сказать примерно то же, но не рискнул. Я редко больше 1000 строк редактирую за весь день, а чаще — пару сотен. Моя продуктивность явно не упирается в набор текста.
Это ключевой аргумент, именно поэтому vimеры его старательно игнорируют.
Скорость набора текста вообще не является аргументом. Но вот удобство набора — таки является. Вимом это делать удобнее. Вот как-то так.

Вимом не только не удобнее, им вообще ничего делать невозможно. Как-то вот так.

Как можно сделать столько ошибок в простой фразе «Я ничего не умею делать вимом»? ;)
Во-первых, это не ключевой аргумент. Ключевой аргумент — комфортность работы. Когда пальцы привыкли делать достаточно сложные действия нажатием 2-3 клавиш, пользоваться другими способами мучительно.

Во-вторых, это смотря у кого какая производительность. Если я пишу новый код, я запросто могу написать этак 1500 строк в день.
продуктивность набивки текста обычно не влияет на скорость разработки

Более того, набивка текста вообще не влияет на скорость разработки, так как разработка — это в первую очередь построение абстрактных моделей и схем (для их представления другим разработчикам). Процесс разработки не связан ни с одним редактором или IDE. Не следует путать терминологию
Работать с мышкой ооочень доооооолго, вы попробуйте обходиться без неё. В свое время почти полностью отказался от неё (sublim + vi mod в браузере + awesome wm). Сейчас крайне бесит, что в некоторых программах без мышки никак.
We’ve done a cool $50 million of R & D on the Apple Human Interface. We discovered, among other things, two pertinent facts:

Test subjects consistently report that keyboarding is faster than mousing.
The stopwatch consistently proves mousing is faster than keyboarding.
Дайте линк, а?
Нашёл тут продолжение: http://www.asktog.com/TOI/toi06KeyboardVMouse1.html

Продолжение
This contradiction between user-experience and reality apparently forms the basis for many user/developers’ belief that the keyboard is faster.

People new to the mouse find the process of acquiring it every time they want to do anything other than type to be incredibly time-wasting. And therein lies the very advantage of the mouse: it is boring to find it because the two-second search does not require high-level cognitive engagement.

It takes two seconds to decide upon which special-function key to press. Deciding among abstract symbols is a high-level cognitive function. Not only is this decision not boring, the user actually experiences amnesia! Real amnesia! The time-slice spent making the decision simply ceases to exist.

While the keyboard users in this case feels as though they have gained two seconds over the mouse users, the opposite is really the case. Because while the keyboard users have been engaged in a process so fascinating that they have experienced amnesia, the mouse users have been so disengaged that they have been able to continue thinking about the task they are trying to accomplish. They have not had to set their task aside to think about or remember abstract symbols.
Вот мне тоже хотелось бы линк на исследование. То, что кинул Evengard, извините не исследование, а такое же ИМХО автора, нет ни метода исследования, ни характеристики групп, не количества испытуемых, ничего (насколько я понял их контекста, они набирали рандомных людей, так я и так вам скажу, что по-началу мышка интуитивнее и быстрее).

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

ps. Я не утверждаю, что все должны пользоваться вимом, пользуйтесь чем вам удобнее. Но говорить, что мышка быстрее клавиатуры, это, извините, нонсенс.
Пруфы? Пфф… Кому нужны пруфы когда есть вбросы?!
В статье как раз говорится о том, что клавиатура интуитивнее.
Только меня смущает, что статья из тех времён, когда у большинства людей вообще не было мышек?
Ну если искать на sciencedirect'е или подобном ресурсе, то исследования вполне находятся. К сожалению, доступ к ним платный (а потом удивляются, почему все только на жёлтую прессу ссылаются).
Вот пример неплохого исследования:

Richard Coll, Khalid Zia, Joan H Coll. A comparison of three computer cursor control devices: pen on horizontal tablet, mouse and keyboard, Information & Management, Volume 27, Issue 6, December 1994, Pages 329-339

Из Abstract'а:
The ATT Frame Creation System (FCS) Series 500 was used because it is a graphics system which, conveniently, accommodates the three devices we wished to compare. It consists of a color graphics monitor, an alphanumeric keyboard, a pen, a mouse, and a horizontal tablet used in conjunction with the pen and the mouse.
In the context of these experiments pen use was never significantly faster than mouse, while both pen and mouse use were always significantly faster than the keyboard.
В статье приводятся все необходимые подробности: и количество испытуемых (63 человека), и наборы экспериментов, и используемое оборудование, и выполняемые задачи. Даже определялся прогресс — как сильно люди могут улучшить результаты в ходе тренировок скорости работы с данными девайсами.
я прошу прощения, но вы прочитали эту статью? В ней проводятся 4 эксперимента, суть каждого из них — позиционирование на экране. В 1 эксперименте, например, нужно было двинуть курсор в рандомно появляющийся белый квадрат. Это здорово, но немного не по теме, которая обсуждается здесь.
Конечно не исследование, так, хрень на постном масле. Всем гораздо интереснее было бы узнать, во что вы ни разу не поверите, а во что — поверите :)

И раз уж взялись меряться писькой с мышкой, приведите, пожалуйста, эти три волшебные клавиши, которыми вы в виме скопируете и вставите в произвольное место файла произвольную строку текста. Вот давайте, для определённости, пусть ваш текстовый курсор стоит в позиции 0, 0, скопируйте нажатием трёх клавиш 37-ю строку и вставьте в 12-ю строку между 27-м и 28-м символами. Напоминаю, у вас есть три нажатия по одной клавише, время пошло :)
Конечно не исследование, так, хрень на постном масле

Совершенно верно.
эти три волшебные клавиши, которыми вы в виме скопируете

Могу в одну клавишу. Какую вам хочется? Давайте на m. Все, сделал.
вы правы, тремя кнопками (с настройками по-умолчанию) не обойтись. Вот последовательность
:37 enter
v$hy
:12 enter
27lp

Если вы новичок в виме, то да, над каждой командой нужно думать, уйдет много времени. Если все в пальцах, то получается быстрее (тем более, если визуально 28 символ не сильно отделен). Опять же, я не призываю пользоваться вимом, пользуйтесь чем угодно. Но клавиатура в подобных задачах быстрее. Другой вопрос нужны ли эти выигрыши в скорости (вопрос почти как про преждевременную оптимизацию). За себя я могу сказать, что мне просто нравится работать таким образом.
Вот уже больше похоже на правду. Итого 19 нажатий (это включая три шифта, который тоже кнопка). При этом еще зачастую спецсимволы и знаки препинания, которые на традиционной клавиатуре расположены по-идиотски, из-за чего их не каждый раз удается с первой попытки набрать вслепую. На самом деле, тремя кнопками тут не обойтись с любыми настройками, даже если у нас заранее заготовлен макрос для копирования и вставки строки — его, как минимум, надо вызвать (пусть будет одно нажатие), скормить ему три двузначных числа с разделителями (8 нажатий) и нажать ентер, итого 10. Мышью быстрее будет, другой вопрос, нужен ли этот выигрыш в скорости :) А если еще объединить мышь с хоткеями (к примеру, сделать, что когда ничего не выделено, пусть Ctrl-C копирует целиком текущую строку), операцию можно произвести в четыре нажатия и два тычка. Потратим время на движение мыши, да, но и его можно частично сэкономить, двигая мышь в точку назначения, пока нажимаем Ctrl-C.

Исследование у меня тоже вызывает вопросы. Какие операции они замеряли, какие у них в системе хоткеи, как организован гуй? Я вот думаю, хорошо бы ввести новую дисциплину специальной олимпиады по программированию, типа «бег по тексту с препятствиями». Команда задро… спортсменов может использовать любой редактор/IDE, обмазать его какими угодно модами и расширениями, тренироваться сколько хочет по затаскиванию мыши или запоминанию клавиатурных комбинаций. Потом всем командам раздают набор типовых заданий (заранее им неизвестный, чтобы не могли специально под него хоткеи заточить) и вперёд. Тогда рано или поздно станет понятен выбор чемпионов. А пока получается один субъективизм, кого-то сильнее бесит за мышку тягать, кого-то — клавиатуру топтать.
А миллионы мух знаете что выбирают?

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

Вопреки исследованию — Apple не собирается горячие клавиши вырезать из своих продуктов. Их там — огромное количество. Горячие клавиши очень активно применяются в MacOS уже много десятилетий.
О! Я фактически зашел, чтобы прочесть эту фразу…
Ну, во-первых, набирать мышью текст очень удобно, надо только приделать к ней пять-шесть кнопок, написать простенький спецдрайвер, и вводить двоичные кода символа.

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

Во-вторых, если взять устройство где нет ни мыши, ни клавиатуры, в смысле дешёвый android-планшет, выяснится, что Vim Touch — самый удобный редактор для работы с исходными текстами для такого устройства, не требует установки Hacker´s Keyboard, как текстовые редакторы c «традиционным» управлением с клавиатуры, позволяет нормально перемещатся по тексту не занимаясь спортивным попаданием в нужное слово, ну и вообще.
upd. Я не забыл об экранных клавиатурах, но для ввода мышью это, подозреваю, наиболее неудобный способ, поэтому я описал более-менее реалистично реализуемый способ быстрого ввода текста с многокнопочной мыши. Насколько я знаю эксперименты по вводу текста с пятикнопочного устройства были, и показали неплохой результат, хотя конечно, кодировку символов для такого придётся заучить. Вспомнил старую новость о проводившихся в Штатах (или Британии) соревновании по скорости ввода между старичками радистами с морзянкой и тинейджерами с телефонами и T9. Выиграло, предсказуемо, отнюдь не подрастающее поеоление.
Насчёт пяти-шести кнопок это у вас тэг «Сарказм» отвалился или серьёзно опыт использования подобных штук имеете? Я подозреваю, что это была бы удобная приблуда к мобильнику/планшету, но что-то не видать их пока на рынке.
Изначально выше у меня тег сарказм (я бы не сказал, что он отвалился, как по мне он явно между слов и зачёркиваний проглядывает), хотя про реальный опыт использования подобных устройств (правда не совмещённых с мышью) я читал. А насчёт написать подобную «клавиатуру» для android — это идея. Надо будет попробовать.
Хотя нет, не подумал, возможностей мультитача для аккордной клавиатуры явно не хватит, и пяти настоящих кнопок ни на одном моём устройстве нет. Так что только в реальном железе, моего энтузиазма для воплощения такой идеи не хватит.
Да, это очевидно требует физического железа, вероятно, на задней стороне или отдельным гаджетом под вторую руку. Надеялся, что уже сделал кто.
Железная реализация будет убыточной, если только эффект от использования не будет настолько разительным, что подтянутся основные массы смс-писателей. Октодон, например, что-то подобное (хоть и не совсем) в железе сделать пытался, но на кикстартере набрали только 1/15 необходимой суммы. Видимо, мало кто не хочет переучиваться, носить с собой и цеплять к телефону ощутимого размера (и цены) девайс. Да что там девайс — даже сложные клавиатуры вроде основанных на Т9 или Hacker's Keyboard, или MessagEasy особым спросом не пользуются. Для большинства они без надобности, а для остальных они не предоставляют достаточных преимуществ, чтобы на них переходить, и начинать рассматривать мобильный девайс как средство создания контента, а не потребления.
На мой взгляд, ситуация не изменится, пока и если не появится способ вводить и редактировать произвольный (не словарный) текст с приемлемой скоростью вслепую с экранной клавиатуры. Из тех клавиатур, что я видел, слепой ввод и редактирование не обеспечивается ни одной. Попытки делаются обычно в направлении увеличения размера кнопок и применения техник вроде Т9 или жестов (в т.ч. для команд редактирования). У MessagEase есть даже возможность убрать все надписи с кнопок для работы в «слепом» режиме. Но по-настоящему вслепую печатать не получается из-за необходимости отрывать палец от экрана, прицеливаться и попадать даже в эти крупные кнопки: промахи — не редкость. А вот клавиатур, где не было бы необходимости отрывать палец от экрана совсем я ещё не видел. Хотя кажется, что двигаться надо бы в этом направлении.
Надо понимать, что мыши тогда были несколько похуже.
Мышь — это интуитивный инструмент, в этом его плюс. Но он не быстрый. В любом редакторе нормальные профи (не только в vi/vim) используют «горячие клавишы» и минимизируют использование мыши.

Вот только на самом деле это неправда
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь

Я думаю дело в том, что про ошибки лучше сообщать в личку. Особенно когда эту ошибку (как в случае с комментариями) поправить невозможно.

vim очень помогает в случаях когда нужно кодировать, деплоить и тестировать быстрее скорости мысли. А еще там поиск по регуляркам из каробки. И зразу есть консоль. И если у вас linux-server, то там 100% есть vim. И плагинов много. И свои можно писать. Да, использование vim это обычно легаси, но он того стоит. И файлы в 100500 строк сразу открывает.
vim очень помогает в случаях когда нужно кодировать, деплоить и тестировать быстрее скорости мысли.
Задеплоить, а потом думать «а что же это я такое задеплоил?!»?
И если у вас linux-server, то там 100% есть vim.
ну, не знаю, в десктопной ubuntu я его каждый раз ставлю, может в серверной иначе. По-моему, nano уже потихоньку его вытесняет в качестве дефолтного редактора.
Люди еще и в Far Manager пишут код. Когда проект на столько хорошо знаком, что дальше некуда.
Основной nano проект ушел из GNU (remove the GNU marker from nano's name), и это вносит некоторую неопределенность в его будущее — мейнтейнеры либо будут использовать форкнутый GNU nano, либо новую версию. Более подробная дискуссия: Nano is no longer a GNU project

vi (не vim) есть всегда — он входит в список утилит POSIX: Utilities. Есть очень редкие случаи, когда vi не установлен, но я такое встречал только на специализированных Linux-based firmware (впрочем, там не было и nano тоже).

Нету никакого форкнутого GNU nano, есть только просто nano.

НЛО прилетело и опубликовало эту надпись здесь
Для меня это была первая ссылка в гугле, а вообще полным полно таких обсуждений.
Меня как с дества еще исправляли — так до сих пор помню
НЛО прилетело и опубликовало эту надпись здесь
Я ничего против не имею любителей vi — прекрасные люди и зачастую специалисты.
Вот только не понимаю зачем вы постоянно оправдываетесь в том какой редактор вы используете (а часто еще и заходя дальше на тему — это же не просто редактор это нечто большее)…

Я искренне не понимаю зачем набирать ceHello[ESC] чтобы потом нажать '.' и превратить это просто в Hello — почему сразу не набрать это гребанное хелло?
Вот и в этой статье в очередной раз описывается как вы сами себе создаете проблемы чтобы потом решить их с помощью VI и в очередной раз что то доказать… ну а остальным сказать что их редактор никудышний, как это сделано в выводах статьи
>Я искренне не понимаю зачем набирать ceHello[ESC] чтобы потом нажать '.' и превратить это просто в Hello — почему сразу не набрать это гребанное хелло?
Это работает не так. ce значит замена от текущей позиции курсора до конца слова (если курсор в слове. Если курсор на пробеле, то заменится пробел. Если курсор на первом символе слова, то заменится все слово) сразу после ce vim переходит в режим ввода. [ESC] выводит из режима ввода. Т.е. после ceHello[ESC] в тексте слово под курсором будет заменено на Hello. Точка повторяет эти махинации.
Вопрос ведь не в этом. Я даже не буду углубляться — но с помощью ctrl+c ctrl+v и двойного клика мышкой по слову для выделения — это делается не намного дольше (если не быстрее). А если к примеру нужно в большом тексте сделать 100 замен то перемещение с помощью hjkl будет вероятно даже дольше нежели выделение мышкой. А многие сейчас даже приведут примеры как в их редакторе это вообще можно сделать одним кликом по какой нибудь кнопке — «заменить все».

Вопрос ведь был не в этом — а в том что не нужно смотреть свысока только потому что вы используете vi/vim — на результаты работы это влияет мало и те кто используют другие редакторы код часто пишут лучше.
А если к примеру нужно в большом тексте сделать 100 замен то перемещение с помощью hjkl будет вероятно даже дольше нежели выделение мышкой.

Тут уже появляются варианты. Либо "заменить все". Либо мы меняем пять слов на новые пять слов из этой сотни. Тогда вместо hjkl будут использоваться другие кнопки, зависит от ситуации, но по принципу "поиск и замена".


те кто используют другие редакторы код часто пишут лучше.

Где посмотреть статистику?


Если коротко и без всякой мишуры, то суть вима в следующем: вам не надо тянуться к мыши. Вам не надо использовать стрелочки. Даже BS не нужен(зависит от ситуации, конечно), проще допечатать до конца, нажать ESC0fArB, где A,B это неправильный и правильный символы. Даже блок delete, insert, home не нужен. Вам не надо держать руки где-то еще кроме их положения asdf jkl; на клавиатуре и куда-то их двигать.


А с плагинами обычное радактирование текста перерастает в ide'шность (я не знаю чем определяется ide, но все функции, которые я видел в ide я вижу и в вим) и можно переходить от вызова функции к её определению, из файла в файл, сплиты, скомпилить и запустить, вызвать внешнюю программу и вставить её вывод в редактируемый файл или сохранить в буфере обмена и использовать позже.
И все это не двигая руками по клавиатуре. Надо только до ESC дотянуться, но ленивые биндят, например на jj ESC и все, двойное нажатие j заменяет клавишу ESC.

и можно переходить от вызова функции к её определению

Используя ctags? Ну оно ведь не особо удобно, в сравнении с теми же монстрами аля VS/IDEA.
Я хоть и предпочитаю маргинальный редактор вместо студии, но стоит признать, что автокомплиты, переходы к объявлению/определению и т.п. в IDE обычно реализованы удобней, чем в таких редакторах…
Собственно эти IDE'шные фичи — это как раз тот случай, когда не "в этом редакторе все можно настроить", а "в этом редакторе можно смириться с отстутствием этих фич и использовать другие".

Это правда не для всех языков. На С++ не под Windows хорошей среды нет, и в Vim есть плагины, которые делают автокомплит и навигацию через clang, поэтому конкретно для С++ Vim не намного хуже чем альтернативы не на Windows. Эклипсу и QtCreator все равно проигрывает немного по функциональности (например я не нашел хороших плагинов для кодогенерации), но не так значительно, как, например, с Java.

можно переходить от вызова функции к её определению

А вы на каком языке пишете? Я ниже привёл пример с перегрузкой оператора в C++, да и любая перегруженная функция (т.е. группа функций с одним названием, но разными сигнатурами) тоже подойдёт. Как Vim выберет правильную в этой ситуации?

Если переходы на ctags реализованы, то скорей всего поведение будет как в emacs: выплюнет длинный список определений, откуда уже ручками придется находить нужное. Вообще на практике все эти "автопереходы" в Vim/Emacs работают хуже, чем старый добрый grep и совсем хуже, чем в IDE, где переходы семантические...

Ух, понятно, довольно бесполезно получается. Такие вот моменты выбивают из «потока» намного сильнее, чем, якобы, перенос руки на мышку и обратно. grep, кстати, хорошо помогает, когда берёшь чужой проект (на любом языке) и хочешь быстро найти нужное место, чтобы исправить/разобраться/найти отправную точку. Это оказывается быстрее, чем ждать полной индексации в IDE, да и поиск по произвольному тексту там обычно не очень удобен.

Такие вот моменты выбивают из «потока» намного сильнее, чем, якобы, перенос руки на мышку и обратно.

Дело вкуса. Лично я последние несколько лет разрабатываю используя для навигации только find и grep и не ощущаю какого-то дискомфорта. Вот мышкой пользоваться мне просто не очень удобно, хоть это и интуитивно-понятный контроллер.


з.ы. ну и да, постоянное нахождение рук на клавиатуре — это, помимо прочего, прямой путь к тунельному синдрому. Вспоминаем про то, что главный страдалец от этого недуга в ИТ не кто иной, как товарищ Столман, который большой поклонник маргинальных редакторов.

https://github.com/drothlis/clang-ctags кто-нибудь пробовал использовать?

Вот конкретно эту штуку не пробовал. Но пробовал в Emacs подрубать clang для семантического разбора исходников через плагины и последующих умных переходов и автокомплитов, работало оно все не понятно как, требовало кучу телодвижений для того, чтобы пропарсить проект (депенденси тоже автоматом не цепляются разумеется) и потом все это жутко тормозило, т.к. Emacs немного не многопоточный. В итоге отказался от этой идеи… судя по тому, что среди моих знакомых Vim'еров также никто не использует никаких семантических приблуд, там дела обстоят не лучше.

Попробуйте Ctrl+C вместо ESC: и биндить ничего не нужно и всегда под рукой
ESC — в левом верхнем углу.
Ctrl — в левом нижнем углу. Да еще и +C. В чем выгода, Карл?
В том что мизинец умеет сгибаться, но не умеет вытягиваться.
Ну я тут собственно вас поддержу. Надо перемапить CapsLock На Ctrl. Это облегчит положение. А если жать не Ctrl-C а Ctrl-[, то всё вообще будет ништяк.
> А многие сейчас даже приведут примеры как в их редакторе это вообще можно сделать одним кликом по какой нибудь кнопке
Или одной командой в vim.
А многие сейчас даже приведут примеры как в их редакторе это вообще можно сделать одним кликом по какой нибудь кнопке — «заменить все».

Такое даже в стандартном виндовом блокноте есть. Я бы скорее удивился текстовым редакторам в которых функции «найти все %text1% и заменить на %text2%» не предусмотрено.
Вот только не понимаю зачем вы постоянно оправдываетесь в том какой редактор вы используете

Мне это тоже постоянно досаждает (
Абсолютно типичная хабровская статья: «я вам хочу рассказать о технологии, которую изучил». Ничем не отличается от тысяч статей про другие технологии, которые здесь публикуются.

Ну да, в статье чувствуется очень легкая ангажированность — «я знаю такие фичи вима, из которого вы даже выйти не сможете». Не более того.

Что именно вас раздражает?
Разве я говорил, что меня что то раздражает?
НЛО прилетело и опубликовало эту надпись здесь
Если читать дальше заголовка, становится ясно, что это не столько апология vi[m], сколько краткое введение в философию и базовые способы работы с этим семейством редакторов. Это как с unix way. Вполне определённый подход — лет 40 назад — предельно новаторский, сейчас — основательно обросший седеющей бородой, но по-прежнему весьма эффективный, при условии правильного способа использования.
Вот только не понимаю зачем вы постоянно оправдываетесь в том какой редактор вы используете

Да всё очень просто.
Нам надоели. Надоели все эти люди, которые приходят и говорят: «Как ты программируешь на этом старом говне? Вот в моей <IDE_name>...».
Я перестал уже обращать на это внимание. Даже перестал что-то отвечать кроме как: «Да, твоя <IDE_name> очень классная. Пока.».
Это, как и любой холивар, просто непринятие одной из сторон точки зрения другого.

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

Что, кстати, интересно все же идут, смотрят на голый вим без плагинов и ужасаются. Я тоже.
Я всю жизнь использовал всякие IDE, одна другой краше, пока 5 лет назад не решил попробовать vim.
Через месяц я понял, как я заблуждался раньше, моя жизнь изменилась. Я поменял работу, и стал зарабатывать в 3 раза больше, женился, купил 2 машины.

Не попробовав — не поймешь. Смысл тут рассказавать, как вы что-то не понимаете?
Это был сарказм?
Нет, конечно, ну разве что про женился.
Без вим режима теперь очень трудно, убогость других средств раздражает.
Особенно, когда опять видишь всякий IDE — кал, с кучкой ярких приблуд, а-да дополнения кода, многоярусные туллбары с десятками кнопок, и т.д. Впечатляет, когда по всем четырем сторонам окна открыто по тулбару, куда надо ловко и быстро попадать мышью. Напоминает игру в сапера.
Вим — это аскетизм, наполненный губочайшим смыслом, гениальность.
Конечно, это не для всех. ;-)
Сарказм: 19 августа 91 года у меня из стада убежал теленок которого искали потом пару дней. В это же время произошел путч. Уверен, тут тоже есть связь.

Мораль: слишком много притянуто к переходу на вим.
Может человеку платят за количество строк кода, тогда скорость работы с текстом влияет напрямую на результат.
"A" переводит курсор в конец строки и активирует режим ввода. После завершения набора нажатием [ESC] вы можете нажать '.' где угодно, чтобы повторить ввод в конце строки.

Может быть вы знаете зачем? Чем лучшем, чем нажать Home/End в обычном редакторе?

Вы не поняли о чем речь в этой части статьи. Приведите пример вставки слова «Hello» в конец 20 строк разной длины.
В FAR это делается элементарным макросом.
В notepad одним regexp replace

В статье хорошие примеры, но попытки сказать, что VI во всем круче других современных редакторов и круче IDE — зря.
В FAR это делается элементарным макросом.
В notepad одним regexp replace

А в статье предлагается: AHelloj.j.j.j.j.j. что таки быстрее обоих предложенных вами вариантов.
но попытки сказать

Я о конкретном примере, а не об обидах и расследованиях.

Даже всякие sublime'ы поддерживают multiple cursor, при помощи которого ваша задача решится изящней, чем 20 нажатий j.

Согласен, multiple cursor замечательный инструмент.
Эффектней — да. Изящней-ли? Вопрос. Пробовал и то, и другое, повтор ввода как-то надёжней.
НЛО прилетело и опубликовало эту надпись здесь
В vim — аналогично.
Ставите под ваш язык соотвествующий плагин. Если плагин хорошего качества (как для Go), то рефакторинг выглядит также: горячая клавиша и ввод нового имени.

Давайте об определённых действиях. Добавить внутрь if дополнительное условие. Подредактировать выражение. Строчку поправить внутри кавычек.


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

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

А как насчёт удобства редактирования?

НЛО прилетело и опубликовало эту надпись здесь

Я правильно понимаю, что скорость и удобство ввода и редактирования текста не могут повлиять на продуктивность в вашем случае?

НЛО прилетело и опубликовало эту надпись здесь

Ну, вы представьте себе, что в IDE, вместо обычного редактирования текста вставлен вим и что вам надо с ним работать. Повлияет это на вашу продуктивность?

НЛО прилетело и опубликовало эту надпись здесь

Я считаю, что если вас посадить за неудобный редактор — ваша продуктивность резко упадёт. Не знаю, как у вас с вимом, но если вы им особенно непользуетесь, то когда в IDE редактирование текста будет доступно только с помощью способа, использующегося в виме — вам первое время будет очень тяжело. Будете раздражаться, ругаться и из-за этого пребывать в ужасном настроении. Потеряете концентрацию, сложно будет думать о задаче, а не о том, как вам неудобно. Потом, может быть, привыкнете. А может и нет. Может ваша продуктивность вообще просядет очень надолго. И всё из-за того, что вам очень неудобно делать 10% работы.

Да, если я внезапно буду вынужден использовать vim, и не иметь альтернатив, то моя продуктивность упадет.
Но, честно, я с трудом представляю задачу или ситуацию, где для работы с C/C++, ну там пусть, условно, PHP, Python у меня не было бы никакой возможности пользоваться при написании кода чем-то кроме vim'а…
Может Вы приведете пример подобной ситуации? Буду благодарен, если это будет приближенный к реальности, а не абстрактно высосанный из пальца.


Естественно, не беру сейчас ранее обсужденный в комментариях вопрос про "правку конфига на удаленном сервере" (или же правки пары строк в скрипте на сервере), речь именно про написание/редактирование(рефакторинг/добавление функционала и тд) кода.

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

Возможно, я не совсем точно сформулировал мысль.
Замените в моём предыдущем комментарии vim на vim-style. Т.е. если у меня не будет альтернативы vim-style редактированию, то моя продуктивность упадет.


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

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

НЛО прилетело и опубликовало эту надпись здесь

Мы обсуждали вклад удобства редактирования текста в общую продуктивность программиста. Самый простой способ проверить какое влияние она оказывает — взять IDE, оставить всю функциональность и просто заменить способ редактирования текста.

«А как насчёт удобства редактирования?»
А это в 99% дело привычки, а не сам редактор. Подавляющее большинство редакторов, встроенных в IDE это не notepad, и позволяют делать практически все вещи, которые необходимы в процессе работы. Редкие исключения — не решают проблемы вообще.
VIM жив по одной причине — у него есть специализированная ниша — работа по удаленному ssh терминалу. Там он изначально появился, там вырос, и оттуда приходят люди, которые им пользуются, и соответственно они приходят уже с навыками. Но если ты изначально работаешь на локальной машине, vi не нужен.

P.S. Это учитывая, что я как раз пришел из сисадминов, и я в vi работал много и успешно. Но для правки текста на локальной машине, мне ближе FAR, а для правки java — встроенный редактор в jetbrains со всеми его наворотами.
Редактирование исходных кодов очень далеко не всегда сводится к рефакторингу.
Ну типа да, но в Far я при этом могу в 2 нажатия приконнектится по ssh к удаленному серверу и отредактировать там файл, другой файл взять обратно и т.д. Т.е. Far Manager намного больше экономит времени.
Мы о примере редактирования текста говорили.
Я все понимаю, но тут не работает стратегия «если бы губы Никанора Ивановича да приставить к носу Ивана Кузьмича...». Выбор идет между почти оптимальный редактором и файловым менеджером и просто редактором. Я выбираю 1.
Тут не работает каких то стратегий, тут конкретный пример из статьи, который не был понят. Здесь не о выборе редактора.

"Это все есть в Emacs" ©

Этот комикс был просто обязан появиться в этом обсуждении: https://xkcd.com/378/


xkcd: Real Programmers

image

Проблема в том, что пример в статье слишком искусственный. Если там расположение чуть-чуть изменить, то уже не работает.
А в ФАР макрос может быть сложный, включать в себя поиск и перемещение.
Преобразовать 10 строк из
a[1,2,3]
в какой-нить
Var A{
[1],
[2],
[3]
};
— макрос набирается за несколько секунд и повторяется.

Более того — макрос может быть с выходом из редактора в панели, поэтому можно аналогичное исправление внести во множество файлов. Например, F2, Esc, Стрелка вниз в панелях, F4, F7, найти что-нибудь, отпозиционироваться, внести изменения — так после каждого выполнения макроса вы будете видеть изменённый, но ещё не сохранённый файл, а следующий вызов макроса сохранит текущий файл и изменит следующий. Причём множество файлов можно заранее сформировать во временной панели с помощью поиска или вручную добавляя/удаляя файлы. Наконец, эти файлы могут находиться в архиве или на удалённом сервере — макрос будет исправно работать.

НЛО прилетело и опубликовало эту надпись здесь
Я возможно вас удивлю, но в Vim тоже есть макросы, а еще там можно программировать целые функции и биндить их на клавиши.
На убогом языке, для которого никто не берется заново написать интерпретатор или транслятор в нечто более удобноваримое типа Lua, что было бы весьма кстати для проекта neovim, к примеру.

Хотя не спорю, на нем написаны хорошие плагины.

Тем не менее, в последние время — какой плагин (из серьезных) не возьмешь — так все требуют поддержку в vim или Python или Lua… Не хотят авторы плагина реализовывать функционал полностью нативно на чистом vim-скрипте…
На убогом языке

С чего эти выводы?
Не хотят авторы плагина реализовывать функционал полностью нативно на чистом vim-скрипте…

Я реализовываю, что то во мне особенное наверно?
У вас мания величия?
Зачем мне ваши самопальные макросы, решающие ваши локальные вопросы?

Один из самых лучших подсказчиков автодополнения исходного кода — требует Lua, другой — требует Python и вообще написан на C.
У вас мания величия?
Зачем мне ваши самопальные макросы, решающие ваши локальные вопросы?

Мда… Комьюнити хабра спускается все ниже и ниже с каждым новым комментарием. Печально.
Сначала отвечаете в духе «а у меня все работает», а потом в ответ на справедливое замечание обвиняете все комьюнити хабра. Спускаетесь все ниже и ниже с каждым новым комментарием. Печально.
Зайдите в мой профиль и почитайте статьи, может поймете какие у меня «самописные макросы».
Да не впечатлило.
Может, вы мне продемонстрируете тысячи фолловеров и лайков у ваших плагинов, и я признаю, что мания величия — это не про вас?
Да не впечатлило

Это не должно впечатлить.
Может, вы мне продемонстрируете

А как связано мое знание языка и мои навыки в области маркетинга?

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

P.S. Я на 100% уверен, что это будет прочитано ;)
то даже начинать разговор с вами никто не будет

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

Запись макроса требует чуть больше нажатий (примерно на 3-4), зато вызов делается одной клавишей, которую можно просто зажать, если требуется внести одинаковое исправление тысячу раз, например. Точно лучше, чем по очереди писать j.j.j.

Если надо по очереди написать j.j.j. раз 6, то я лучше это сделаю, чем буду писать макрос. На то и расчет.
Макрос не нужно писать как программу. Нужно просто выполнять нужные вам действия, предварительно один раз нажав кнопку «начать запись», затем «завершить запись» и указать на что его забиндить.
То есть не сложнее, чем затем жать.

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

Давайте сойдемся на том, что те, кто пользуются vi — могли узнать в статье полезные дополнения к знаниям. Кому vi не нужен — всегда найдут способ сделать это другим инструментом.
Я например в восторге от notepad++ с его работой с поиском и обработкой результатов поиска.

Но ФАР роднее, потому что активно использую консоль, а регулярки там тоже есть.
Макрос не нужно писать как программу. Нужно просто выполнять нужные вам действия, предварительно один раз нажав кнопку «начать запись», затем «завершить запись» и указать на что его забиндить.

Я знаю как пишутся макросы.
То есть не сложнее, чем затем жать

Не сложнее, но зачем? Я лучше 2 лишних раза нажму j. чем сэкономлю 0.0004 секунды.
Но при этом в vi точка не может воспроизводить несколько разных действий, тем более включающих навигацию, а в фар можно все это делать. поэтому даже j жать не нужно будет

Речь о конкретном примере. В этом примере не нужно чего либо, что не может точка.
Нужно что то большее, запишите макрос в vi.
Давайте сойдемся на том, что те, кто пользуются vi — могли узнать в статье полезные дополнения к знаниям. Кому vi не нужен — всегда найдут способ сделать это другим инструментом

Так я выше уже назвал статью глупой. Не знаю о чем вы пытаетесь рассказать.
Вы даже в собственном конкретном примере запутались.:
«Вы не поняли о чем речь в этой части статьи. Приведите пример вставки слова «Hello» в конец 20 строк разной длины. „
“А в статье предлагается: AHelloj.j.j.j.j.j. что таки быстрее обоих предложенных вами вариантов.»

Вставить Hello в конец 20 строк разной длины будет явно не j.j.j.j.j., а нажать эти две клавиши по 20 раз каждую = 40 клавиш.

В фаре макрос пишется примерно столько же, сколько набирается «начать запись», End + Hello + вниз, «завершить запись», забиндить например на Ctrl-R и нажать Ctrl+R нужное количество раз, Ctrl можно не отпускать, то есть 21 клавиша.
Вы даже в собственном конкретном примере запутались

Может быть вы знаете зачем? Чем лучшем, чем нажать Home/End в обычном редакторе?

Приведите пример вставки слова «Hello» в конец 20 строк разной длины

Интересно, а в far кнопка Home вставляет в конец строки Hello? Нет. Я об этом вам говорил, похоже это вы запутались.
В фаре макрос пишется примерно столько же, сколько набирается «начать запись»

qqAHello[Esc]jq19@q — 15 клавишь, если вам так угодно.
Ну, например, потому, что на моем Lenovo X1 Carbon Home/End эти идиоты разместили там, куда вслепую без ошибки не дотянешься. На другом ноутбуке они в другом месте, на 3-м в третьем.

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

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

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

Типа «ваши инструменты отстой, но вы не могите сказать, что мои инструменты отстой!»
Убогий подход.
Тем более, что IDE — это манипулирование с сущностями, рефакторинг по имени поля/класса и т.п. IDE — это работа не только с текстом.
Сам использую nano, но есть товарищ, который аргументирует так: vi (именно он, не vim!) есть везде, на любом огрызке *nix, на любой железке, поэтому если надо где-то в конфиге строчку поправить — vi наше все.
В vi раздражает именно это, а не то, какой он и так далее. Пользуйтесь чем хотите, но мне дайте самому сделать выбор, чем пользоваться.

vi достаточно давно является частью busybox. Именно поэтому он есть практически на любой железке, даже если это роутер с 4Мб флешки.
И это не раздражает, а наоборот, радует — покуда хоть ЧТО-ТО для редактирования текста уже есть.
Установка любого другого редактора возможна; возможность сделать выбор никто не устраняет! И даже можно удалить симлинк /bin/vi -> busybox.

На любом огрызке есть ed, но разве это повод? :)
ЗЫ. Посмотрел на соседней генте — нету там ни vi ни vim. А вот ed почему-то есть. Так что правда повод! Скажите вашему товрищу, чтобы переучивался. Тем более, что ed работает на телетайпе, а vi — нет, поэтому ещё более универсален :)
ЗЗЫ. Задумался, а почему, собственно, там ed стоит…
А ещё sedом можно сделать что угодно. А ещё awk. Ведь всё, что можно заскриптовать, можно и сделать руками.
Вот вы смеётесь, а я в редакторе, подобном ed'у работал :). На ЕС ЭВМ. Ну, не то, чтобы работал, но имел дело. По сравнению с перфоратором это была чудо технология!
Не, ну правда, мне аргумент «vi есть везде» кажется неверным и несправдливым по отношению к ed
А edlin нет?

Насчет vi не уверен, но вот vim хоть и есть на многих машинах, но без уютного конфига он не так уж и удобен… в результате затаскивание конфига на удаленную тачку по трудозатратам сравнимо с установкой редактора… т.ч. Emacs + tramp-mode тут немного выигрывает ;)

Пользуюсь vi. vim но раздражают не режимы/команды а необходимость переключаться между языками (редактирую русский текст).

Спасибо.

Мне больше понравилось это решение.
https://github.com/lyokha/vim-xkbswitch.git — решит все ваши проблемы.

Первый пример неубедительный. Например, чтобы в Eclipse CDT сгенерировать реализацию методов (в любом количестве) по заголовочному файлу, мне достаточно нажать Alt+Shift+S, Up (Implement Method...), Enter, Enter. При этом, в примере не раскрыта тема C++, где простого копирования мало, надо ещё дописать название класса.


Второй пример также проигрывает эклипсу, выделяем код, который хотим извлечь в переменную, нажимаем Alt+Shift+L, пишем название новой переменной. Тип выводится автоматически, название переменной подставляется в место извлечения. Аналогично можно вытащить фрагмент кода в функцию с автовыводом типов входных параметров и результата.


бывают такие моменты, когда после 30 секундного "взрывного" редактирования вы как-будто "просыпаетесь"

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


Мне кажется, именно в примерах со статически типизированными языками Vim наиболее наглядно проигрывает хорошим IDE, а для чего-то типа Python/JS/HTML/CSS или конфигов, конечно, он подходит лучше. С развеиванием разоблачения №5 я лично не согласен: программирование происходит в голове, а написание кода — это лишь небольшая промежуточная стадия между придумыванием кода и запуском его. Улучшать стоит то, что занимает основную часть времени. Если удалось ускорить какую-то операцию в 10 раз, это здорово! Но если она выполняется, скажем, раз в час и занимала 100 мс, а теперь 10 мс, тогда как непосредственно алгоритм отрабатывает по полминуты… это больше похоже на преждевременную оптимизацию ради оптимизации. Вот к скорости набора кода у меня такое же отношение.

Для статически типизированных языков к Vim можно, к примеру, прикрутить внешние средства рефакторинга, хотя в случае, собственно, Java, где невозможно непредсказумое изменение синтаксиса и идеоматики языка, а IDE — тщательно «вылизаны» на предмет соответствия практике кодирования и рефакторинга, за ними уже не угнаться. В случае C/C++ — уже сомневаюсь.

Это больше похоже на хвост, виляющий собакой. Может, логичнее в существующие мощные IDE, которые синтаксически и семантически «понимают», что в них пишут программный код, а не набор букв и слов, так вот, в эти IDE прикрутить Vim-like управление? Собственно, это уже сделано, о чём и сам автор статьи упоминает. Всё ж как ни обвешивай текстовый редактор плагинами, он от этого IDE не станет. Будет просто редактор с кучей костылей, потому что он работает не с языком, а с текстом, не с проектом, а с набором файлов.


К слову, буквально на днях обнаружил, что Eclipse CDT понимает даже перегруженные операторы, и по F3 позволяет перейти к их определению. Учитывая, что выбор правильной реализации оператора жёстко привязан к типам аргументов, я не представляю, как эту задачу можно выполнить в Vim. Ну вот есть конструкция вида cout << someObj << endl;. В эклипсе я встаю курсором на << и жму F3, попадаю на реализацию этого оператора, могу прочитать и понять, что там не так. Этот оператор может быть реализован в стандартной библиотеке (за пределами проекта вообще), в сторонней библиотеке, в моём коде; может быть внутри класса, может быть свободной функцией. Выглядит он везде одинаково, <<, как же найти искомый? QtCreator, например, не умеет (пока) находить такие определения. В результате, перегрузки для Qt'шных типов найти либо сложно, либо нереально. А ведь возможность быстрой навигации по коду — это именно то, к чему апеллирует автор. И для программиста Vim именно эту возможность не предоставляет. Он даёт лишь быструю навигацию по тексту, которая довольно бесполезна, ведь программа состоит из множества файлов, классов, функций и библиотек, которые Vim не понимает.


Я пишу все эти аргументы уже не первый раз, потому что в каждой статье от Vim-евангелистов пишется про рай для программистов, тогда как по факту это является неслабым таким преувеличением, мягко говоря. Стоило бы говорить о редактировании небольших текстов типа конфигов или ридмишек, тогда совершенно с этим соглашусь, ибо везде у меня Vim стоит редактором по умолчанию, и это первое, что я ставлю на минимальную систему. Пробовал и Emacs около года (даже как Jabber-клиент!), но в итоге надоело аккорды наигрывать. А фанатичность вообще до добра не доводит.

а для чего-то типа Python/JS/HTML/CSS или конфигов, конечно, он подходит лучше.

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

В идеале, чтобы дискутировать в этой теме адекватно, надо иметь хорошее знание и опыт Вим и ИДЕ. И даже пару раз в подобных темах возникало желание вим-таки освоить. Но потом понимаешь что это все эмоции и тратить время просто чтобы попытаться кому-то что-то доказать уже по возрасту не подходит.

В том и проблема, что Vim не масштабируется. На малых файлах это прикольное и «эффективное» (а скорее, «эффектное») копошение уровня «смотрите, как я умею!», на чём-то более крупном и сложном уже борьба с инструментом. Фанатизм и привычка использовать один инструмент мешают более конкретно очерчивать круг применимости, и это вполне естественно для большинства, ибо лень переучиваться или просто пробовать что-то новое, где не хватает чего-то привычного (а любые плюсы уже не ощущаются после этого).


Попробовать и освоить Vim однозначно стоит, особенно, если вы используете Linux. Для удалённого редактирования или локального в tmux/screen/tty, например, ничего лучше не найти. Просто это не замена для IDE, а совершенно отдельный параллельный инструмент для других задач, слабо связанных с программированием.

Думаю, что основная причина «нелюбви» новичков к vim связана с тем, что они уже привыкли неосознанно работать со своим редактором. Например, неосознанным является перенос руки с клавиатуры на мышку и обратно. Поэтому им сложно представить чем же лучше перемещать курсор с помощью hjkl. Почувствовать разницу можно только тогда, когда человек сможет так же неосознанно (на полном автоматизме) перемещать курсор и делать другие действия.
Зачем мне на клавиатуре вообще хоть когда-нибудь может потребоваться перемещать курсор с помощью неочевидных hkjl, если у меня есть специализированные клавиши управления курсором с очевидными стрелочками?
Как только научитесь «слепому десятипальцевому», так сразу и поймете зачем.
При быстрой слепой печати перемещение по тексту вообще не используется. Мимо. Следующий вариант?
При быстрой слепой печати перемещение по тексту вообще не используется

Это правило такое?

А при быстром слепом серфинге с элементами быстрой слепой печати?
А тут всё равно используется как минимум Esc, который уже выпадает из вашей волшебной десятипальцевой картины мира. А если модифицировать текст захотите, там, опечатку исправить — ещё и Del или BS, которые тоже выпадают. И перевод строки выпадает вообще-то.

Десятипальцевый метод — красивая конечно идея, но чересчур утопичная, ни одна реальная ситуация в неё полностью не вписывается.

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

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

Тоже ошибаетесь.

Судя по последнему вашему ответу, вы совершенно не знакомы с редактором Vim, а основная цель вашего разговора — поставить недалеких пользователей на путь истинны!

Мне такие монологи не интересны. Удачного программирования!
Судя по последнему вашему ответу, вы совершенно не знакомы с редактором Vim, а основная цель вашего разговора — поставить недалеких пользователей на путь истинны!

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

И я честно надеялся, что у вас всё-таки есть вменяемые аргументы.
И я честно надеялся, что у вас всё-таки есть вменяемые аргументы

Проблема в другом, у меня нет времени приводить и обсуждать мои вменяемые аргументы с каждым первым хейтером Vim, знакомым с этим редактором на уровне «прочитал статью на хабре». Познакомьтесь с ним поближе, а потом уже можно будет поговорить о чем то конкретном.
Я же написал, вы поймете (скорее всего почувствуете) разницу только если доведете навигацию в vim до автоматизма. Тогда ваш мозг и мышцы руки заметят разницу во времени. Будете знать что быстрее и удобнее навигация с помощью hjkl чем переносить руку на стрелки LEFT/RIGHT/UP/DOWN или на мышку.
Знаете, аргумент «а ты сначала попробуй и тогда поймёшь» мог бы со мной сработать лет в пятнацдать, но сейчас мне тридцать три и он уже давно не работает. Мне нужно сначала иметь надёжное обоснование, зачем мне это может быть нужно — тратить время на что-то с неочевидным результатом, и уж если оно меня удовлетворит, возможно, я приму решение заниматься этим.

А люди, которые вот этого не понимают, и продолжают настаивать на том, что я должен сначала научиться, а потом уже решать, надо мне это было или нет — вот они-то как раз и есть "#?@! придурки" из заголовка статьи. По странному совпадению, таких очень много среди адептов vi.
Мой аргумент — увеличится ваша эффективность. Вы сможете выполнять работу с наименьшей затратой времени и усилий.
Это достигается тем, что навигация до определенного места в файле:
— с hjkl — достигается, к примеру, за 700мс.
— с переносом руки на мышку, перенести курсор, кликнуть, вернуть руку обратно — достигается за больше 1сек.

Лично я чувствую разницу в 300мс.
НЛО прилетело и опубликовало эту надпись здесь
Нет конечно же. Это только пример. Я хотел сказать, что в большинстве случаев работа c hjkl и других горячих клавиш идет быстрее, чем с мышкой.
Я не чувтсвую. Я не использую мышку для большого числа задач… но возможность крутить веб-страницу колёсиком — это очень удобно и я этим активно пользуюсь. Для этого я готов переносить туда руку.

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

вы бы еще привели пример с играми, где WASD удобнее чем hjkl. :)
Естественно скролить страницы мышкой удобнее и быстрее. :)

Я вообще часто работаю не сидя, а расхаживаю взад-вперёд с планшетом (не электронным, бумажка на деревяшке с прищепкой и карандаш).

Интересна ваша мотивация вступать в дискуссию по поводу vim если редко набираете текст.
Потому что ваши аргументы: если я буду использовать vim, я буду продуктивнее. Я утверждаю, что не буду, и вдобавок прошу объективных доказательств того, что кто-то реально стал эффективнее.
Естественно скролить страницы мышкой удобнее и быстрее. :)

Не согласен. Скролю страницу с помощью v/c (вниз/вверх), это удобнее и быстрее, ибо палец не устает на каком нить пикабу.
Наверно удобнее если только скролить, но что касается лично меня, то я обычно не только скролю но и перехожу по ссылкам нажимая на них мышкой, а на macbook так вообще трекпадом пользуюсь так как плавная прокрутка приятнее для глаз чем «дергание» (например листание c помощью jk на facebook). :)

В общем, каждый выбирает для своей работы оптимальный инструмент.
Я про скролинг мышкой, не про переход по ссылкам. Для перехода по ссылкам есть другие команды.
>>>Скролю страницу с помощью v/c (вниз/вверх), это удобнее и быстрее, ибо палец не устает на каком нить пикабу.

Кстати, space/shift+space
Если уж настолько не нравятся PgUp/PgDown.

Конечно, вопрос привычки. Но тут именно *привычка выходит на первый план*, что при использовании vi/vim и vi-style навигации, что использовании IDE и notepad++ с соответствующей навигацией.
Кстати, space/shift+space

Брр… А чего сразу не Ctrl+Alt+Num2? )) v/c поудобнее будет.
Конечно, вопрос привычки

Дело не привычки, дело «слепого десятипальцевого». Вы либо держите руки (руку) на «стартовой позиции для набора», либо не держите.
А чего сразу не Ctrl+Alt+Num2? )) v/c поудобнее будет.

Передергивать только не надо. Одна большая клавиша или комбинация клавиш.

Дело не привычки, дело «слепого десятипальцевого». Вы либо держите руки (руку) на «стартовой позиции для набора», либо не держите.

Владею. Держу. И, внезапно, space таки под руками, причем под обеими сразу.
И если мне понадобилось отвести от клавиатуры левую руку, под которой v/c, то правую никуда переносить не надо, т.к. space прекрасно жмется любой рукой, равно как и shift.
И мне во время чтения условного пикабу будет комфортнее не держать руки готовыми для набора стены текста, а подносить произвольную руку к клавиатуре и тыкать самую большую и близкую клавишу. Собственно, почему я говорю про привычку. Мне удобнее одно, Вам — другое. Спорить можно долго, равно как и призывать друг друга попробовать чужой вариант.
Передергивать только не надо

Это была шутка.
Одна большая клавиша или комбинация клавиш

v/c ближе к «стандартному положению рук при вводе для слепого десятипальцевого», нежели Shift+пробел.
будет комфортнее не держать руки готовыми для набора стены текста

При чем тут набор стены текста? Позиция руки для слепого десятипальцевого удобна не только для набора текста.
v/c ближе к «стандартному положению рук при вводе для слепого десятипальцевого», нежели Shift+пробел.

Стесняюсь спросить, а где у Вас в «стандартном положении [...]» находятся большие пальцы рук?
Мне кажется, что таки над пробелом. Так что, по большому счету, подходы равноценны.

Позиция руки для слепого десятипальцевого удобна не только для набора текста.

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

Совершенно так, но меня больше смущает shift. В общем да, это конечно дело вкуса.
Но вот у меня не выработалась привычка

Возможно, не исключаю.
9732740 вот тут даже интереснее. Я говорю именно о результатах подобных исследований, вот они были бы способны меня убедить.
Допустим, я без остановки пишу код и переношу руку на мышку каждые 5 минут, что занимает на 300мс времени больше. Это 12 переносов в час. 96 за рабочий день, но округлим до 100. В году примерно 250 рабочих дней и 25000 переносов руки на мышь. Если я пойду работать программистом в 25 лет и выйду на пенсию в 65, я за свою жизнь сделаю миллион переносов руки и потрачу на это 300 тысяч секунд. То есть 84 часа. При этом, я буду совершенствовать свой навык попадания мышью в течение всей жизни в разных программах, а не только в редакторе текста.

Чтобы получить хоть какой то профит, я должен потратить на изучение сочетаний клавиш, настройку плагинов, перенос конфигов и т. д. менее 80 часов за всю жизнь, отказавшись от всех преимуществ современных IDE или тратя время на переключение на них. Сомнительное преимущество.
hjkl были придуманы не потому, что они быстрее или удобнее, а потому что в некоторых терминалах вообще отсутствовали стрелочки. Не забывайте когда vi/vim были созданы. Да и в документации так и написано.

Ничего сакрального в hjkl, кроме того, что они есть везде, где вообще терминал поддерживает алфавит — нет.

P.S. Кстати, если бы думали про удобство навигации стрелочек, могли бы придумать какой-нить asdw.
Кстати, если бы думали про удобство навигации стрелочек, могли бы придумать какой-нить asdw

В чем удобство полностью менять положение левой руки для пары сдвигов курсора? Ну разве что для людей, которые не представляют себе сдвиг курсора любым способом, отличным от стрелочного.
Вам уже все объяснили 3 раза.
В вим редактирование текста ГОРАЗДО быстрее и удобнее.
И, да, пока не попробуешь сам, естественно, разницу не поймешь.
Каких именно доказательств вы хотите и как кто-то может вам их предоставить?
Снять видео?
Попробовать тут недостаточно. Я два года использовал vim в режиме «insert->ввод текста->esc->:wq». Как-то не очень понравилось.
А зачем вы два года это делали?
Мне бы тоже не понравилось.
Вот вам кейс примерно такого же использования. Я, например, программирую в IDE. Что происходит, если после переноса на удалённый компьютер, до которого у меня есть только ssh, скрипт кидает случайно пропущенное исключение? Скажем, случайно указаны неправильные ключи вызова какой-нибудь рабочей программы?

vim align_all.py -> правим ошибку -> :wq

vim всё же удобнее, чем nano (подсветка синтаксиса, автоинденты), опять же стоит везде, где можно. Но осваивать тонкости управления и настраивать гору плагинов я ради редких мелких правок не готов.
Ну так вим в вашем случае ни при чем, наоборот, дал вам некоторые удобства.
Могли бы и научиться за два года другим командам, их не так много на самом деле.
Я вот сумел настроить kitty и организовать работу так, что все мои линукс дотфайлы (не только вим) загружаются при ssh логине на хост. И я без проблем имею везде одинаковое, настроенное окружение.
Несколько команд ничего не изменят. Если использовать в основном режим ввода, то это будет esc -> команда -> i, или даже esc -> v -> выделение текста -> команда -> esc -> команда -> i. И это намного неудобнее, чем обычные редакторы.
1. Ну если так, то можно вообще не выходить из режима редактирования, а по тексту перемещаться стрелками.

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

2. Команды эффективны. Вам все это было не надо, т.к. вим для вас был вторичным инструментом, или по другим причинам. Я вам не смогу объяснить, почему для меня он лучше. Все, что я написал — мой субъективный опыт, у вас он другой.

3. Если используете firefox — поставьте vimium, поймете разницу между мышиным интерфейсом и командами, и увидите, что быстрее.
Потому, что эта парадигма эффективнее.

Доказательства, исследования?

поставьте vimium, поймете разницу между мышиным интерфейсом и командами, и увидите, что быстрее

А если не увижу? Вы перестанете утверждать, что vim всегда удобнее и эффективнее, или всё-таки
Все, что я написал — мой субъективный опыт, у вас он другой.

? Если другой, то вы не можете утверждать, что «парадигма эффективнее» без объективных исследований. То есть, утверждать можете, но это уже получается пустой трёп.
Исследования?
Маразм — тратить время на объяснение очевидного.
Я не евангелист вима и не получаю профит за его распространение.
Не используете — дело ваше.
Вообще, это все теряет смысл и превратилось в холивар.
Так что откланиваюсь.
1) Звучит слегка необъективно.
3) Проблема в том, что большую часть времени я не ввожу текст в Firefox
Проблема в том, что большую часть времени я не ввожу текст в Firefox

Это фейспалм… Народ даже не хочет пытаться думать.
nano совершенно точно умеет подсветку, не уверен про автоинденты, но кажется тоже умеет
В nano подсветка синтаксиса и автоинденты достаточно давно уже.
Спасибо, не знал.
Редактирование текста?

Не знаю, когда я пишу текст в outlook или word, мне очень нравится подсветка грамматики и возможность оформления rich текстом.
Оформление текста и его редактирование — всё же сильно разные задачи. vim рассчитан на текст, который состоит из букв и цифр и прочего юникода, а Word, OO Writer и иже с ними вводят кучу дополнительных сущностей: шрифты, выравнивание, цвета, картинки и прочее такое. Я ни разу не вимофанат, но требовать от него функций, которые в нём и не предполагались, всё же некорректно.
комментарий был для alaska332, который утверждал, что именно редактирование текста в vi лучше чем везде.

Объективные замеры есть? Я месяца два назад искал, на реддите спрашивал, но ничего не нашёл.

>Будете знать что быстрее и удобнее навигация с помощью hjkl чем переносить руку на стрелки LEFT/RIGHT/UP/DOWN или на мышку.

А действительно ли перенос руки на стрелки медленнее переноса руки на esc? И на сколько микросекунд? И эти микросекунды вам реально увеличивают эффективность?
Откуда вы берет esc вообще? Почему все стараются влезть в тему даже не разобравшись с ней?
Так он в статье же. Везде. Выход обратно из режима редактирования в режим команд.

Можно разве по-другому реализовать тот подход, который там описан?
Так он в статье же. Везде

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

Вариантов от любой кнопки на клавиатуре, до педали.
Т.е. я должен сначала настроить кнопку. Педали у меня и у 99.9999999% населения нет.

Кнопка не будет среди тех, которые уже используются для набора текста — т. к. в режиме набора их функция уже определена. Ей уже сложно попасть в десятипальцевую парадигму… но положим, предложите, которую кнопку использовать?

Т.е. я должен сначала настроить кнопку

Да, либо использовать алиас Ctrl+c.
Педали у меня и у 99.9999999% населения нет.

Это ваши проблемы.
предложите, которую кнопку использовать?

Я использую Ctrl+c.
Я очень вас прошу, потратьте минуту, прокомментируйте пожалуйста 9732740 и там ещё есть комментарий со спойлером, который вроде как с околонаучными объяснениями эффекта.

Я в первую очередь хочу именно результаты объективных исследований. Потом можно будет проверять, подходит это мне или нет.
Ну, я в vi (не в vim'е, а в vi) работал лет 18 назад ещё. Почему вы решили, что я в теме не разбираюсь? Там теперь кнопку esc отменили? И как волшебный vim понимает в каком режиме вы хотите работать? Телепатически?
Почему вы решили, что я в теме не разбираюсь?

Потому что вы предпочитаете перенос руки на esc.
Там теперь кнопку esc отменили?

Там давно рекомендуется не использовать ее.
И как волшебный vim понимает в каком режиме вы хотите работать?

Так же, как и всегда, через комбинации клавиш.
>Потому что вы предпочитаете перенос руки на esc.

Нет, я предпочитаю другие редакторы. Собственно говоря, мне в принципе довольно всё-равно какими редакторами пользоваться, я не машинистка, и скорость набора (точнее, скорость переключения режимом) не является для меня ограничивающим фактором (я ещё и чай успеваю прихлёбывать по ходу дела). Кроме тех, которые «или пищат или всё портят» :)

>Так же, как и всегда, через комбинации клавиш.

Ага, я уже прочёл, что вы заменили одну клавишу на две (конгениально! Карл, одну клавишу нажимать медленно, поэтому будем нажимать две!) и на этом основании считаете всех идиотами, а себя д'Артаньяном (конгениальным д'Артаньяном!). Бывает.
Нет, я предпочитаю другие редакторы

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

У машинисток нет режимов.
и скорость набора не является для меня ограничивающим фактором

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

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

Разница в расположении, а не в количестве.
и на этом основании считаете всех идиотами, а себя д'Артаньяном

Я считаю многих здесь отписавшихся людьми, которые делают выводы на основании своих предположений, а не изучения объекта спора. Спорить с такими людьми не имеет никакого смысла, так как они не способны на какие либо объективные оценки, а лишь преследуют цель — «я прав».
>Не скачите с темы на тему. С помощью демагогии не постичь истины.

Демагогия — это у вас. Вы за меня придумали какой-то бред, а потом его успешно «опровергли». Ай, малацца!

>У машинисток нет режимов.

Верно! У машинисток нет. Сами догадаетесь почему? :)

>Скорость набора не является характеристикой какого либо редактора, это характеристика вашего умения печатать

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

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

Люди читают статью, которая, в данном случае, и является объектом спора, а не то, что вы там у себя в голове напридумывали. С вашей головой нет смысла спорить, мы её не «читали» и о том, что там у вас происходит совершенно не в курсе. Не заставляйте нас делать этого и в дальнейшем. И изучите уже предмет спора (статью), мы её обсуждаем, а не вашу голову.
Вы за меня придумали какой-то бред, а потом его успешно «опровергли».

Пример придуманного мной бреда, пожалуйста
Сами догадаетесь почему?

Я не изучал историю становления машинописи, не могу судить на этот счет. Главное не выдавайте желаемое за действительное.
Тогда лично я совсем не вижу преимуществ

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

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

Нет, люди спорят о том, что им интересно. О статье спорят единицы.
И изучите уже предмет спора (статью), мы её обсуждаем, а не вашу голову

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

«Потому что вы предпочитаете перенос руки на esc.»

>Я об этом не спорю, не нужно со мной это обсуждать.

Зачем же вы это делаете?

>Кривой плагин, совершенно не сочетающийся с возможностями и привычками классического Vim.

Какой именно?

>Ни один мой ответ не относился к теме статьи, я отвечал только на несуразицу в некоторых комментариях.

Придумываете за оппонентов какой-то бред и потом его успешно опровергаете? А, ну-ну. Вы в этом преуспели, я вижу. Но вот отчего вы считате несуразицей то, что ни кто не в курсе на какую кнопку вы переназначили esc?

>Нет, люди спорят о том, что им интересно. О статье спорят единицы.

А с чего вы взяли, что мне (да и кому-то ещё, куда вы влезли со своим переназначением) интересно спорить о том на какую (какие) кнопки вы переназначили этот несчастный esc? Я спрашивал совершенно не об этом. Зачем мне знать, что вы что-то там под себя закастомайзили?

>В дальнейшем старайтесь понимать то, что я написал

Если хотите, чтобы люди вас понимали, ориентируйтесь на то, что написано, а не на то, что творится в вашей голове. Люди совершенно не обязаны догадываться о том, что вы имели там в виду?

По делу у вас есть что сказать? Вопросы ведь были конкретные. Можете даже заменить ваш нелюбимый esc на ваш любымый {что там у вас любимое}. Если нет, зачем вы здесь?
А действительно ли перенос руки на стрелки медленнее переноса руки на esc?

Это придуманный мною бред или ваш вопрос? Думаю второе. Так если вы задаете такие вопросы, значит вы не знакомы с редактором и рекомендациями по его использованию. Следовательно в теме вы не разбираетесь. Видимо вы еще и путаетесь в диалоге.
Зачем же вы это делаете?

Что делаю? Я сказал вам, что вы не знакомы с Vim, но пытаетесь приводить какие то аргументы, совершенно смехотворные для любого опытного пользователя редактора. Не более того.
Какой именно?

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

Началось пустословие )
Зачем мне знать, что вы что-то там под себя закастомайзили?

Затем, что в Vim для esc есть готовый и рекомендуемый алиас, который идет из коробки. Если вы о нем не знаете, значит вы не знакомы с этим редактором. Следовательно и ваш первый аргумент совершенно пустой и бесполезный.
По делу у вас есть что сказать?

А действительно ли перенос руки на стрелки медленнее переноса руки на Ctrl+C?

Думаю в разы медленее. В первом случае необходимо оторвать руку от J и увести весь локоть в сторону, во втором достаточно оторвать мизинец от A и перенести его на две позиции ниже простым сгибом пальца.
>Это придуманный мною бред или ваш вопрос?

А вы ответы совсем не читаете? Я же про придуманый бред ответил.

>Так если вы задаете такие вопросы, значит вы не знакомы с редактором

Вопрос риторический. По-моему опыту разница не принципиальная, зато позволяет не думать о «режимах»

>Совершенно любой, кроме, разве что, для emacs.

Вы их все перепробовали? Во всех возможных IDE?

>Затем, что в Vim для esc есть готовый и рекомендуемый алиас, который идет из коробки. Если вы о нем не знаете, значит вы не знакомы с этим редактором.

Не считайте других идиотами. Я ж не поленился и поставил вимы на обе две имеющиеся под рукой платформы. esc есть и работает как ему положено. Ctrl-C не работает.

>Следовательно и ваш первый аргумент совершенно пустой и бесполезный.

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

>В первом случае необходимо оторвать руку от J и увести весь локоть в сторону, во втором достаточно оторвать мизинец от A и перенести его на две позиции ниже простым сгибом пальца.

И это критично сказывается на вашей скорости работы?
А вы ответы совсем не читаете? Я же про придуманый бред ответил.

Пример придуманного мной бреда, пожалуйста

Потому что вы предпочитаете перенос руки на esc

А действительно ли перенос руки на стрелки медленнее переноса руки на esc?

Видимо эту связь вы не прослеживаете. Давайте еще раз про придуманный мною бред попробуем.
По-моему опыту разница не принципиальная

Ну вот уже и прослеживается уровень ваших знаний и опыта.
Вы их все перепробовали? Во всех возможных IDE?

Достаточно было попробовать несколько в популярных IDE, чтобы понять, на чем они все спотыкаются и будут спотыкаться.
Ctrl-C не работает

Что за платформы?
И это критично сказывается на вашей скорости работы?

Естественно. Мне не удобно гонять рукой над клавиатурой, это отвлекает и усложняет процесс набора.
Вмешаюсь в вашу дискуссию с одной небольшой ремаркой. Ctlr-C это не тоже самое, что ESC. То же самое, что ESC это из коробки Ctrl-[. Эту комбинацию, впринципе и нажимать удобнее. Особенно, если CapsLock, как положено, замаплен на Ctrl.
Ctlr-C это не тоже самое, что ESC

Никто не утверждал обратное.
Эту комбинацию, впринципе и нажимать удобнее

Кому как, у меня capslock это смена раскладки.
Вы раньше написали, что используете Ctrl-C вместо ESC. Я только хотел сказать, что эффект похож, но он таки разный и если вы используете Ctrl-C, который в vim из коробки, то у вас периодически будут странные проблемы.

Менять раскладку CapsLock, если пользуетесь вимом несколько странно. Посчитайте сколько раз в день вы меняете раскладку и сколько раз жмёте Ctrl. Скорее всего перевес в пользу второго. Для того, чтобы нажать Ctrl нужно скрючить мизинец и как правило подвинуть кисть. Чтобы нажать CapsLock этого не нужно. Также из тех же соображений имеет смысл перемапить Enter на правый Ctrl.
если вы используете Ctrl-C, который в vim из коробки, то у вас периодически будут странные проблемы

Никаких странных проблем за много лет использования не наблюдал.

Менять раскладку CapsLock...

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

Enter вообще не юзаю, как правило (в очень редких случаях). Обычно пользуюсь o и O.
Ctlr-C просто переходит в normal mode. Если на выход из insert mode какими нибудь плагинами навешаны какие-нибудь хуки, то при нажатии Ctrl-C vim их проигнорирует, а при нажатии Esc или Ctrl-[ запустит.

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

Что касается Enter — он действительно используется нечасто, поэтому у меня по нажатию Enter реально отдаётся сигнал Ctrl. А чтобы нажать Enter надо зажать Ctrl-M. Очень удобно.
Если на выход из insert mode какими нибудь плагинами навешаны какие-нибудь хуки

Не пользуюсь таким.
Но потом я решил, что удобнее будет сделать CapsLock контролом. За 3 дня привык

У меня Ctrl под капсом, не вижу смысла их менять местами.
У меня под капсом Shift и только под шифтом Ctrl. И так на абсолютном большинстве клавиатур, с которыми я встречаюсь. Shift, которые непосредственно под CapsLock нажимать мизинцем норм. А вот Ctrl уже сложно.
У меня так же. Да нет, не особо сложно, тем более Ctrl я пользуюсь реже, чем переключаю раскладку.
Вы, когда жмёте левый Ctrl, убираете указательный палец с клавиши f?
Мизинец же.
Вы жмёте Ctrl мизинцем, в этом сомнений нет, но когда вы это делаете, приходится ли вам убирать указательный палец с буквы f? На ней пимпочка, кстати :)
Нет конечно, зачем? Думаете у меня мизинец сантиметровый?
Когда я печатаю, руки у меня лежат на столе, а пальцы на home row. И вот, мне надо нажать Ctrl. Чтобы нажать его, не отрывая рук от стола, мне надо снять указательный палец с буквы f. Иначе я нажать Ctrl мизинцем никак не могу. А если держать указательный палец на f, то, чтобы нажать Ctlr надо поднять руку со стола.
Либо у нас сильно разные клавиатуры, либо сильно разные пальцы. Нажимаю любую клавишу из левой панели (tab, caps, shift, ctrl) без отрыва пальцев от стола и указательного от f.
А напишите пожалуйста модель клавиатуры, которой вы пользуетесь. У меня Microsoft Natural Ergonomics 4000 и Kinesis Freestyle 2.
А черт знает, стандартная клавиатура от ноута ASUS. Думаю они у этой фирмы все одинаковые, можете взглянуть на любой ноут.

Учтите, что для нажатия Ctrl+c отрывать указательный от f строго обязательно.
Это строго обязательно потому, что им надо нажать C :). Я тут перечитал нашу беседу и заметил, что вы нажимаете любую клавишу из tab, caps, shift, ctlr не отрывая от стола пальцев. А я имел в виду, что отрывать приходится нижнюю часть ладоней. Ту, откуда запястья начинаются.
У асусов клавиатура вроде более менее стандартная. Сейчас пишу с самсунга, по моему там примерно такая же должна быть.
Любопытно как это у вас получается. Завтра найду кого-нибудь, попрошу мои руки на клавиатуре сфоткать, сравним.
Это строго обязательно потому, что им надо нажать C

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

Нет, и запястье не отрываю, и локоть.
Любопытно как это у вас получается

Может пальцы особо длинные? Не знаю. Я думал это у всех так.

Основная проблема Microsoft Natural Ergonomics 4000 — большой размер и тяжёлый ход клавиш. Большой размер не решить никак, а вот насчёт того, что клавиши нажимать тяжело — тут есть новая модель со слим клавишами — Sculpt Ergonomic Desktop. Я хотел взять её, но потом решил попробовать Kinesis Freestyle 2.


Первые пару дней рукам было некомфортно, даже ладонь ныла немного. Кроме того, я постоянно промахивался по клавишам Alt и Winkey. Потом привык.


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


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


Думаю как-нибудь попробовать Sculpt Ergonomic Desktop — чисто из любопытства, но вообще на мой взгляд следующим шагом должна быть Ergo Proxy.

Хм, а зачем Caps мапить на Ctrl, который рядом?
У меня Caps — смена раскладки — это, реально, удобно.
Это удобно, если только вы жмёте Ctrl реже, чем меняете раскладку. Я в другом комментарии подробнее раскрыл.
НЛО прилетело и опубликовало эту надпись здесь
С русской раскладкой похожие проблемы. Решаются set keymap=russian-jcukenwin и переключение языка в insert mode по Ctrl-^
>Видимо эту связь вы не прослеживаете. Давайте еще раз про придуманный мною бред попробуем.

А вы не пытайтесь прослеживать связи из своей головы, вы их из действительности прослеживайте. Действительность она отличается от того, что вы придумали. Вы перечитайте про действительность. Попробуйте.

>Ну вот уже и прослеживается уровень ваших знаний и опыта.

Вы всерьёз полагаете, что у меня недостаточно опыта в движении руками над клавиатурой? Я, конечно, не престидижитарор, но слепым десятипальцевым последние 15 лет пользуюсь (исключая пару месяцев, когда из-за травмы пальца пришлось перейти на девятипальцевый).

>> Ctrl-C не работает
>Что за платформы?

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

>Достаточно было попробовать несколько в популярных IDE, чтобы понять, на чем они все спотыкаются и будут спотыкаться.

И это страшный секрет поклонников вима? Ах, ви такие загадошные!

>Мне не удобно гонять рукой над клавиатурой, это отвлекает

Ну, а на остальных редакторах, это давно перешло в разряд автоматической моторики, не осознаётся и не отвлекает. Ещё один повод не использовать программу, работа в которой требует настолько сильного сосредоточения и напряжения воли, что даже движение руки отвлекают. :)
Хм… простите, а что случится с набором текста 'tree'?
Не понял вашего вопроса.
Хм… неправильно прочитал кусок вашего текста: «Там давно рекомендуется не использовать ее.» — ee было воспринято как альтернатива клавише Esc.

PS в русском языке существует замечательная буква ё… почему бы её просто не использовать?
в русском языке существует замечательная буква ё… почему бы её просто не использовать?

Экономя время на перетаскивание пальца с начальной позиции для слепого десятипальцевого, я к концу дня успеваю за сэкономленное прочитать лишнюю страницу книги *сарказм* )
Сэкономленное время, потраченное вами на комментарии к этой статье можно было потратить на чтение целой главы книги. Так что рекомендую задуматься над небольшим усложнением своей задачи. Благо буква ё редкая гостья в тексте (не так уж много слов её содержат).
Вы же набираете 1цу? А буква ё совсем-совсем рядом.

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

Книги не дадут мне опыта реального общения.
Вы же набираете 1цу? А буква ё совсем-совсем рядом

Зачем, когда еще ближе клавиша capslock и ctrl?
> Книги не дадут мне опыта реального общения.

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

т.е. когда вы набираете в тексте «1» вы жмёте капс или ctrl?
Комменты на хабре — в общем-то тоже

Вы глубоко ошибаетесь.
т.е. когда вы набираете в тексте «1» вы жмёте капс или ctrl

В тексте я пишу 1 куда чаще чем ё, которую я не пишу никогда. Все проще чем кажется.
> Вы глубоко ошибаетесь.

Скорее распространяю своё мнение на остальных.

> В тексте я пишу 1 куда чаще чем ё, которую я не пишу никогда. Все проще чем кажется.

простите, что тогда значит ваша фраза «Зачем, когда еще ближе клавиша capslock и ctrl? » в ответ на «Вы же набираете 1цу? А буква ё совсем-совсем рядом»?

PS то, что в нашем печатном языке принято гнобить букву ё — вовсе не повод делать так же лично. Эта буква просто замечательная и несёт совсем другой звук, чем е. Ну вот вы попробуйте авто-доводчик вашего чтения и прочитайте все те места, где должна быть ё именно так, как вы пишите! Например «Все пропало, Шеф!» будет великолепным образчиком полного потери смысла из-за неверной буквы.

А в виме неудобно использовать ё :)

Перенос левого мизинца на Esc делается без отрыва кисти от поверхности в отличие от переноса всего правого предплечья на блок стрелок (и тем более на мышь).
Это смотря что за клавиатура. Сейчас на маковской проверил — нет большой разницы. Тем более, я, когда печатаю, не прижимаю кисти к поверхности. Но кисть за esc'ом всё-равно движется даже на маковском огрызке. А на полноразмерной клавиатуре мне где-то два сантиметра не хватает, чтобы _без_отрыва_кисти_от_поверхности_ дотянуться до esc. Даже до ё, которая под esc приподнимать кисть слегка надо.
Заблуждение про эффективность.
Дело в том, что vi разработан под другое расположение клавиши ESC.
Раньше это было, действительно, эффективнее.
На современных клавиатурах — приходится отрывать пальцы от прочих клавиш, при нажатии ESC даже мизинцем.
image

P.S.:
Попробовал нажимать мизинцем на классической (не ноутбучной) клавиатуре.
Если вы умудряетесь попадать ESC мизинцем — то вы видимо специально ради vi тренировались.

НЛО прилетело и опубликовало эту надпись здесь
Например перемещение курсора клавишами hjkl сделано не потому, что это удобнее, а потому что стрелок на на многих клавиатурах тех времен просто не было


Это удобно. Внезапно:

Какие клавиши используются в 3D-шутерах, которые появились в век, когда стрелки уже сущестовали? Как правило это и стрелки и asdw

Самая большая грусть с vim — это ESC, который раньше находился там, где сейчас Tab или CapsLock.

Кстати, многие любители vim переназначают мало нужный CapsLock на ESC.
НЛО прилетело и опубликовало эту надпись здесь
Переназначил ESC на df. Удобно.
НЛО прилетело и опубликовало эту надпись здесь
Научился и не понял.
Как в ваш «слепой десятипальцевый» вписался процесс снятия рук с «основной позиции набора» и перенос правой (или левой?) на клавиши со стрелками?
Вопрос странный. В процессе набора текста мне не нужно двигать курсор. В процессе работы с блоками/перемещении мне не нужно держать пальцы на шишечках. Т.е. это два редко пересекающихся процесса у каждого из которых свое положение правой руки. Нет частого переключения контекста :) Т.е. проблема надуманная. Примерно так же как проблема дотянуться до Esc в виме (если конечно не использовать Ctrl-[)
Примерно так же как проблема дотянуться до Esc в виме

Еще один… Ясно, понятно. Не буду тратить свое время на вас.
Еще один что? Не знающий вима как Вы? Предположу, что нас тут таких, дебилов, много. Не стоит опускаться.
Еще один что?

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

Очень много, это даже как то обидно, что комьюнити хабра постепенно скатывается на уровень «не читал но осуждаю».
Чего ясно и чего понятно? До Esc дотянуться нелегко, такая проблема есть. Как решить эту проблему человек знает. О чём вы?
Зачем мне на клавиатуре вообще хоть когда-нибудь может потребоваться перемещать курсор с помощью неочевидных hkjl, если у меня есть специализированные клавиши управления курсором с очевидными стрелочками?

Научился и не понял.

Как в ваш «слепой десятипальцевый» вписался процесс снятия рук с «основной позиции набора» и перенос правой (или левой?) на клавиши со стрелками?

Вопрос странный. В процессе набора текста мне не нужно двигать курсор. В процессе работы с блоками/перемещении мне не нужно держать пальцы на шишечках.

Мне обязательно нужно все разжевывать?

Человек, научившийся (по его словам) слепому десятипальцевому не понимает, зачем использовать hjkl для серфинга по документу, ведь набор текста и серфинг это (как он считает) не пересекающиеся сферы. Другими словами набор с использованием слепого десятипальцевого кода программы у данного человека будет выглядить так:
1. Положил руки на asdf jkl;
2. Набрал два слова
3. Положил правую руку на стрелку
4. Поменял позицию курсора
5. п. 1
Теперь ясно и понятно о чем я?
Теперь ясно. Но мне показалось, что он мышкой хочет позицию курсора менять.
Это не меняет дело, будете вы мышкой позицию курсора менять или стрелками, в любом случае модальность в этом случае будет куда более сложной и неудобной.
Я начал пользоваться вимом, когда необходимость переносить руку на стрелки по нескольку раз в минуту начала меня бесить. Точно так же бесит необходимость перекидывать руки на мышь. Бесит переключение контекста.

Пока оно не бесит, модальность писец неудобная, это правда. Да и когда оно начинает бесить — путь наименьшего сопротивления — внедрение сочетаний клавиш. Это верная дорога к локальному оптимуму из которого нет простого выхода :).

тоже самое можно сказать и о адептах vi — как только вы научитесь переносить руки с клавиатуры на мышку — вам откроется разнообразие мира (редакторов) а доведя это до автоматизма вы узнаете что некоторые вещи можно делать быстрее с мышкой нежели с hjkl
Абсолютно согласен. У меня доведено до автоматизма и то и другое, и могу сказать что есть моменты где мышкой пользоваться удобнее, но фишка еще в том, что ваш мозг (неосознанно) переключается в оптимальный режим что способствует невероятной продуктивности.
Неожиданно:
мышь является стандартом де-факто уже более 20 лет.

Так что все современные адепты vi/vim начали освоение текстовых редакторов как раз именно с использованием мыши.
Так что все современные адепты vi/vim начали освоение текстовых редакторов как раз именно с использованием мыши

Что говорит не в ее пользу.
Я очень часто пользуюсь vi в putty, и мне очень удобно выделять большие участки текста и вставлять их именно мышкой. Особенно если я это делаю между разными окнами.
И правильно делаете. Всему свое место и время.
Периодически у клиентов на серверах добавляю наш скрипт в крон, и иногда попадается vi в качестве стандартного редактора, каждый раз приходится вспоминать как сделать так чтобы ничего не сломать. И закрыть с сохранением.
Не совсем по теме, но такой вот вопрос/замечание:
работать с русским текстом очень неудобно, потому что точка в двух раскладках находится на разных местах (и др., менее значимые нюансы). Как кто вышел из положения?
Там куча решений этой проблемы. Сам поставил мапинг для русских символов на английские аналоги.
— там — в Интернете?
— мапинги — такого типа «map й q»?
— что вы делаете, когда вместо поиска по "/" повторяется предыдущее действие (потому что на русской раскладке там точка)?
— я пробовал решение с мапингами, https://habrahabr.ru/post/98393 и https://habrahabr.ru/post/175709/ Недостатки первого вроде понятны. По второму нужно привыкать к C-^ вместо обычных хоткеев переключания раскладки, в третьем нужно везение чтобы на вашей системе заработал xkb-switch (у меня на ubuntu 16.04 — не работает)

Если у кого есть дельные советы — я бы с радостью выслушал. Спасибо.
— Да
— Да
— Ничего, у меня редактор всегда в normal mode и en раскладкой
— Во втором можно выбрать другую комбинацию для переключения (уже и не помню как), сам отказался от него только потому, что привык к переключению по capslock
если не сложно, можно поподробнее про ваши настройки с русской раскладкой? Что-нибудь помимо мапингов типа «map й q» делали? Как при выходе в normal-mode включается en раскладка? Спасибо.
Если про встроенный в vim способ включения по Ctrl+6, то в командном режиме раскладка остается английской.
Если про специальные программки-переключатели, заточенные под vim (а таковых как минимум 2 отечественного производителя) — то они тоже умеют отлавливать из/в командный режим.
я вас не понял. у меня :help CTRL-^ выдаёт инфо об альтернативном файле, что ожидаемо. Где я могу почитать про «встроенный в vim способ включения по Ctrl+6»?
А вопрос мой был про конкретно ваш workflow, работающий. А то альтернативы, которые у вас не установлены, могут разочаровать нас обоих.
Ctrl+6 — стандартный способ переключения раскладки в vim.
Он встроен и запускается без каких либо дополнительных внешних модулей.

Статья на Хабре «Vim и кириллица: парочка приёмов»

set keymap=russian-jcukenwin
set iminsert=0
set imsearch=0
highlight lCursor guifg=NONE guibg=Cyan


Теперь разъяснения. В Vim есть такая штука, как lmap. Она задаёт преобразование для всех случаев, когда речь идёт о вводе символов, как части текста, но не как части команды. Так lmap учитывается при вставке, вводе паттерна поиска, после команд r и f.

Команда «set keymap=russian-jcukenwin» устанавливает кучу таких lmap, которые соответствуют обычной виндовой йцукен клавиатуре. russian-jcukenwin — это просто имя файла с маппингами. Нужный нам уже есть в стандартной поставке.

После установки keymap можно переключаться между кириллицей и латиницей нажатием Ctrl+^. При этом происходит чего и добивались: команды и шорткаты ни коем образом не страдают при активной русской раскладке. Ура!


Ничего больше не делал. При выходе из normal mode включаю en раскладку сам автоматически (мозги привыкли уже, но это делать не обязательно).
Привыкайте к Ctrl-^.
Описывается обычное для маргинальных сообществ «это великолепно не потому, что это лучше, а потому что это есть у нас».

Во-первых, текстовые редакторы давно уже никому практически не нужны. Для ворда в своё время нашли хорошее название «текстовый процессор». То есть ввод текста — действительно только эпизод в общем объёме работ. Но остальное, кроме непосредственно набивания текста — это вовсе не изысканные текстовые команды, а уйма всего, выходящего за рамки набора буковок и изуверских поисков. Для программиста — это IDE, отладка, просмотр ссылок, связанных классов, наборов атрибутов и множество всего иного, что делать клавиатурными комбинациями просто смешно.

Что же касается мышки, то совет работать одновременно мышью и клавиатурой — совершенно правильный. Как именно — вопрос индивидуальный, но вот я (подсмотрев у старших товарищей) левой рукой работаю мышью, в то время как правая — на клавиатуре. Никаких переносов рук, потери времени и внимания. Ещё из индивидуального — правильная мышь пятикнопочна. Клик по колесу — ^V, две доп.кнопки — ^C и ^X. Вот тогда количество переключений между клавиатурой и мышью падает сильно и не приходится искать дурацкие возможности «а как бы вставить hello в любое место текста». Но — повторюсь — это индивидуально. Хотя и очень, очень удобно.
левой рукой работаю мышью, в то время как правая — на клавиатуре. Никаких переносов рук, потери времени и внимания

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

Но зачем, в этом случае от скорости набора зависит всё гораздо меньше, гораздо важнее скорость поиска, чтения и анализа? Даже если мышка медленнее (что неверно, судя по всему — она на самом деле быстрее, т.к. непосредственное позиционирование с визуальным подтверждением, в отличие от клавиатуры) — скорость попадания в нужное место в тексте не важна.

А чем vim уменьшает скорость поиска, чтения и анализа?

Заставляет тратить время на изучение. Пока не изучил — значительно медленнее всё, т.к. отвлекает на себя внимание. Если я захочу перейти на vim, в лучшем случае я несколько месяцев буду работать с резко сниженной эффективностью, которая потом, возможно, плавно вернётся на прежний уровень, а может и не вернётся — ни у кого объективных доказательств эффективности нет. И тогда получится, что я несколько месяцев мучился зря.


А мышкой я и так владею.


Кстати, не факт и что Delphinum и другие апологеты реально быстрее. Уже несколько оснований полагать, что это им самим так кажется, а если замерить по часам, окажется, что на самом деле vim медленнее.

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

К счастью, для освоения vi, в отличие от слепого десятипальцевого не нужно столько времени. Нет там никаких месяцев падения производительности. Проходите vimtutor (за 20 минут) — и базис заложен. Производительность теряется на несколько дней всего.

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


Тут лет пять назад очень сильно пиарился shahidjanyan, автор "соло на клавиатуре". Всё пытался спорить, вот мол, какие вы компьютерщики, я быстрее вас текст набираю. Слился, теперь в рид-онли, не нужен он тут оказался со своим десятипальцевым методом и гнилыми типа-психологическими разливами воды с каплей смысла в комментариях. Видно было, что печатает человек гораздо быстрее, чем придумывает какие-то новые мысли. Прямо как в анекдоте: печатаю 1000 знаков в минуту, такая фигня получается!


А по поводу 20 минут и нескольких дней — разрешите вам не поверить. Я пробовал, мало. Три месяца — вот эта оценка похожа на правду.

> Тут лет пять назад очень сильно пиарился shahidjanyan, автор «соло на клавиатуре».

Шахиджаняну уже 76 лет. Наверное его больше интересуют внуки, а не ваша скорость набора текстов.

> Машинисткам нужна, вот их и обучайте.
Самое смешное, что машинистки нынче — это очень малоквалифицифированный труд и набирают они «зрячим двухпальцевым» методом обычно.

> Программистам не нужна точно. Дизайнерам не нужна. Админам не нужна. Музыкантам не нужна. Художникам не нужна.

Дизайнерам, музыкантам, художникам — не нужна. Так они и не типичная аудитория этого сайта. Давайте еще напишем про водителей, ВДВшников, столяров, сварщиков, моряков… — им тоже не нужна.

Серьезный админ — это не тот, что умеет картриджи заправлять, а тот, что скрипты автоматизации пишет.

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

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

Например, сегодняшний уровень развития автоматизированного перевода позволяет быть хорошим программистом, полагаясь на Google Translate. Но хорошее знание английского как оставалось плюсом так и остается.

> А по поводу 20 минут и нескольких дней — разрешите вам не поверить. Я пробовал, мало. Три месяца — вот эта оценка похожа на правду.

Вы проходили vimtutor 3 месяца?
Да там даже очень много выпившему пива больше 2 часов делать нечего.
Серьезный админ — это не тот, что умеет картриджи заправлять, а тот, что скрипты автоматизации пишет.

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


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

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


Вы проходили vimtutor 3 месяца?

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

> нет, это-то быстро, а потом надо ещё привыкнуть реально этим пользоваться

Сразу после прохождения вимтутора — НЕ НУЖНО привыкать. Пальцы сами жмут куда нужно.

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

Завязывай теоретизировать.
ПРОСТО ЗАПУСТИ вимтутор и через полчаса — напиши сюда ОБОСНОВАННЫЙ ВЫВОД.

Ещё раз, 20 команд или сколько их там — ерунда. Совершенно не в этом проблема.


Так, сравните: выучить восемь команд брейнфака можно за десять минут — вы же не скажете, что этого достаточно, чтобы на нём программировать?
Так вот vim для меня — это брейнфак. Реально. При том, что я джентушник со стажем.

Ну вы так пишете, будто мне не все равно освоите вы там вим или нет.

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

Людям свойственно путать «легко» и «просто». Освоить bf просто, а вот написать на нем что-то стоящее — трудно. Как и, например, просто научиться двигать фигуры по шахматной доске. А научиться выигрывать — трудно.
Десятипальцевый метод — это очень, очень узкоспециализированная техника, которая нужна всё меньшему числу людей. Программистам не нужна точно

Оуу… все настолько запущено (
Я освоил десятипальцевый метод в кириллической раскладке, и он действительно очень удобен.
Но вот когда я потом решил было освоить то же самое, но в asdf именно с целью упрощения набора кода, то быстро передумал. Потому как стало понятно, что не менее трети нажатий приходится на верхний ряд — тот, где цифры и спецсимволы. А туда дотягиваться ох как неудобно, и всё равно пальцы приходится отрывать от центральных клавиш.
В итоге пришёл к выводу, что десятипальцевый метод подходит только для набора текстов, но совершенно непригоден для ввода символьно-цифровой каши.
Потому как стало понятно, что не менее трети нажатий приходится на верхний ряд — тот, где цифры и спецсимволы

А почему ваш редактор сам не завершает ваш ввод?
НЛО прилетело и опубликовало эту надпись здесь
Shift+цифра. Так же, как и при любом вводе. Если некоторые символы неудобно расположены, значит нужно набирать удобно расположенные символы двумя указательными втыкая в клавиатуру?
Для цифр профи (бухгалтера и т.п.) предпочитают правый цифровой блок.

А с символами — действительно беда.

Но то, что нет пользы для программиста/верстальщика в знании английской раскладке вслепую — не согласен.

Освоил их одновременно. Не жалею о потраченном времени. Уже многократно окупилось.
Для освоения слепого десятипальцевого не нужно много времени. С правильным тренажёром (подсказка: это не «соло на клавиатуре») можно освоить буквально за пару часов. Особенно если уже есть большой опыт печати на клавиатуре «зрячим методом» и вы уже помните, на самом деле, расположение всех клавиш.

Правильный тренажёр — KeyTo или VerseQ. Вроде бы, щас они запилили даже онлайн-версию. Там не надо сначала миллион раз набирать «оло лолооллоло оллоло лол» а потом еще миллион раз «ожж жжожожо жожо», сразу идёт тренировка всех символов в комбинациях, наиболее часто встречающихся для данного языка.

И нет, я не имею никакого отношения к авторам тренажёра, и они мне даже не платят за рекламу. Просто тренажёр реально хорош :)
Мышка (обычная) позволяет серфить с помощью 3 клавиш, а клавиатуры с помощью более чем 33х. Чем больше клавиш, тем боль доступных быстрых команд.
| левой рукой работаю мышью, в то время как правая — на клавиатуре. Никаких переносов рук,
| потери времени и внимания

Бу-гагага.
Скажите еще, что вы одним пальцем тычете в кнопки с размаха. Пока другая чем-то там занята.
Что это вообще такое?
Хотя, может у вас 10 пальцев на руке.
Что примечательно — насчёт «маргинального сообщества» и ненужности текстовых редакторов никто не возразил.
> и его более молодого, всего-то пятнадцатилетнего лучшего клона & большого улучшения — vim

И его совсем юного продолжателя — neovim. В который добавлен полноценный терминал, асинхронные комманды и много других фич уже работающих или только планируемых
Во вселенной, где главная проблема программирования заключается в набирании букв в текстовом файле, vi, конечно, рулит.
Вы статью точно полностью прочитали?
Если пункт «Заблуждение №5» не прошёл мимо вашего внимания, будет интересно узнать мнение по существу.
Ну так там нет опровержения никакого. Лишь сектантское утверждение что наш способ вводить код высвобождает чакры программирования.
Ну хорошо. Из собственного опыта — мне удобнее использовать слепой набор для печати, чтобы не отрывать взгляд от экрана. И удобно редактировать текст думая о том что надо сделать, а не каким именно образом. Вся прелесть в доведении до автоматизма.
Причем раньше пользовался продвинутыми хоткеями в IDE — это тоже удобно, но vi режим есть практически везде и лично мне это удобнее.
Похоже нас обоих раздражает фанатизм.
Я в этой статье нашёл пару интересных нюансов которые не знал, но пожалуй тон статей про Вим начинает напоминать истерию вокруг веганов и вейперов.
По поводу скорости редактирования:
Согласен с тем, что на написание кода уходит не самая большая часть времени.
Как мне показалось, аргументация в статье была про то, что эту небольшую в процентном соотношении часть работы можно делать максимально удобно, сосредоточившись на коде — записывая, редактируя, стирая — параллельно с обдумыванием не обостряя внимание на инструменте, так как обдумывают какие-то вещи чиркая на бумаге карандашом.
НЛО прилетело и опубликовало эту надпись здесь

В статье косяк видимо, после ctrl+r надо нажать "-" (минус) и строка вставится.

НЛО прилетело и опубликовало эту надпись здесь
Ну и как с таким отношением к точности агитировать к переходу на vi/vim?
А здесь же даже толком не поймёшь, в чём ошибка, да и нагуглить решение сложнее.

Я не знаю почему в статье не точно написано, может быть в vi это и сработает, но в vim работает с "-". Вообще я бы не рассматривал эту статью как сборник рецептов для старта изучения. Она просто показывает какие "крутые штуки" можно делать с вимом. Что-то типа "учи программирование делай игры".


Ещё большой недостаток перехода состоит в том, что для более-менее нормальной работы потребуется выучить сразу много хоткеев, из-за чего первые «несколько недель», как пишет автор, производительность сильно упадёт, а работать-то надо прямо сейчас.

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


Плюс команды в vi могут быть сильно деструктивные — промах по клавише может выполнить совершенно другое действие.

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

После Ctrl-r надо набрать название регистра (что-то вроде именованного буфера обмена), из которого вставлять текст. В данном случае "правильнее" набрать двойную кавычку (регистр по умолчанию), т.е. <Ctrl-r>";<Esc>. Или можно <Ctrl-o>p;<Esc>.

НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
В Vim можно поступить проще:
* Вырезание: cw — 2 кл.
* набор текста
* Новая строка над текущей — Shft-o — 2 кл.
* набор текста
* Вставка вырезанного — y — 1 кл.
* завершение — esc — 1 кл.
итого: 4 кл.

Хотите поиграть в VimGolf? )
НЛО прилетело и опубликовало эту надпись здесь
Судя по тому, что я сейчас прочел, пользователи… нет, скорее «активисты» vi — не просто придурки, а отборные мазохисты. Не знаю, может кто-то в этой статье видит преимущества vi, я же вижу убийственный гемморой, переусложняющий простой ввод кода до уровня секвенирования ДНК.

Допускаю, что это отличная идея если надо обосновать — почему код на полчаса пишется 2 недели. Но для реальной работы это бред.
Долго сказка сказывается, да быстро дело делается.
Не нужно путать пользователей vi под гребенку.
Я люблю и vi и far и idea, и на самом деле в статье хорошие и годные примеры. Просто непонятны эти нападки на IDE как в ней так и в каментах.

Это как спорить что лучше win или linux без указания задачи.
vim отличный инструмент. На этом следовало поставить точку и давать примеры использований, а не сравнивать с другим, причем неправильным.
Сейчас «регэкспы» с заменой даже в ворде есть.
Держать руку на мышке — плохой тон для программиста.

Только чтобы в Хабре на комментарий ответить:)
Даже в Хроме для перехода на другой адрес в той же вкладке не нужно мышку трогать, а уж в IDE и подавно.

Какие-то притянутые аргументы про мышь. Текст выделяется Ctrl-Shift-стрелки. Для работы с диалогами есть либо хоткеи либо таб и энтер. Работаю в Win в IDEA, мышью при разработке не пользуюсь (наверное, практически не пользуюсь). Печатаю вслепую. Вим искренне не понимаю. Все мои дискуссии с фанатами вима заканчивались «я так привык/мне и так норм/я работаю не машинисткой, моя работа не быстро набирать/работать с кодом».

Из моих личных наблюдений сложилось мнение что пристрастие к виму сродни моему пристрастию к перлу. Это просто любовь. И тут не может быть объективных аргументов.

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

Собственно, с использованием клавиатурных модификаторов в большинстве нормальных текстовых редакторов тоже можно быстро перемещаться по тексту при помощи «стрелок» — Ctrl+вправо/влево — «прыгаем» по словам, CTRL+вверх/вниз — «прыгаем» между абзацами, ctrl+PgUp/PgDwn — «бегаем» по страницам. и т.д. Таки не обязательно пользовать мышку, а ситуацию когда набор текста/кода постоянно и непрерывно был совмещен с навигацией по нему, даже в кодинге, я не представляю. Обычно либо то либо то, и передвинуть правую руку на стрелки для быстрой навигации, сделать переход и продолжить набор текста не так уж сложно.

Другое дело, что для этого хорошо бы иметь нормальную полноразмерную клавиатуру с полноценным командным блоком, ибо современные «дизайнеры» любят то блок со стрелками сделать в микроформате, то экспериментируют с расположением и наличием Insert/Delete и прочих допклавиш, а то и вовсе выстраивая их столбиком. (Отчасти я понимаю такие извраты в ноутбучном формате, когда нужно «впихнуть невпихуемое», но не понимаю как перенос данной концепции в десктопные клавы, так и использования ноутбучной клавиатуры при постоянном и объемном наборе, вместо того, чтобы подключить полноценную USB-клавиатуру).

Вообще же стенания поклонников VI/VIM о том, что их и VI не понимают, мне напоминают возмущения веганов.
«Вы просто десятипальцевым методом не владеете, вот и беситесь».

Ну и дискуссию по поводу удобства использования VI/VIM в качестве IDE можно закончить сразу, вспомнив основной аргумент, что VI легко превращается в IDE. Нужно всего-то: почитать доку, привыкнуть к стилю командному (!) редактирования, поставить пару десятков плагинов и написать под себя конфиг. Лично меня такой gentoo-style не устраивает.
Если мне нужен текстовый редактор — мне нужен именно текстовый редактор, а не коммандный процессор с функциями редактирования текста. Если IDE — значит полноценна IDE. Со всеми плюшками, которая она дает.

На вкус и цвет…

Microsoft Natural с проводами имеет отлично расположенные клавиши. Жаль, выпускать перестали. Когда сломалась пришлось уже беспроводную покупать и она без нампада.

Это какая? У нас в Украине Microsoft Natural Ergonomic Keyboard 4000 продается полным ходом. Если есть в кармане около $80 — без проблем.

Она. Здорово, что снова появилась.

$80? Это грабеж какой-то. В России вон Яндекс.Маркет показывает, что от 44 USD прямо ща можно взять.
> привыкнуть к стилю командному (!) редактирования

базовое привыкание — это всего лишь 20 минут прохождения vimtutor
НЛО прилетело и опубликовало эту надпись здесь
> И тем не менее в итоге мы не получим ничего даже близко напоминающего по удобству VS, JB, Eclipse

Это не всегда так:

IDEA — шикарна под Java.
Хороша под те языки, которые поддерживают сами разработчики — Python, Ruby…

Но скажем под Go — vim использует абсолютно тот же механизм предсказаний при наборе кода, что и IDEA — а именно написанный нашим соотечественником GoCode.

И от шикарного предсказания и от шикарного рефакторинга, которые есть в IDEA для Java, ничего выдающегося не остается — по сравнению с vim для Go.

Пост можно было озаглавить «Нет, это ВЫ — говно, потому что ничего не понимаете!».
Или продолжайте использовать никудышный редактор кода своей IDE.

Придется потратить от нескольких недель до нескольких месяцев и первый опыт не будет приятным

Тратить аж несколько месяцев на обучение какому-то редактору, тогда как для эффективной работы в любой IDE достаточно пары часов, чтобы привыкнуть к интерфейсу и пары недель, чтобы привыкнуть к горячим клавишам.
Единственный повод немного знать vi/vim — редактирование файлов на хостах, где больше ничего нет.
В моём случае vim вообще нет места — если где-то больше ничего нет, я настаиваю на том, чтобы оно там немедленно появилось. Не человек должен приспосабливаться, а компьютер.
А бывает так, что есть vi/vim, но нет, например, nano или чего-то подобного?
vi — часть Busybox, vim и nano — нет.

Хочу переименовать названия.


Пример №1: что делать, если ваш редактор не умеет сгенерировать объявление и тело метода одной атомарной командой.


Пример №2: что делать, если ваш редактор не имеет рефакторинга «выделить локальную переменную», который вызывается одной горячей клавишей.


Пример №3: что делать, если в вашем редакторе нет семантического выделения блоков CST-дерева.


Ну серьёзно. Я понимаю, что изучить vi может быть полезно, мало ли где окажешься. Я понимаю, что некоторые просто фанатеют от vi. Но заявлять «Или продолжайте использовать никудышный редактор кода своей IDE» просто глупо. В нормальных IDE (IDEA, Eclipse) всё из этой статьи можно сделать быстрее, удобнее и надёжнее.

Плюсую. Если надо поковырять сложный скрипт или конфиг на удаленном сервере, где из дружественного интерфейса только терминал, знание vi очень спасает. К тому же никто не заставляет в vi серьезно кодить (а если кто заставляет, это, простите, проблема заставляющих, а не vi).
НЛО прилетело и опубликовало эту надпись здесь
Оно все есть в vim.
Только не в базе.
А ставится плагинами под конкретный язык программирования.

Он же универсальный редактор и под конкретный язык нужно включить ту или иную функциональность отдельно.

Первые 2 пункта я сходу знаю что нужно для моего языка программирования.

Третий — что-то смутно знакомое, точно к сожалению не скажу кто это реализует.

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

Статьи появляются потому что кто-то делится своим опытом. Эта статья, согласен, несколько ангажированна, давящая на «ты тупой, если не используешь вим».

Исходя из того, что вим бесплатен и не рекламирует себя за деньги, стоит задуматься, — а почему так много статей собственно?

Я задумался. Холивары не убедили. Обучился раболе с вим (это недолго, вопреки заблуждениям), вполне достаточно для начала пройти vimtutor. Чтобы делать собственные выводы, а не в стиле «не читал, но осуждаю».
Как показала история развития техники, самыми простыми являются интерфейсы без состояния. То есть, одна и та же кнопочка всегда выполняет одну и ту же функцию. Это позволяет меньше удерживать внимание на том, в каком состоянии сейчас находится интерфейс и больше внимания уделять собственно решению конечной задачи.

Например, подумайте про интерфейсы цифровых камер, сколько тут пересудов. И поскольку по сути они все равноценны для подавляющего большинства задач, споры Canon/Nikon/Sony/etc часто сводится к обсуждению «как неудобно делать то-то и то-то на такой-то камере», т. е. к эргономике интерфейса.
А почему с этим возникают проблемы у разработчиков… Ну, в камере очень дофига разных функций, и нужно как-то обеспечить к ним доступ. Самым первым появляется отдельный режим «меню настройки», а там страницы, а ещё режим «просмотра отснятого» и так далее… и в этих режимах органы управления, которые устанавливают диафрагму, выдержку и так далее, имеют другие функции.
И вот пока ты там копался перед тобой возник кадр, ты инстинктивно ставишь выдержку, спуск… и фейл, потому, что ты был в меню и выдержка не поменялась, а ты там вместо этого что-то прокрутил! У меня было такое, это очень обидно.

Более узкоспециализированный пример — микшерные пульты. Если у цифрового пульта «аналоговое» управление, т.к. каждая ручка ответственна только за одну свою конкретную функцию — это прямо пишут одним из первых пунктов, как преимущество! Ну и всё равно тут есть проблема — часто бывает, что есть «страницы», когда условно на 32-канальном пульте всего 16 фейдеров, и ты можешь переключать, 1-16 каналы ты сейчас рулишь, или 17-32; а для тембров и сабмиксов вообще выделен один набор органов, и чтобы поменять что-то в канале, нужно его выбрать и тогда только крутить. Некоторые приёмы, которые раньше работали на аналоговых пультах, тут недоступны — например, элементарно невозможно поменять панораму сразу на двух каналах (плавно «развести» их налево-направо) — крутилка панорамы одна, приходится регулировать каналы по очереди!

Именно всё это это и является причиной того, что «старшее поколение» с таким трудом осваивает современную технику, компьютер, да и вообще того, что компьютер приходится осваивать.

У вас конечно есть предолжение, как добиться подобного в vi — как сделать так, чтобы не нужно было думать о том, какие функции у кнопок в данный момент. Это уже ближе к идеалу, но выглядит как костыль: мы должны сознательно всегда входить в особый «модальный» режим ввода и сразу по окончании не забывать из него выходить. Очевидное развитие этой идеи в направлении упрощения — чтобы отдельного режима вообще не было… и мы приходим к традиционному редактору.

Обратите внимание, самым простым интерфейсом является карандаш. Никаких состояний в нём нет!
У этой проблемы есть решение. Правда пока дорогое — командные клавиатуры. такие используют в магазинах на кассовых терминалах.
Продаются, имеют разные размеры как по количеству клавиш, так и размерам самих клавиш.
Можно с такую забить все нужные комбинации и носить с собой работая в чужих системах.
Да. То есть, специализированные клавиши.

Но стрелочки, функциональные, pgup/pgdown/insert/etc уже есть, их не надо носить с собой!
Некто Лебедев предлагал для этого клавиатуру с изменяемыми надписями, когда каждая клавиша представляет собой небольшой программируемый экранчик. И даже вроде бы удалось изготовить целую серию таких клавиатур. Но в итоге, похоже, всё почему-то заглохло.
Потому, что он сделал неудобное ненадёжное тормозное говно. Через несколько часов работы изображения на клавишах начинали появляться с ощутимой задержкой после нажатия элементарного шифта. Клавиши банально ломались. Клавиатура получилась как кирпич, тяжёлая и с неудобными клавишами. Конечно, заглохло.
НЛО прилетело и опубликовало эту надпись здесь
Да ну? Продемонстрируете?
НЛО прилетело и опубликовало эту надпись здесь
Ну так то уже несколько десятилетий научились снимать с мозга простейшие команды.
Сейчас осваивают управление мыслью для целей парализованных.
Серьезно.

Я бы ещё сослался на книгу Джефа РаскинаИнтерфейс: новые направления в проектировании компьютерных систем. Он там, в том числе, достаточно убедительно обосновывает вред модальности для удобства интерфейса.

Дак тут же апологеты вима утверждают, что модальность — это хорошо…
Вы забыли добавить, что в этой книге речь идет о GUI, верно?

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


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

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

Такое чувство, что у вас не работает логика… Что значит: «про что бы ни шла речь в книге»? Книга о GUI, мы о CLI, чувствуете разницу? То что удобно, модно, молодежно под GUI, может быть вообще не применимо для CLI и наоборот.
НЛО прилетело и опубликовало эту надпись здесь
Мда… Вы приведите пример книги, описывающей удобный интерфейс CLI, а после можно будет о чем то конкретно поговорить.

Кстати, вы в курсе, что GUI это модальный интерфейс?

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

во-вторых — не имеет отношения к вопросу

Как же не имеет отношения, если вы приводите в пример книгу, которая утверждает неудобство модальных интерфейсов и при этом описывает GUI интерфейс? ) Имеет еще какое отношение.
Во-первых это неверно

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

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

Вы используете два устройства для работы с одним интерфейсом, что делает интерфейс модальным. Возможно это для вас открытие, но что поделать. Как и в Vim, вы будете переключаться между этими устройствами как между режимами.

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


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


А вот если взять синтезатор и завернуть в него две клавиатуры, уверен: вот эта клавиша вызовет этот звук и всё, других действий ожидать не придётся. Хоть десять клавиатур и другие контроллеры. Я могу бегать между клавиатурами, но вон та клавиша вон той клавиатуры всегда вызывает вот этот же самый звук.

Нет, я смогу их использовать одновременно

Так же одновременно, как и режимы Vim.
Возможно, смогу одну и ту же функцию вызывать разными способами

Как и в Vim.
модальным интерфейс делается, когда некоторая кнопка перестаёт на время вызывать свою функцию, или начинает вызывать другую

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

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

Не знаю чего вас все время уводит в сторону, но синтезатор тоже имеет модальный интерфейс и в зависимости от текущих настроек, одна и та же клавиша может давать различный звук. Это тоже по вашему плохо?
НЛО прилетело и опубликовало эту надпись здесь
Вот уже и модальный интерфейс перестал казаться таким ужасным.
НЛО прилетело и опубликовало эту надпись здесь
Очередной съезд с темы. Я не поддерживаю идей автора статьи, так что отвечать за него не могу. Я лишь оспариваю вредность модального интерфейса для CLI. Нет исследований, которые показывали вред модального интерфейса для CLI. Ссылочка на книжку по GUI, в которой автор рассуждает, как правильно нужно располагать кнопочки в окошке к CLI не имеет никакого отношения и не является исследованием.
НЛО прилетело и опубликовало эту надпись здесь
Совершенно естественно, что внимание человека направлено на его задачу, а не на состояние интерфейса

Как же тогда вы объясните то, что я не совершаю модальных ошибок при работе в Vim? Ниразу. Никогда. м?
фанбои вима, наоборот, кричат

Никто никогда так не кричал. Приведите хотя бы один пример такого требования. Это скорее вы все ноете что вам модальность Vim жизнь портит, хотя все пользователи Vim говорят об обратном.
НЛО прилетело и опубликовало эту надпись здесь
Тогда зачем вы о ней говорите? Пытаетесь кого то убедить, что модальность это плохо и т.п.
НЛО прилетело и опубликовало эту надпись здесь
Тобишь вы просто болоболите? Ну ясно, вас последнее время таких все больше (
НЛО прилетело и опубликовало эту надпись здесь
Я не желаю продолжать разговор с человеком, который совершенно не знаком с объектом обсуждения и целью разговора у которого является:
Потому что хочу. ИМХО человек может говорить о чем-либо если хочет...

Поговорите о чем хотите с друзьями на работе, мне ваши желания не интересны.
НЛО прилетело и опубликовало эту надпись здесь
С чего вдруг у меня должно бомбить от безосновательных заявлений? ) поверьте, я уже все эти темы по многу раз обсудил и хорошо знаю к чему тот или иной аргумент с вашей стороны приведет наш диалог, от того мне и не хочется продолжать
«Интерфейс называется модальным, если в нём есть состояния, которые человек не осознаёт во время жеста, но в которых этот жест интерпретируется по-разному.>

Ключевое тут не осознаёт. Пользователь вима всё прекрасно осознаёт и модальность ему помогает, а не мешает

НЛО прилетело и опубликовало эту надпись здесь

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


0 и 1 находятся далеко друг от друга и в верхней части клавиатуры. Нажимать их поочерёдно одним пальцем очень неудобно. Ничего о том, как переключать режимы в вашем предложении вообще нет. Об эргономике интерфейсов вы явно вообще даже не думали.

НЛО прилетело и опубликовало эту надпись здесь
сменить режим и набрать комбинацию на эльфийском

Вот он уровень знаний хейтеров Vim об этом редакторе…

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


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

Модальность это ужасно во всех ее проявлениях! Не важно, что мы сталкиваемся с ней каждодневно, в книжке написано что это от лукавого! *сарказм*

Но вы же, надеюсь, не будете спорить, что постоянно переключаться между раскладками и помнить (или постоянно проверять) текущую раскладку — это не удобно и сбивает? Именно об этом и "написано в книжке".
Другое дело, что для ввода на разных языках не так много вариантов, как это можно организовать, и загромождать стол несколькими клавиатурами кажется неудобным. А педали не слишком распространены (и тоже не факт, что это удобно). Т.е. тут модальность выбрана, как меньшее зло. Но злом она от этого быть не перестаёт.
Про vim тут, кстати, уже писали, что модальность была выбрана для борьбы с (более серьёзными) проблемами медленной реакции терминалов, с которыми его тогда использовали. И тогда это было оправдано. Сейчас же эти проблемы далеко не так актуальны, и есть примеры интерфейсов, позволяющих точно так же не отрывать руки от клавиатуры, имея при этом гораздо менее модальный интерфейс (привет от емаксеров). Так что, чтобы утверждать, что "режимы нужны и полезны всем", вместо "ну мне так нравится", нужны какие-то доводы.

это не удобно и сбивает?

Конечно буду спорить, учитывая что я использую только 2 языка. Попробуйте использовать английский как основной, а русский как вспомогательный (аналог normal mode и insert mode в Vim) и как только вы завершите ввода на русском, сразу (читать — машинально) переключайтесь на английский. Вы заметите, что проблема раскладки сразу исчезает, так как вы всегда знаете, что вы либо на английской раскладке, либо в данный момент набираете на русском.
Про vim тут, кстати, уже писали, что модальность была выбрана для борьбы с (более серьёзными) проблемами медленной реакции терминалов

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

привет от емаксеров

Вы про «перелом мизинца»? А ничего, что используя Shift, Ctrl, и особенно Alt таки приходится отрывать пальцы от базовой позиции для слепого десятипальцевого?
Так что, чтобы утверждать, что «режимы нужны и полезны всем», вместо «ну мне так нравится», нужны какие-то доводы

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

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


Что касается второго пункта — я не мог бы сказать лучше. Доведение до логического завершения идеи о том, что модальности быть не должно, действительно требует «добавить кучу кнопок в клавиатуру», что я и предложил.


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


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

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

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

Хмм… А я то думаю: «откуда у меня с рождения знания о действиях связанных с Home и Ctrl+S?» — вы мне прям глаза открыли *сарказм*
попутно отслеживая режимы

Home в Vim не зависит от режима. Это так, к сведению.
интуитивно понятно

Да, если я нажимаю Ctrl+S, сразу понятно, что речь о Save, а если я нажимаю i, то никак не допру что речь идет о insert. Действительно, совершенно не интуитивно ))) Мда… *сарказм*
НЛО прилетело и опубликовало эту надпись здесь
интуитивно понятно потому, что во всех вменяемых программах

Ахахах ))) Ваша диалектика на уровне пятиклассника, серьезно )))
Я могу переиспользовать уже наработанный опыт

Интуитивность != привычность, вот так поворот, да? )))
В большинстве программ я нажму Alt+F4 — закроется окно

Ахахаха )) Мне уже становится смешно ) Вы давно компьютером пользуетесь? Что это еще за большинство программ, которые закрываются по Alt + F4? У меня ни одна так не закроется, а знаете почему? Потому что Ubuntu + Xmonad. Это сочетание тоже не интуитивно и не привычно по вашему? А что привычно современным «домохозяйкам»? ))
Insert, :, q. Вы серьезно?

Прежде чем нести чушь и пытаться спорить о Vim, вы бы хоть ознакомились с предметом обсуждения…

А хотя нет, лучше не нужно ни с чем ознакамливаться и продолжать сотрясать воздух пустыми комментариями, которые вам «хочется писать» )))
Потому что Ubuntu + Xmonad


Xmonad — это уже диагноз.
Вернемся, все-таки, к типичному пользователю.
А разве на чистой Ubuntu работает Alt+F4? Да и что такого особенного в Xmonad? В реализации он проще любого современного оконного менеджера.

В версии вима под Windows Alt+F4 закрывает окно с вимом. Это стандартное поведение Windows а не всех программ вообще.

Совершенно так, но в мире помимо Windows существует еще кучка других ОС, в которых это поведение не является стандартным и «интуитивным». По логике товарища, при использовании этих ОС нельзя переиспользовать полученный ранее опыт домохозяйки, а следовательно — это плохие ОС и их использовать не нужно, а все кто тратит свое время на изучение другой модели использования этих ОС, попусту его теряют )

Не читать домохозяйкам
Жаль что вопрос: «а зачем нам, будущим программистам, изучать философию?» — в современных вузах так часто задается (

НЛО прилетело и опубликовало эту надпись здесь
Кого вы хотите обмануть?

Потому что Ubuntu + Xmonad


Тон сбавьте. Вы не в подворотне

А похоже на то )
Вы написали:

Совершенно так, но в мире помимо Windows существует еще кучка других ОС, в которых это поведение не является стандартным и «интуитивным».


Вам ответили:

У меня Ubuntu, Alt+F4 закрывает окно того же Nautilus. Это поведение по умолчанию, я его не менял. Кого вы хотите обмануть?


А вот это ваше ПО совершенно не стандартно, а напротив — довольно редкое:
Потому что Ubuntu + Xmonad


На подавляющем числе девайсов стоит или Windows или Ubuntu с стандартными настройками или т.п. Linux с подобными настройками, где Alt+F4 работает так, как ожидается.

А вот это ваше ПО совершенно не стандартно

Да ну? Ок, открывайте MacOS, эта нигодница использует Com+W/Com+Q, вот безполезная ОСь, правда?
На подавляющем числе девайсов стоит или Windows или Ubuntu с стандартными настройками или т.п.


Во-первых:
В большинстве программ я нажму Alt+F4 — закроется окно

Что это еще за большинство программ, которые закрываются по Alt + F4?

Не хотите ли вы внимательно прочитать мой комментарий и понять, что я говорю об уровне знаний собеседника, а именно о том, что он ожидает реакции именно приложения на Alt+F4, но мы то с вами знаем что приложение не реагирует на Alt+F4, на эту комбинацию реагирует ОСь, а приложение уже реагирует на kill. Об этом мой собеседник не знает, потому либо попытался съехать с темы унификации интерфейса ПО в тему унификации интерфейса ОСей, либо просто запутался.

Во-вторых:
У меня ни одна так не закроется, а знаете почему? Потому что Ubuntu + Xmonad. Это сочетание тоже не интуитивно и не привычно по вашему? А что привычно современным «домохозяйкам»?

Если вы прочитаете внимательно и эту часть моего комментария, то заметите, что я прямо намекают на замешанность именно ОСи в работе горячих клавиш, а не приложений. После чего задаю вполне резонный вопрос: «что привычно современным „домохозяйкам“?» — указывая на то, что программист это не «домохозяйка» и его не должен смущать непривычный интерфейс используемой ОСи, наоборот, он должен настраивать его под свои нужды, а не плеваться в сторону конкурирующего интерфейса потому, что он для него «непривычен», как делают «бухгалтера» и «девочки дизайнеры».

Такое ощущение, что я в детский сад попал и все мои комментарии нужно разжевать, иначе читатели давятся.
НЛО прилетело и опубликовало эту надпись здесь
Чушь. Программист — это не только не домохозяйка, но и не настройщик интерфейсов чужих программ. Всё, что он должен, — писать и поддерживать код. Точка

Поколение программистов-домохозяек )
А те, кто агрессивно агитирует тех же джавистов отказаться от Idea ради vi, — придурки и есть.

А что думаете про тех, кто призывает отказаться от vi, ради Idea?

Я встречал «программиста», который не мог собрать свой java-проект без помощи используемой им IDEA, не смотря на то, что у него был готовый Gradle. Печальное зрелище… ((
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь

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

НЛО прилетело и опубликовало эту надпись здесь

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

НЛО прилетело и опубликовало эту надпись здесь

Вы путаете. Vim — это TUI или GUI (есть же ещё gvim).

Совершенно так, но это не имеет значение.

Конечно имеет. Т.к. TUI — это, по сути, GUI нарисованный в терминале псевдографикой, то все ваши комментарии в этой ветке теряют всякий смысл. И тематика упомянутой мной книги в одинаковой мере относится как к GUI, так и к TUI.

Нет, TUI это не по сути GUI. Более того, графическая часть интерфейса Vim (если уж мы заговорили о TUI) не имеет модальности, а его текстовая часть (которая и является CLI по сути) модальна, но это уже не TUI.
Как я уже писал ранее, vi был создан не только тогда, когда графического интерфейса еще не существовало, но он так же был приспособлен для работы через терминал, чуть позже терминал стал не только локальный, но и удаленный, телнет и ssh.
А ведь даже много лет спустя, даже сегодня не так много хороших и удобных редакторов, которые работают в терминале через ssh. И vi среди них один из лучших.
Vi/Vim выполняют свою работу, а IDE свою. Подправить один файлик или следить за маленьким проектом — это одно. Другое дело, когда в проекте тысячи классов со сложными зависимостями. Да и вдобавок ты не знаешь весь проект наизусть. IDE придумали далеко не глупые люди. Хотя использование мыши и вызывает дискомфорт, моментальный переход по классам/методам и автокомплит экономят намного больше времени. Снипеты и макросы — тоже неплохое подспорье. Это конечно не мощные команды vim, но они расширяют спектр возможностей.
Вывод из этого один. Я не понимаю людей, которые используют vim для написания кода. В статье уверенно доказывается, что vim намного лучше всего остального, как текстовый редактор. Но это и есть текстовый редактор. Многие сейчас использует IDE. Но IDE — это не текстовый редактор. У него совсем другие функции.
Вывод в статье совсем неадекватный. Интересная статья, а посыл в ней грязный. Считая себя самым умнын, автор убеждает всех в обратном.

Спасибо за перевод. Несмотря на посыл статьи, материал очень познавательный.
По-моему, просто не нужно подменять понятия и сравнивать «редактор» и «интегрированную среду разработки». Я уверен, что как редактор vi/vim действительно хорош, может даже наилучший. Но он не будет лучше, чем полноценная, узкоспециализированная (для технологии, языка) среда разработки, которая учитывает большинство (если не все особенности) технологии/языка, и имеет огромный набор сопутствующих инструментов для разработчика.
Те, кто привык к виму, будут продолжать им пользоваться, но новых адептов он уже вряд ли завоюет. Текстовые редакторы в IDE уже давно не убогие, то же контекстное выделение по CTRL+W в IDE от jetbrains для меня во многом проще, удобнее и нагляднее, чем отсчитывать скобочки для команды vim'а (а если ошибся, отменять и заново, потому что визуально не проконтролируешь в командном режиме).
Одно время пользовался vim-плагином, но в некоторых случаях он работал некорректно, так что просто забросил его. Потом пришло понимание, что при наборе текста бонусов от vim практически нет, при редактировании с лихвой хватает возможностей IDE, и, в конечном счете, выигранные миллисекунды не сложатся в сколько-нибудь значимую разницу, все-таки программистам не за набор текста платят.
Кстати, еще постоянно забывают о том, что для выхода в командный режим (то есть довольно часто) надо нажимать Esc, который, вообще-то, находится ничуть не ближе, чем курсорные клавиши, которые так не любят адепты.
Вы явно не осилили. Скобки считать не нужно, esc использовать не обязательно.

По теме: чем продуктивнее инструмент, тем более высок порог входа и кривая обучения. Я знаю людей, которые не осилили ide и продолжают писать в notepad++. Знаю людей, которые исользуют ide, но абсолютно не понимают зачем она им.
Сам использую PhpStorm с нашлёпкой IdeaVIm.
чем продуктивнее инструмент, тем более высок порог входа и кривая обучения

Obvious false.

Резко повысить продуктивность фотографирования позволил автофокус, а позже — возможность немедленно видеть результат. И первое, и особенно второе снизило порог входа и кривую обучения в фотографирование.
Я думал мы редакторы и ide обсуждаем.
Чтобы опровергнуть какое-то утверждение, достаточно привести контрпример. Ваш коммент выглядел так, как будто вы берёте какую-то общую истину, которую потом применяете к частному случаю — редакторам/ide. Я ответил, что истина вовсе не истина, а значит и выводы из неё делать нельзя.

Даже если это ваше утверждние обусловить, что касается оно только редакторов, оно не становится вернее. Конечно, такой же яркий контрпример я не смогу привести, но вот kwrite однозначно продуктивнее notepad, тем не менее порог вхождения в него как минимум не выше, а с учётом некоторых особенностей и настроек по умолчанию — он наверняка ниже. В любом случае, доказательств утверждения «чем продуктивнее инструмент, тем более высок порог входа и кривая обучения» всё равно нет, оно голословно.
Ваши же слова можно обратить против вас. Доказательств, что утверждение «чем продуктивнее инструмент, тем более высок порог входа и кривая обучения» голословно нет. Печатая двумя пальцами быстро упрёшься в потолок скорости, придётся осваивать десятипальцевый.
И вы прекрасно понимаете о чём я писал. Этот снобизм не уместен.
Демагог. До свидания.
Я говорю про удобство, а вы мне «не осилили». Зачем мне его «осиливать», если мне платят не за набор текста, а за написание программ, время на набор собственно текста мизерное, да и вообще набор и размышления идут параллельно, так что есть ли вообще выигрыш по времени — вопрос спорный. Так какой смысл осиливать? Я лучше «осилю» новую книгу по профилю.
НЛО прилетело и опубликовало эту надпись здесь
то же контекстное выделение по CTRL+W в IDE от jetbrains для меня во многом проще, удобнее и нагляднее, чем отсчитывать скобочки для команды vim'а

Вы явно не осилили. Скобки считать не нужно, esc использовать не обязательно

Вы говорите что в Vim нужно отсчитывать какие то скобочки, а человек вам говорит, что «отсчитывать скобочки для команды vim'а» не нужно. Отсюда делается вывод, что вы просто не осилили редактор и ваше незнание выдаете за кривость Vim.
Так и есть, не осилили и гоните на технологию. Выше Delphinum совершенно верно написал.
Осиливать или нет дело ваше. Я осилил из-за болей в правой руке.
> Или продолжайте использовать никудышный редактор кода своей IDE. Но, в любом случае, никогда больше не заявляйте, что пользователи vi придурки.

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

Где можно одной кнопкой сделать extract method большого куска говнокода, и он правильно поймет, какие переменные должны быть на входе, какие на выходе.
Где можно переименовать класс сразу во всем проекте
Где можно выполнять sql-запросы прям из ide, а также автокомплит SQL-запросов прямо внутри строки.
Где можно нажать ctrl-клик и перейти к месту, где определен метод/класс.
Где можно найти все использования метода в проекте (find usages)
Где весь проект индексируется, и поиск по нему занимает около 0 сек.
Где можно переименовать переменную сразу во всех местах метода, где она встречется
Где IDE заботливо подсказывает, какие аргументы нужны конструктору / методу.
Где IDE подсвечивает места, где ему что-то не нравится в коде, например неиспользованную переменную (успешная борьба с опечатками)
Где есть еще 100500 этих «где» и нет необходимости запоминать всякий бред типа c% ctrl-r минус

Назвать IDE такого класса «некудышными» может только придурок.

Справедливости ради, всё это есть и в Eclipse. Пользуюсь сейчас Android Studio, сделанной на базе IDEA, но многое всё же неудобно. Например, работа с VCS, по крайней мере, то, что видно на панелях и в меню. В эклипсе можно формировать частичные коммиты, внося изменения в индекс по кусочкам, а IDEA предлагает проставлять галки сразу для всего файла целиком. Понятно, что полагается сделать фичу, закоммитить, потом делать следующую, но на практике чаще выходит каша, которую хочется разделить на стадии коммитов. И из коробки git push по ssh не работает, надо переключаться на системный ssh, а дополнение и подсветка CSS не работают вовсе (только за деньги, наверно). Ну это так, брюзжание, скорее всего, я просто не разобрался.


Что важно, так это производительность — у обоих IDE она примерно одинаковая. В смысле, тормозят и задумываются время от времени, хотя обычно в этом упрекают исключительно Eclipse. Возможно, в платной версии всё намного лучше. Тем не менее, любые тормоза можно легко простить, ведь тормозит оно с благой целью (аргументы уже высказаны), и сэкономленное время и нервы, а также снижение численности ошибок окупают это с лихвой.

И из коробки git push по ssh не работает, надо переключаться на системный ssh

Если речь про Windows то нужно просто настройки положить в папочку %userhome%/.ssh/ как в *nix системах и built-in будет работать.

У меня Debian. Возможно, реализация встроенного в IDEA SSH неполна, сервер использует нестандартный порт, авторизация идёт по ключу. Просто в эклипсе как-то сразу заработало, поэтому и обратил внимание.

Понятно, что полагается сделать фичу, закоммитить, потом делать следующую
Предполагается использовать changesets, ну или git stash/unstash вручную. Иметь изменения из разных задач в рабочем дереве одновременно — это плохая практика, они могут конфликтовать непредсказуемым образом.

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

Ну, vim сравнивать с IDE нечестно. Даже автор называет никудышным именно редактор IDE, а не саму IDE. В той же Idea можно включить vi mode. Хотя, если честно, для языков с динамической типизацией нет большой разницы между использованием IDE или vim с кучкой плагинов.
Давайте не будет рассматривать сферический редактор IDE в вакууме.

Когда vi используют для программирования (т.е. как замену IDE), то vi проигрывает. Автор статьи этого не понимает.
Когда IDE используют в качестве простого редактора текста (т.е. никогда по сути), то vim возможно в чем-то выигрывает.

>Хотя, если честно, для языков с динамической типизацией нет большой разницы между использованием IDE или vim с кучкой плагинов.
Нет, это не так.
1) Для того же php (самый динамический язык) всё это есть: и рефакторинг, и переименования классов, и подсветка и т.д.
2) Знать кучу плагинов и, что еще хуже, знать все эти 100500 комбинаций клавиш для каждого из этих плагинов — это же адъ. Не надо это сравнивать с IDE, где из коробки идет 99% функционала, а остальное включается нажатием галочки.
Когда IDE используют в качестве простого редактора текста (т.е. никогда по сути), то vim возможно в чем-то выигрывает.

Правда конфигов.
Ну вот да, vim рулит только там, где нельзя использовать IDE (правка конфига или какой-нибудь хотфикс баш-скрипта прямо на сервере). Но автор статьи явно редактирует код в vi, да еще и счастлив при этом.
НЛО прилетело и опубликовало эту надпись здесь

С XSD в эклипсе (может в идее тоже, не знаю) можно вообще в графическом редакторе рисовать XML, переключаясь при необходимости между текстом и картинкой. В результате конфиги могут править люди, далёкие от программирования, пользуясь тем же инструментом, что и вся команда. Это очень удобно.

На мой взгляд, вим стал жертвой прогресса. Я не знаю достоверно каков был рынок средств разработки в 91 году, но предположу что не было кроссплатформенных, расширяемых универсальных IDE. Были редакторы и средства вроде Borland C++. И тогда это был реальный шаг вперед. Редактор который умел больше чем обычный (опять же, оговорюсь — не знаю что он умел).

Но сейчас средства разделились на редакторы (набрать текст) и IDE (работать с проектом). Вим получается посередине, как утка. Но это уже не нужно. Если я хочу набрать текст — мне не нужен редактор который осваивать дольше чем IDE, мне нужен ee/nano. А если мне нужна работа с проектом — мне нужна нормальная IDE с большими возможностями и низким порогом вхождения, а не школа белого нидзя по освоению навороченного текстового редактора.
А почему нужен низкий порог вхождения в ущерб эффективности?
Вы собираетесь 2 дня поработать и потом к IDE не прикасаться?
В данном случае эти вещи никак не связаны.

Я могу сесть за IDEA и начать там кодить в интуитивно понятном окружении эффективнее чем NP++ не используя 90% фич оптимальным образом (например, тыкаю мышкой вместо хоткеев).
Со временм я изучаю оптимальные способы использования известных фич и новые фичи и начинаю кодить еще эфективнее.
Это называется низкий порог вхождения.

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

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

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

В общем, всяко бывает. Нет тут простой связи.
Вы бы привели пример, который касается нашей темы.

Вообще, почему-то считается, что запомнить 10-20 основных команд vim — это непосильный труд для человека, тем более, связанного с IT.
Памяти не хватает?
Сразу поднимается волна непонимания и возмущенных воплей.
Зачем эти разговоры об «интуитивности текстового редактора», когда 99% проблемы решаются за 2 часа. Тем более, что этот инструмент остается с вами на всю трудовую жизнь.

Ладно, что тут обсуждать.
А достаточно запомнить 20 команд?

Меня не команды напрягают, а режимы, то есть, состояния редактора. Я считаю, что чем меньше режимов, тем лучше. Чем меньше модальности, тем лучше. Чем меньше функций висит на каждой конкретной кнопке, тем лучше. Чем меньше, тем лучше. Идеал — когда ничего нельзя убрать.

И, про запоминание команд и привыкание к нему: вот с этим я полностью солидарен. Не стоит овчинка выделки. Да и про то, что вы, давно использующий и хорошо знающий vim реально получили ускорение хотя бы работы с текстом тоже бабка надвое сказала.
Достаточно, 20 даже много. Режимы не напрягают, бесит когда из нет.
Переключение режимов на автомате.

Мне собственно все равно, используете вы его или нет.
Мне удобно, я использую. Вас не агитирую.
Так не вы, другие агитируют. Вон, меня в статье дураком назвали, и инструменты мои дурацкими, потому, что не vim.

Что поразительно, таких как вы очень мало. Большинство vim-еров реально утверждают, что так удобнее и быстрее и тому подобное.
Каждый кулик свое болото хвалит. Это нормально.
Статья дурацкая, минус поставить и забыть.

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

Для меня удобнее и быстрее vim.
Васе emacs
Пете visual studio

Выбор есть, что еще надо.
Так почему вы не верите этим людям?
Есть основания? Все собрались тут, чтобы вас обмануть и поиметь от этого какую-то выгоду?
Вы же сами поддерживаете этот спор, задаете какие-то вопросы.

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

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

ЧСВ и все такое.
Напрасно вы думаете, что я не видел вим, я пользуюсь исключительно линуксом (в т.ч. обработка равок-фотографий, звук по мелочи) с 2004 года. Единственная причина по которой не бегу сдавать экзамены редхата — это вим. Я серьёзно, меня бесит, что меня обязывают использовать это, когда я гораздо быстрее сделаю то же самое по-другому. (Ну может приукрасил и не единственная, ещё я надеюсь уломать работодателя это оплатить, но реально, вим-ориентация очень бесит.)
Ладно, закончим этот холивар.
Тем более, что мне тут слили рейтинг минусами и ограничили частоту комментов.
Хотя я не из ИГИЛ и даже ни разу не матюкнулся.
Идиотская система.
А нечего было идти против стильного, модного, молодежного!
Это да.
Идеальный юзер здесь не должен сильно выделяться из общей массы, иначе и пукнуть не дадут.
Правильно ли это для IT ресурса, призвание которого побуждать человека к творчеству и генерации идей?
Думаю — нет.
А давайте вы не будете пукать на сайте? А заминусовали вас за излишнюю категоричность суждений и бездоказательные попытки отстаивать своё мнение. Вот это на сайте вообще не приветствуется.

PS чтобы участвовать в холиварах надо накапливать карму заранее… иначе будете как я раз в час писать коммент… а может и реже :)
чтобы участвовать в холиварах надо накапливать карму заранее…

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

Ну, вот за это. Не за холивар.

Вон, меня в статье дураком назвали, и инструменты мои дурацкими, потому, что не vim.

Вы цитируйте, не стесняйтесь.

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

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

Зачем вы мне дали эти ссылки? У меня проблем с вим нет, я его давно освоил и наслаждаюсь.
Командный режим не всегда быстрее. Он может быть быстрее, если командный режим крайне функционален, а вас поставили в условия работы, где например нет GUI, медленная связь, и приходится сделать редактор, работающий в таких условиях.

Изобретательные айтишники сделали для таких неудобных условия отличный vi-vim, который ушел далеко вперед от изначальной работы. Но большинству — он неинтересен. Поэтому очень полезно писать о малоизвестных инструментах интересные плюшки — всегда найдутся люди, которые работают в условиях, где это будет крайне полезно. Но сравнивать инструменты, без подачи изначальных условий, еще и проецировать узкоспециализированную тулзу на большинство — некомильфо.

Если вам кажется, что командный режим в vi гораздо быстрее, то давайте так — я — опытный пользователь ZX-Spectrum, будем меряться в скорости набора программ на Spectrum-бейсике, где в зависимости от режима, одна и таже клавиша могла ввести разные символы или операторы целиком, а режимов 5 или даже 6?

Я «goto 1» наберу двумя кнопками, и что? где модальный редактор спектрума?

P.S. Нет смысла к чему-то привыкать. Есть смысл, если приходится пользоваться vi, изучить его возможности и упростить себе задачу.

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

Поясню — если интерфейс тормозит, то работа мышкой приводит к постоянным промахам и ожиданиям — кликнул куда-то мышкой, и обязательно нужно дождаться, пока курсор туда переместится, чтобы что-то сделать. Начал что-то выделять стрелочками — и нужно дождаться, пока все выделится.
В VI этой проблемы не было в принципе — ты мог нажать 10-20 клавиш, четко «запрограммировав действия», и пока они дойдут на удаленный сервер, уже закрыть VI. В то время ни один редактор так четко не мог.

Кроме того, IMHO vi это не IDE — это редактор, который крайне полезен сисадмину, потому что для правки текстовых файлов (быстро исправить конфиг) — он идеален. Маленький, мгновенно открывается, отличная навигация, огромные возможности для автоматизации действий. VI и SED — и все будет хорошо.

То, что VI пролез в программирование — ну наверное на фоне популярности среди переучившихся админов.

P.S. Вдобавок vi есть сходу во всех *nix, это как notepad, только сразу почти notepad++
Таки я всё-таки не услышал ответа на вопрос — как определить, в каком режиме сейчас находится редактор?
Про два раза Esc (чтобы гарантированно перейти в командный режим) я знаю, но это не отменяет вопроса…
На панели команд отображается имя текущего режима. Если не отображается, вы в normal mode.
Использую 3 клавиатуры, все mac, но все разные.
Языки(топ, иногда бывают и другие): bash, python, erlang, go, javascript, haskell, c, ruby.
Конфиги: список слишком длинный чтоб его тут озвучивать.
60 % времени на удаленных серверах.

А теперь порекомендуйте мне ide, под мой профиль.
Стрелки для навигации использовать на macbook не удобно, home delete page up down
везде разные, то есть ими пользоваться опять же не удобно.
Подсветка для всех типов файлов обязана быть, проверка синтаксиса, проверка типов, навигация по функциям и прочее для комфортной жизни. Мышь противопоказана, ssh и все дела постоянно.

Какая idе мне подойдет?
А кто где-либо сказал что «IDE круто для работы на удаленных серверах»?
И никто не говорит о том что любая IDE лучше вима в любом случае, даже если вы на голове стоите. Речь о среднем по больничке. В обычных условиях.
Личное удобство обсуждать вообще странно, это личное дело каждого.

P.S. у эклипса (вроде) и идеи (точно) есть прозрачный деплой на удаленный сервер. Опять же, фича ситуативная: если есть возможность иметь локальную копию проекта (без запуска), вы редактируете локально а IDE деплоит куда настроите.
В среднем по больничке ни vim ни ide не нужны от слова совсем. Это узко специализированные инструменты, часто взаимозаменяемые.
Даже если убрать работу на удаленном сервере, если речь идет про зоопарк языков, и различных разметок, любая ide сразу сливает в удобстве использования.

vim, emacs — универсальные инструменты, с возможностью расширения функциональности
ide — узкоспециализированный, как правило заточенный под конкретный технологический стэк

Смысла их сравнивать нет никакого.
А реплики типа эти… его все еще используют, могут говорить только…

В среднем по больничке ни vim ни ide не нужны от слова совсем.

А что, простите нужно обычному разработчику от слова совсем?

Это узко специализированные инструменты, часто взаимозаменяемые.

Это уже похоже на какую то демагогию.

vim, emacs — универсальные инструменты, с возможностью расширения функциональности
ide — узкоспециализированный, как правило заточенный под конкретный технологический стэк

Eclipse, IDEA — универсальные инструменты, с возможностью расширения функциональности
Видимо я не очень понимаю что вы имеете ввиду под термином ide

Какой то прям очень «тонкий» коммент.
Так мы вроде про в среднем по больничке, а разработчики это отдельная палата.
В среднем по какой больничке? Среди всех людей вообще? Мы тут обсуждаем IDE и вим? Или общечеловеческие вопросы?
42
Ответ на ваш вопрос.
)

Не нравится, не используйте.
Тупой троллинг, чесслово.
Ну, для большинства народу «разработка на десятке языках 60% времени на удалённых серверах» является очень сильной дикостью. Тут совет только один из анекдота — «беспокоит гондурас? так вы его не чешите!» :)
НЛО прилетело и опубликовало эту надпись здесь
Intellij IDEA. все языки кроме С

bash, python, erlang, go, javascript, haskell, c, ruby

Ясно, понятно…
НЛО прилетело и опубликовало эту надпись здесь
Несомненно крутейший функционал для работы с JS проектом на IntelliJ IDEA
image
НЛО прилетело и опубликовало эту надпись здесь
Стоп, тобишь коробочность в IDE не нужна?
НЛО прилетело и опубликовало эту надпись здесь
Ну слава богу хоть так.
НЛО прилетело и опубликовало эту надпись здесь
Пробовал, тормозит, тупит, не бибикает. ))
Постоянно за мышкой тянуться нужно.
Настройка через GUI, плевался.
Сложно.
Терминал одно название.
Не удобно.
Вспоминаю как страшный сон.

Это мое впечатление от intellij idea.
Мой выбор в пользу vim.
Ваш intellij idea.

Все довольны.
НЛО прилетело и опубликовало эту надпись здесь
Чтобы закоментировать десяток строк вимом достаточно выделить блок кода и нажать I//Esc. Считать строки не надо.
Или продолжайте использовать никудышный редактор кода своей IDE.
Но, в любом случае, никогда больше не заявляйте, что пользователи vi придурки.

Что за двойные стандарты?
Ну, сами посудите, разве редактор, работе в котором не нужно несколько месяцев учиться, может быть чем-то иным, нежели никудышным редактором? А после того, как несколько месяцев учился работать в редакторе, надо приступить к изучению какого-нибудь Malbolge, после которого объявить остальные языки программирования никудышными.
Прежде чем обсуждать статью стоит отметить, что она написана почти десяток лет назад. С тех в IDE появился поддержка VI мода, так что всё сказанное уже не актуально, вы пожете пользоваться мощью IDE и фичами по набору текста в vi
вы пожете пользоваться мощью IDE и фичами по набору текста в vi

В Vi нет фич по набору текста, в Vi модальность. Ни одни плагин для IDE для реализации поддержки Vi мода не реализует в полной мере эту модальность.
Поробовал фичу с «iHelloESC .», в идее работает. Было бы интересно узнать побольше о различиях и кейсах, где это нужно в реальной жизни, раз у ж такие «мощные возможности».
Поробовал фичу с «iHelloESC .», в идее работает

Вы о чем вообще? Я о плагинах, эмулирующих Vim говорю. Или очередной демагог?
где это нужно в реальной жизни

Что «это»?
>>Вы о чем вообще? Я о плагинах, эмулирующих Vim говорю. Или очередной демагог?
Я пошевелили пятой точкой, установил плагин вима для идеи, попробовал пример из статьи, где говорится о модальном редактировании. Пример отработал, вот и уточняя, какие же именно отличия в реализации, в ответ же получаю переход на личности.
Я пошевелили пятой точкой, установил плагин вима для идеи, попробовал пример из статьи, где говорится о модальном редактировании

С этого и следовало начинать свой вопрос.

1. Попробуйте забиндить 'gC для автоматического добавления всех изменений в индекс и открытия окна ввода комментария к коммиту.
2. Попробуйте перейти к дереву файлов проекта с помощью Ctrl+j и выбрав с помощью j/k некий файл, открыть его с помощью t в новой вкладке
3. Попробуйте перейти к объявлению метода установив на него курсор и нажав Ctrl+j
Продолжать можно долго.
Я работаю в Phpstorm, он на базе IDEA.
1. Ctrl+k — открывает диалог коммита с полем для комментариями и списком измененных файлов с установленными чекбоксами
2. Alt+1 — фокус на дерево файлов, далее просто набираешь имя директории/файла и курсор переходит по совпадениям
3. Установить курсор и нажать Ctrl+b
Это из коробки, на самом деле можно настроить сотни хоткеев, не говоря уже о макросах. И да, в продуктах от JetBrains можно работать вообще без мышки. На клавиатуре куча клавиш — зачем ещё и режимы?
Вы не поняли вопроса. Мы говорим о плагинах, эмулирующих Vim в IDE, а вы приводите примеры emacs-подобных хоткеев.
Emacs-подобное управление характеризуется последовательностями сочетаний клавиш, преимущественно с модификаторами. Перечисленные не уходят от концепции IBM CUA, по которой нынче принято строить интерфейсы десктопных приложений. Для классификации нужно больше подробностей.
Для всех, кто еще будет пытаться встревать в разговор совершенно не относящимися к теме аргументами, вот вам цитата:
Я пошевелили пятой точкой, установил плагин вима для идеи, попробовал пример из статьи, где говорится о модальном редактировании. Пример отработал, вот и уточняя, какие же именно отличия в реализации, в ответ же получаю переход на личности.

А вот мой ответ:
1. Попробуйте забиндить 'gC для автоматического добавления всех изменений в индекс и открытия окна ввода комментария к коммиту.
2. Попробуйте перейти к дереву файлов проекта с помощью Ctrl+j и выбрав с помощью j/k некий файл, открыть его с помощью t в новой вкладке
3. Попробуйте перейти к объявлению метода установив на него курсор и нажав Ctrl+j
Продолжать можно долго.

Ничего из перечисленного нельзя с делать ни в одном из плагинов, эмулирующих Vim в текстовых редакторах и IDE. Следовательно вот такие отличия в реализации.

Читать этот коммент циклически до полного понимания происходящего.
На клавиатуре куча клавиш

QWERTY-клавиатура проектировалась для печатных машинок, на которых кроме непосредственно ввода текста ничего не нужно, и уже сама по себе занимает руки почти полностью. Первые клавиатуры для ЭВМ на основе QWERTY по этой причине минимально расширяли её, активно практиковались модальность и использование модификаторов. Но так как модальность чужда привычным устройствам управления докомпьютерной эпохи, проводились многочисленные попытки превратить находящуюся под руками клавиатуру в огромную панель управления (например, монстры типа Space Kadet), над которой уже надо порхать руками, как над клавишным музыкальным инструментом, и значительно сложнее обучиться слепому управлению. В итоге в ходе революции x86 сложился относительно компактный стандарт клавиатур IBM PC с минимальными вариациями, содержащий отдельные клавиши для навигации по тексту. Однако даже он превращает клавиатуру в огромную приборную панель. С конца 90-х пошёл взлёт популярности ноутбуков и прочих портативных устройств, на которых устоявшаяся раскладка IBM PC сжимается и перетасовывается всевозможными способами, нивелируя навыки порхания. Впрочем, раскладка IBM PC слабо нагружает большие пальцы, и некоторые экспериментальные внешние клавиатуры, в том числе раздельные, расставляют расширения IBM PC вокруг пробела, уменьшая тем самым необходимость порхать.

А как же evil-mode в Emacs?)

Страшная штука, с помощью которой можно вызвать сатану. Выше писал уже про это.
Программирую в Visual Studio и уже много лет пользуюсь собственной схемой горячих клавиш, которая минимизирует использование мышки. Благодаря ей большинство перемещений по исходному коду происходит без мышки и в стандартном положении рук: например, вместо стрелочек ← ↑ → ↓ у меня горячие клавиши Ctrl+J, Ctrl+I, Ctrl+L и Ctrl+K. Комбинации Ctrl+H, Ctrl+; перемещают уже по словам и т.д. С добавлением Shift происходит выделение текста.

Также использую множество горячих клавиш для таких операций как, например, «удалить строку», «дублировать строку», «закомментировать/раскомментировать». И это действительно повышает скорость кодинга, когда реже переключаешься на мышку. Однако совсем без мышки не обойтись, поэтому я даже выбрал клавиатуру без Numpad-а, чтобы было еще удобнее перемещать руку на мышку и обратно.
Или продолжайте использовать никудышный редактор кода своей IDE.

Это новая мода такая оскорблять программистов? В топку с таким подходом.

По моему опыту, и моим субъективным ощущениями, редакторы в IDE(например Visual Studio) гораздо хуже, чем в том же emacs. Я говорю именно о редактирование исходных текстов. Так же не вижу никаких оскорблений в адрес программистов, по-моему речь идет об IDE.
Логика же очевидна: «редактор вашего IDE никудышен по-сравнению с VIM! йа сказалъ!!» -> «все равно продолжаете использовать?» -> «вы идиот».
НЛО прилетело и опубликовало эту надпись здесь
Продуктивность программистов на IDE, почему-то я уверен, увеличилась бы ещё на пару пунктов, если бы время, потраченное на рассказы/споры уходило на решение реальных задач, с которыми прекрасный IDE справляется.
о да… я помню тот момент бессилия и отчаяния, когда на заре знакомства с Linux, я ввел команду crontab -e
EDITOR=nano crontab -e
По-моему появление «мультикурсора» в IDE окончательно свело на нет преимущества vi-подобных. Если вдруг надо поработать с кодом как с тупо текстом, произведя повторяемые операции – да пожалуйста, Alt+тык-тык-тык или хоткей «довыделить подобное». И то подобные вещи нужны довольно редко, большинство вещей решается высокоуровневыми командами рефакторинга и генерации (часть из которых даже вызывать не надо, они сами).

Тут недавно был эпизод как один из коллег, пользующийся вимом, жаловался, что вот дескать, неудобно, что у вас столько use надо писать. Не все даже вопрос поняли, я последний раз use руками писал не помню когда, кто-то вообще забыл что use автоматически в шапку файла добавляется.
Очень интересная статья, спасибо. Всегда был мнения о том что vi полный треш для непонятных людей, а тут расписано так, что теперь хочется самому научиться использовать этот редактор.

Решил поискать скринкасты слепого десятипальцевого кодирования в Vim. Нашел кучу туториалов и вот это. Честно говоря, не впечатляет. Есть какие-нибудь скринкасты виртуозов Vim'а, чтобы ясно было IDE — фигня и перенос руки на мышку убивает производительность?


Часть ссылок с обсуждения на Ycombinator под paywall(!), в остальных ничего особо интересного.

НЛО прилетело и опубликовало эту надпись здесь
Почему постоянно появляются статьи «Почему vim круче чем все остальное», и почему нет статей про наоборот? Почему апологеты vim так напоминают мне религиозных проповедников, которые звонят вам в дверь и предлагают «поговорить о Боге», или хватают вас за рукав на улице и обещают, что стоит обратиться к истинной вере и вы получите сразу отпущение грехов, вечную жизнь в раю и все земные блага как дополнительный бонус? Откуда эта постоянная жажда доказывать другим, что выбранно ТОБОЙ решение самое лучшее и лучше быть не может НИЧЕГО и НИКОГДА?

Потому, что это в крови у многих людей. Помните «поставил Linux, напиши на хабр»? Так же и с Vim. Преодолел кривую обучения, напиши какой ты крутой!
Вас же что-то влечет к этим статьям и холивару?
Может быть неосознанное желание прикоснуться к истине?
Не сдерживайте себя и обретете покой.

PS: скомпилить вим под винду можно этой командой:

mingw32-make.exe -j%NUMBER_OF_PROCESSORS% -f Make_ming.mak ^
STATIC_STDCPLUS=yes ^
ARCH=x86-64 ^
OPTIMIZE=MAXSPEED ^
FEATURES=HUGE ^
DIRECTX=yes ^
OLE=yes ^
POSTSCRIPT=yes ^
gvim.exe xxd/xxd.exe vimrun.exe
У вас самый адекватный комментарий. Мог бы плюсануть, обзательно плюсанул бы.

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

ЗЫ: у меня на работе очень много emacs апологетов утверждающих, что с помощью плагинов его можно превратить в полноценное IDE и при этом они ищут определение функции grep-ом.

Статьи от том, "Почему vim круче чем все остальное" постоянно появляются потому, что людям свойственно делиться с другими людьми интересными находками и новым опытом.


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


Почему апологеты vim напоминают вам религиозных проповедников вопрос сложный.
Предполагаю, что вас посадили перед монитором, и стали настойчиво уговаривать прочитать побольше статей про вим.
Может быть даже поймали на улице, достали планшет и стали читать вслух, чем чёрт не шутит.


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


В топик про то, как пользоваться вимом для разработки на конкретном языке с конкретными советами, как его настроить и безо всяких призывов перестать использовать IDE, вполне может прибежать какой-нибудь фанатик и заявить, что надо использовать его любимую
VS, или что там ещё потому, что лучше неё нет НИЧЕГО и не может быть НИКОГДА.


Вот и вы предлагаете пользователям вима оставить свою фанатичную апологетику.
И пишите это как коментарий к статье. Понять вас можно только одним способом — вы предлагаете таких статей не писать.


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

НЛО прилетело и опубликовало эту надпись здесь
приверженцы vi сталкиваются с какими-то формами профессиональной дискриминации

Не было еще у меня такой работы, на которой меня не просили пересесть с Vim на другой, «более популярный» и «правильный» редактор.

Итак, на основании того, что у вима есть сложившееся community, он развивается и у него ежегодно появляются новые поклонники вы предлагаете не писать статей, которые объясняют чем вим хорош, тем людям, которые не имея существенного опыта работы с ним, считают, что пользоваться этим редактором может только какой-нибудь чудак?


Представьте себе, что на хабре появилась статья о том, чем Intellij IDEA лучше блокнота. Или чем git лучше svn. Или чем PostgreSQL лучше MySQL. Таких статей конечно быть не может, потому что у IDEA, у git, да и у PostgreSQL есть сложившиеся community и они как инструменты не нуждаются в защите или продвижении. Но вы представьте, что их кто-то всё таки написал. И вот в комментариях к одной из таких статей автору предлагают их больше не писать. Ну, потому что описанные в статье техники заурядны и пользователи IDEA о них в курсе. И потом выражаеют радость от того, что мы ещё не дошли до квот для сотрудников, использующих git и зарезервированных мест на парковках для пользователей PostgreSQL.


Хорошо, всё-таки, что нет таких статей. А то действительно, сначала кто-нибудь написал, что nodejs в определённых случаях ничем не хуже java, а потом его по программе обеспечения равных возможностей к тебе в контору взяли, а в конце концов его у окошка вместо тебя посадили, потому что ему солнечный свет нужен в больших, чем тебе, количествах.


P. S. Одной из главных мыслей данной статьи, кстати, является мысль о том, что вим действительно своеобразен, но его своеобразие вызвано не историческими, а сугубо практическими причинами. Причинами, которые действительно объяснимы и понятны и делают вим лучше, а не просто другим.

Я думаю что дело в том, что автор излагает с той позиции, что «вим элитарен, а те, кто со мной не согласен — тупое быдло».

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

Я пользуюсь vim. То есть я со стороны вимистов.
Но вижу в текстах автора вижу отрицательную психоэнергетику…

Какая ещё психоэнергетика? Мы же с вами интеллигентные, образованные люди. Давайте говорить грамотно — вибрации тёмной стороны силы.


В общем я их не заметил. Если не сложно, киньте цитату пожалуйста.

НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Мне очень нравиться, когда для демонстрации возможностей vi/vim используются gif изображения, взглянув на которое за мгновение понятна идея той или иной команды или последовательности команд. Тут можно глянут пример.
Возможно статья была более эффектная гифками. Спасибо за статью!
НЛО прилетело и опубликовало эту надпись здесь
Да, знаю. А при чем тут другие IDE?
Вроде vim обсуждаем.
Мда… Пролистал статью и комментарии. Многое так толком и не рассмотрено.

1) Сломаны копья в сраче «мышь vs. слепой десятипальцевый метод™», но не упомянуты ни трекпоинты («клиторы»), ни навигация тачпадом большими пальцами — оба без увода рук с основной позиции. Равно как и плагин для вима EasyMove для быстрого прыжка в любое видимое место без особого задротства.

2) Vim головного мозга в терминальной стадии с внедрением клавиатурной навигации везде подряд (в особенности в браузеры, там с этим просто). Тормозные хинты портят UX не менее, чем в 90-х портили тормозные и громоздкие мышки. Также картина неполная без срача «клавиатура vs. тачскрин» касательно мобильных устройств и применения альтернативных клавиатур (не QWERTY) на десктопе.

3) Мнения людей в возрасте, заработавших RSI от мышевозни либо наоборот — от долгого лежания рук в основной позиции на неэргономичной клавиатуре.

4) Опыт скриптования среды и написания собственных плагинов для Vim/Emacs и IDE. Также макросы vs. сниппеты vs. мультикурсор.

5) Ресурсопотребление (ну а что, программист без 16 GB рамы и SSD с нынешними-то зарплатами себя не уважает :->).
Виноват, кусок проскочил, первый и второй пункт частично упомянуты.
Мои пять центов к дискуссии. Использовал и использую vi(vim) и emacs много лет, но они не являются моими основными текстовыми редакторами:
  1. emacs — если надо редактировать по ssh что-то посложнее чем «Hello world»
  2. vi — если нет выбора, или что-то совсем простенькое, как например, комментарии к коммитам git-а

Почему emacs > vi для меня — просто меньше нажатий (отредактировал, Ctrl-X, Ctrl-S vs i, отредактировал, Esc, :wq).

Основной текстовой редактор — Sublime Text, и причина проста — очень быстрый полнотекстовой поиск. Практически все языки программирования высокого уровня позволяют использовать динамические вызовы кода, и это означает, что при рефакторинге надо искать текст тоже, не только прямые вызовы методов. К сожалению, многие IDE имеют с этим проблемы, так что проще использовать полный поиск.

Более того, все приведенные примеры в статье ориентируются на массовые изменения кода, и это подразумевает только одно — код написан с высокой степенью дублирования. Если писать код правильно, используя принцип DRY, массовые изменения практически не нужны. А где они нужны, можно просто воспользоваться multi-cursor или обычным find-replace. Конечно, приходят на ум унылые динозавры типа старой Java, где надо было писать много, но в современной Java это практически не нужно.

Мышки, потоки сознания — это все субъективно. Например, в MacBook Pro очень хороший тачпад, и руки не сильно отрываются при его использовании. И если программист хороший, он сразу пишет хорошо, ему не нужно отрывать руки от клавиатуры, чтобы править что-то выше или ниже. На крайний случай, можно вставить TODO в текст и подправить позже.
НЛО прилетело и опубликовало эту надпись здесь
Почему emacs > vi для меня — просто меньше нажатий (отредактировал, Ctrl-X, Ctrl-S vs i, отредактировал, Esc, :wq).

отредактировал, Ctrl-X, Ctrl-S = отредактировал + 4 нажатия
i, отредактировал, Esc, :wq = i, отредактировал, Esc, :x = отредактировал + 4 нажатия


В чем разница?

например просто юзкейс добраться на сервере до докрута домена отдаваемого апачем
(просто узнать, если не подредактировать) :


httpd -S | grep domain.tld ## что то типа port XXXX namevhost domain.tld (/path/to/config.conf:792)
vim /path/to/config.conf
:792
что-то сделать
:x

примерно тоже в emacs? в пределах погрешности измерения?


Проще просто сказать "фломастеры на вкус и цвет разные".

НЛО прилетело и опубликовало эту надпись здесь
В статье рассмотрена парадигма редактирования vi в целом — хоть в Vim, хоть в Emacs, хоть в плагинах/режимах для IDE… Но многие, что ожидаемо, расценили возглас в заключении по поводу редакторов по умолчанию в IDE как привычный призыв вимеров не использовать IDE и развели по этому поводу очередное пустопорожнее бурление.
НЛО прилетело и опубликовало эту надпись здесь
Может потому, что невозможно будет подобрать для этого эксперимента подходящий проект и набор объективных задач?
Для посекундного теста — нужны программисты одного уровня подобранные с такой же точностью.
Я решил эти споры для себя проще:

Изучил vim.

И…

Так и не сделал выводов.

Иногда использую vim-редактор, иногда использую классический редактор.
Иногда использую навороты, превращающие vim в IDE, иногда использую IDE.

Как минимум — vim сопоставим и ничуть не хуже.
Но — однозначно прикольнее:

Я работаю в редакторе из которого вы даже выйти не сможете.


Для языков программирования для которых есть шикарные IDE — например как JetBrains IDEA для Java — там смысла нет использовать vim.

Но таких шикарно приспособленных к языку IDE очень мало. Для других языков программирования IDEA далеко не так шикарен как для Java, к примеру.

Скажем, для Go никаких преимуществ IDEA нет, а vim летает там, где IDEA по 5 минут грузится…
Засекать с момента запуска редактора, или уже с момента, когда документ открытый?
VS, JB или Eclipse десяток-другой секунд только открываться будет.

Не нужно мерять IDE и текстовый редактор.

писькомерство можно сделать между vim, far, notepad++, и может быть особо продвинутыми SED-овцами.
Программисткие редакторы (включая вим, Atom, Sublime и т.п.) — довольно продвинуты.
Рефакторинг, к примеру, для вима, то, чем в свое время взяла IDEA — нынче это уже нормально и для вима (с соответствующим плагином).

Та же крутая IDEA крута под Java — так как у IDEA свой разбор синтаксиса.
А вот функционал IDEA для Go, к примеру, ничуть не круче vim, так как синтаксический анализ и в IDEA и в vim базируется на одном и том же gocode.

Засекать можно когда угодно. IDEA может запросто начать тормозить в разгар работы, при открытии очередного диалога.
Предоставите подборку инструментов рефакторинга, плагинами для Vim или с CLI, для разных языков, учитывающие их синтаксис?
Еще раз:

Для Java соревноваться с IDEA — глупо.

Для Go — ставите в vim плагин являющийся стандартом де-факто vim-go, читаете к нему доку, оставляете то, что автор vim-go советует. Доставляете общеупотребимые популярные плагины для vim (easymotion, figurative и т.п.).

Другие языки меня не интересуют.
Уважаемый Автор! Вы волшебник! Спасибо за статью :) Браво
Хорошая попытка vi, но нет.
после фразы: Вам не надо быть экспертом в Unix, чтобы использовать vi — он доступен бесплатно

можно не читать. Дальше все от религии.
НЛО прилетело и опубликовало эту надпись здесь
Педали вместо модификаторов — вполне здравое решение. Проблема сугубо в обустройстве рабочего места.
Однако, какой зачетный вброс получился…
Пример того, как время, сэкономленное на вводе текста командами, макросами, хоткеями, IDEями с рефакторингами и проч., явно идёт людям не впрок.
Рефакторинг давно уже есть в vim и др. подобных настраиваемых редакторах.

Да, когда-то давно им могли похвастаться только такие штуки как JetBrains Intellij IDEA.
Но с тех пор утекло 15 лет…
вот это холивар! моё маслице в огонь: клавиатура — ужасный интерфейс между челом и компьюром.
Отсюда все споры/разногласия и высказывания «смотрите как в нашем редакторе быстро можно сделать ххх» — примерно как совет плывущим в валенках поменять их на сапоги, мол быстрее получается.

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

Клавиатура для профи — ад, прямо чуствуешь как мысль спотыкается об эти клавиши. Вспомните то чувство, когда приходишь в гости, а там незнакомая клава (с большим энтером и, не дай бог, кнопкой ресет под delete). Знаю многих прогеров, которые носят клавиатуры с собой, потому что привыкли (делать это быстро, а не искать «где же тут долбанный бэкслеш?!»)

Альтернативы? Были и есть. Вот например: image

Но все равно клавиатуру не вытеснить — инерция сознания. Научившиеся не хотят переучиваться, новеньких натаскивают на существующее оборудование.
еще аккордных клавиатур
и никак не могу найти картинку, когда клава разделена на две части, левая стационарная, а правая — мышка с аккордной клавой %) то есть руки вообще перемещать не надо.
Причём так натаскивают, что даже запихивают QWERTY на маленькие мобильные девайсы. Если в аппаратном исполнении это худо-бедно было комфортным решением для двух рук, то даже на смартпэдах превращается в извращение, отчасти скрашиваемое костылями типа автоисправления по словарю и Swype. Но народ терпит из-за возможности смотреть видео в 16:9 и видеть больше постов на экране одновременно. Особенно удручающим это выглядит на фоне постепенного вытеснения голосовых звонков текстовой перепиской. Хотя альтернатив полно, взять хоть MessagEase, не считая ещё пристыковывающихся аппаратных решений.
Да что вы говорите? Интерция мышления?

Нету никакой инерции. Отдельные личности всегда будут «не как все». До сих пор выпускаются даже клавиатуры без стрелочек (Happy Hacking Keyboard, Pro-версия, не Lite).

А аккордные клавиатуры вымерли — потому что это очень неудобно.
И только поэтому. Инерция мышления тут не при чем.
По разным причинам пришлось bash-код писать прямо на «железке» через терминал в vi
40 файлов, около 200 тыс. строк = 4 месяца
теперь на клавиатуре я херачу работаю элегантнее любого пианиста
коллеги сначала сочувствовали, теперь завидуют

Не убедили.
Абсолютно все приведённые примеры умеют делать современные IDE. Плюс в них есть ещё и InteliSence с контекстной кодогенирацией.


Если мне нужно печатать текст — мне его нужно печатать, а не думать о том "как его печатать".

Еще один «не читал, но осуждаю»?

В vim есть на выбор несколько плагинов с «intellisence» и сниппетами (кодогенирацией)… (таковые есть и для Atom, Sublime, Emacs и пр.) Уж поверьте — современные редакторы мало чем отличаются от IDE.

А, например, для используемого мною языка Go (я могу говорить более предметно, так как в курсе темы) — этот самый intellisence в одной из лучших IDE мира IntelliJ IDEA ничуть не лучше, чем в vim, потому как в качестве базы использует все тот же алгоритм, реализованный в gocode нашим соотечественником.

А vim и проект студии откроет, и скомпилирует и продебажет?

Для Java я написал сразу же: лучший выбор для Java — это продукты JetBrains.
Для Go дебаг в vim ничем не отличается от дебага в IDEA — он и там и там оццтой.

Про другие языки — не в курсе.

Ну так и нафига оно надо тогда? Если все уже и так есть в IDE.

Вы не внимательно читали:

В одной из самых лучших в мире IDE Jetbrains IDEA ничего из этого не реализовано для Go лучше или хуже, чем в vim. Ровно так же. Поскольку основа ровно та же — gocode.

Посему выбор определяется личными предпочтениями. Мне например, нравится работа без мыши и без тормозов — поэтому не IDEA, а vim.

Ваш вопрос можно перефразировать:

А зачем тогда вообще 10 разных IDE если есть уже одна?
А зачем тогда вообще 10 разных операционных систем если есть уже одна?

Список продолжать?

Если бы vim не отличался бы специфическими клавиатурными режимами — никто бы и стал бы писать здесь столько комментариев (ну представьте, что мы обсуждаем IDEA vs Eclipse — вам бы пришло в голову писать «а зачем тогда нужен IDEA, если есть Eclipse».
А зачем тогда вообще 10 разных операционных систем если есть уже одна?

Как по мне то из этих десяти для десктопа только одна и рабочяя только.


А зачем тогда вообще 10 разных IDE если есть уже одна?

По моему — она тут фактически тоже одна (для каждой конкретно взятой платформы).
XCode для маков
VS для виндовсов
Android Studio для андроидов


блокнот — для PHP.


вам бы пришло в голову писать «а зачем тогда нужен IDEA, если есть Eclipse.

Не пришло бы — для меня есть только IDEA.


Посему выбор определяется личными предпочтениями.

Мне кажется реально предпочтений особо не каких быть не может. Ровно как и в выборе языка.
Если скажем Android нативно работает только с Java, по другому родной интерфейс вы не получите.
Аналогично с Windows C# C++/CLI.


Как вы будете работать с UWP проектом в IDEA/Eclipse я не представляю.

С одной ОС к примеру произошло следующее:

MS до последнего (пока не начала заметно терять рынок) — не менялась…

С одной IDE — та же ситуация.
для PHP — Phpstorm (IDEA со специфичными добавками для php), а не блокнот

Он такую кашу в Intelisence выдает что с тем же успехом можно блокнотом пользоваться.

Если Intellisence плохо работает, значит у JetBrains нет успехов на этом поле — и как раз использование vim целесообразно.

Но позвольте, все же с вами не согласиться по поводу качества PHPStorm.
А зачем проект студии ему открывать? Я вам, возможно, открою секрет, но проект Java это просто набор файлов и конфигов к ним. На счет скомпилирует и продебажет, конечно, это может любой редактор, который умеет вызывать системные утилиты.

Стало быть IDE — излишества.

IDE = редактор + семантический анализатор + плагины.
Vim = редактор + плагины.

Так таки IDE круче?

Ну так конечно, семантический анализатор + кучка связанных с ним плагинов это довольно заманчиво.
Если есть адекватный синтаксический анализатор.
Для Java — есть. Поэтому JetBrains IDEA — круче.

Для Go — и vim и JetBrains IDEA используют один и тот же код для разбора исходников (это gocode) — поэтому разницы нет.

Я имел ввиду Visual Studio .sln файл

Не думаю, что умение открывать файлы проектов сторонних сред разработки — это полезная фишка редактора.
ОМГ, все 650 комментов ниасилил. Нет, я верю, что есть умельцы, которые с космической быстротой редактируют текст в этих вимах и емаксах… Но я потыкал последний полчаса и снес нахрен, и больше в эту сторону никогда не посмотрю даже. Почему?

1) нафиг надо изучать. У меня рабочие места по всему городу у заказчиков, проводник/блокнот есть везде, этого добра — нигде.

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

3) был коммент про то — что они там. романы что ли в виме своем пишут? Например, когда я пишу на хаскеле, мне хватает блокнота (и не ++, а обычного виндового блокнота!). Потому что например 250 строчек у меня — полноценный интерпретатор Лисп-диалекта, и это с лексером, парсером, эвалюатором и вводом/выводом в консоль/файл. И скорость набора строки мне фиолетова, потому что думать приходится в сотни раз дольше, чем непосредственно набирать текст кода.

ЗЫ а вообще, продолжая посыл статьи, можно развить идею. Набор текста программы? Прошлый век! Надо сразу писать в АСТ, минуя убогое текстовое представление. Клавиатура? Прошлый век! Изобретена во времена палеозоя вместе с первой печатной машинкой и с тех пор принципиально не изменилась. Надо голосовой набор. А лучше — мысленный. Сидишь, думаешь — «о, напиши мне оптимальный алгоритм решения. Как не знаешь, в интернет слазь, тупая машина! Да не так, тут надо другой код!..» — и так со скоростью мысли будут создаваться шедевры программистского искусства ))))
какой-то win-поток сознания, в моём же понимании vi больше nix редактор. Вы видимо темой ошиблись.
испытываете шок и отвращение от того что должны нажать «i»

Лучшее, что можно придумать. Вот ты редактируешь, а вот ты… работаешь с документом. Я на серверах всегда использую vi.
Был у меня знакомый, который на каждое предложение использовать соответствующий софт, отвечал: vim же есть.

Производительность его труда была отвратительной.

Я это не к тому, что vim плох. А к тому, что все от человека зависит.
Вимеры как вегетарианцы. Нравится есть траву? Супер! Только зачем остальной мир призывать к этому, тем более в таком тоне («никудышный редактор кода своей IDE»)?

И еще, сколько строчек кода вы пишете в день? 10? 100? 1000? Я думаю, большинство пишет меньше 100 строчек в день. В основном читаешь (код, документацию) или делаешь debug. То есть, зачем меня должны волновать все эти свистульки vi (или IDE), даже если они быстрее и круче?
Всем http://www.vimgolf.com/, посоны.
По моему впечатлению, современный Microsoft Word по степени удобства уже вполне похож на vim: чтобы сделать что-нибудь, что в 2003 версии делались парой кликов мыши по пунктам меню, проще всего пойти пойти в консоль Visual Basic и набрать команду там, благо автодополнение хорошо работает.
Личный опыт:
использую Vim/vi только на серверах. Если нужно поправить или дописать конфиги, просмотреть какой-то файл или что-то найти (хотя зачастую less хватает).
Пользоваться Vim/vi для полноценного кодинга — это просто приколы мазохистов. тут IDE конечно же выигрывает.

А почему Vim/vi а не какой-нибудь mcedit или другой редактор? Да не знаю, просто привык и не вижу смысла использовать что-то другое. Те действия которые я выполняю в vim/vi не такие уж важные и глобальные чтобы менять свою привычку. Да и если нет vim, то уж vi на сервере точно будет установлен.
Офигеть, я думал холивары «vi» vs «все остальные» в далеком прошлом, ан нет, люди продолжают впустую тратить своё столь драгоценное время
По-моему, любую статью про vim надо начинать с того, что не обязательно пользоваться кнопкой ESC.

Потому что есть способы намного удобней:
  1. Ctrl-[ (еще удобнее если настроить, чтобы кнопка CapsLock работала как Ctrl)
  2. добавить в конфиг, например:
    " позволяет вместо ESC использовать двойное нажатие "j"
    inoremap jj


  3. Когда узнал эти возможности – пользоваться vim стало намного приятнее.
    Не надо сразу учить миллиард команд и тд, в первую очередь надо узнать как никогда не пользоваться кнопкой ESC в vim. Это решает.
По-моему, любое обсуждение про «что угодно» нужно начинать с ознакомления с этим «чем угодно», а не выплевывания собственных предположений и слухов о том, как это «что угодно» работает )
Ctrl+C/X/V, дабл-клик мыши, выделение мышкой, Home, End, Del, Backspace, Enter.
Вот и все, что я знаю про редактирование текста.

А в vi есть прекрасная команда :q!
Вот вы удивитесь, когда узнаете про различные сочетания Ctrl/Alt/Shift и left, right, выделение мышью, Backspace, Del, а так же про трипл-клик
Вы забыли Shift+up/down. С Atl не понял. Crtl/Shift + стрелочки это локальные такие правки, фичи. Чаще всего использую где поле ввода в одну строку, например URL в браузере или работа в пределах пары строк.

Но полноценное боевое положение рук при редактировании текста/кода это левый мизинец на Ctrl и мышка в правой руке. Навигация по Crtl+f.

П.С. кто может закиньте пару плюсов в карму. А то внезапно раз в час могу комментить.
С Atl не понял

Многие редакторы с нажатым Alt (некоторые по Ctrl) воспринимают выделение мышкой как блочное.
Но полноценное боевое положение рук при редактировании текста/кода это левый мизинец на Ctrl и мышка в правой руке

Может вы мне откроете секрет, как вы одной рукой текст печатаете? Или все сводится к копи-пасте?
Я печатаю двумя руками как и все. Положение рук Ctrl + мышка это аналог «командного режима» в vi. Тот самый серфинг текста и блочные правки. Особенно удобно в сочетании с трекпадом Apple или трекпоинтом IBM.

Ха, так и знал что вместо плюса какая-то злобная душонка закинет минус.
Положение рук Ctrl + мышка это аналог «командного режима» в vi

Так вот оно что ) А народ на Esc еще жалуется )) Ну спасибо, хоть вы толком объяснили.
А в vi есть прекрасная команда :q!

Всё бы людям сложности искать. ZQ делает то же самое.

Ну так :q! на первой странице встроенного хелпа предлагается. А, ZQ, :x, :wq, надо в интернете искать (так быстрее, чем разбираться с навигацией по хелпу)

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

Реквестирую людей, которые освоили Vi и вернулись обратно к редакторам с поддержкой стрелочек и мыши. Есть такие?


А то эта статья напоминает мои отношения со Scala. Сначала плевался, сейчас на джаву смотреть не могу.

Да, даже если вы не можете в это поверить, у редактора vi, увидевшего свет более тридцати лет назад (и его более молодого, всего-то пятнадцатилетнего лучшего клона & большого улучшения — vim) очень много фанатов.


Vim'у не 15 лет, а 25, а VI — 40
Добавил в абзац информацию о дате публикации оригинала

Публикации