Comments 769
(нет, не сарказм — я использую лишь изредка трекбол, поэтому мне очень интересно)
затем рисование схем, всё более детальных, как это работает и как должно рабоать
потом автоматическая кодогенерация по этим схемам, а также разработка UI
и потом наконец ручные правки, отладка
А почему вы игнорируете комментарий об исследованиях 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, а не заниматься ерундой.
А вы точно многомиллиардная корпорация с высоким уровнем доверия людей?
А вы точно многомиллиардная корпорация с высоким уровнем доверия людей?
По вашему мнению любое слово многомиллиардной корпорации с высоким (спорное утверждение) уровнем доверия людей должно восприниматься догматически? Бедный хабр… (
Даже если бы были — доверие мнению, отличному от вашего, пороком не является. Так что не такой уж хабр и бедный
Если нет особых альтернатив, то почему бы и нет?
Потому что это далеко от истинны. Вы либо верьте, либо знайте, но не смешивайте одно с другим.
доверие мнению, отличному от вашего, пороком не является
Не является, как и не является сколько нибудь объективным. Верить вам никто не запрещает, но не нужно выдавать свою веру за истину.
Поэтому упреки про смешивание и объективность тут не совсем к месту
Объективные показатели — это что-нибудь вроде человеко-строк кода в час. Хотя это само по себе вообще не критерий чего бы то ни было (ну разве что программистам платят за количество выданных на-гора строк)
Поясните, кстати, как может быть объективным любое утверждение, опирающееся на субъективное восприятие людей
Никак. Я разве утверждал обратное?
> Тут хоть какие-то исследования, претендующие на объективность, которые кстати покрывают и ваш случай…
Тут сплошь вопросы вкуса, так что у каждого своя правда, и объективности как бы нет и не нужно.
Ваши слова?
Похоже на мой комментарий?
Тут сплошь вопросы вкуса, так что у каждого своя правда, и объективности как бы нет и не нужно
Так я никому не навязываю свою правду.
Это мои слова.
Нет, это не вопросы вкуса. Мне предлагают другой инструмент, да ещё и говорят, что я дурак, что не соглашаюсь, а я не соглашусь пока не будет убедительных доказательств, что мне это могло бы принести пользу и хотя бы кому-то вообще это приносит пользу. Тратить время и учиться я не хочу, я хочу сначала убедиться в том, что есть, ради чего тратить время.
Поэтому я и не привожу статистики, вы меня вынуждаете своими маркетинговыми статьями.
Конкретно моя с вами дискуссия начачась вот с этого вашего комментария. Вы первый предложили мне потратить время на изучение чего-то. И ни вы, ни кто-либо иной не смогли преложить никакого обоснования, что это мне может принести пользу или что оно кому-то принесло эту пользу, хотя я постоянно прошу таких обоснований.
А теперь вы утверждаете, что я вас вынуждаю. Да не вынуждаю, просто если не готовы реально аргументировать свои утверждения про медленность мышки, быстроту десятипальцевой работы без отрыва от клавиатуры и так далее — не вступайте пожалуйста в дискуссию.
И вообще я теперь очень хочу запретить вимерам писать про то, какой вим хороший и как они стали быстро работать, пока в каком-нибудь университете не проведут такое исследование.
А кто эти субъекты? Программисты, дизайнеры, бухгалтера? Кого исследовали?
По умолчанию, в таких случаях — все люди. Все, кто работает с компьютером и у кого есть возможность не использовать мышку. Среднее по больнице. В среднем, мышка всё-таки быстрее.
не смогли преложить никакого обоснования, что это мне может принести пользу
Я и не пытался. Если вы выбрали для себя удобный инструмент, я только рад за вас. Пользуйтесь им и даже не думайте смотреть в сторону других инструментов (я серьезно).
А теперь вы утверждаете, что я вас вынуждаю
Совершенно так, вы вынуждаете меня приводя какие то пустые сообщения из интернета.
готовы реально аргументировать
Думаю под «реальной аргументацией» вы имеете ввиду статистическое исследование? У меня такового нет, и ни у кого нет. Если вы такое найдете, обязательно дайте мне знать, буду благодарен.
И вообще я теперь очень хочу запретить вимерам писать про то, какой вим хороший и как они стали быстро работать, пока в каком-нибудь университете не проведут такое исследование
Нужно не столько запрещать, сколько требовать от заявителя доказательств. Этого достичь проще, нежели пытаться что то запрещать.
Нужно не столько запрещать, сколько требовать от заявителя доказательств. Этого достичь проще, нежели пытаться что то запрещать.
Да! А он отвечает:
Я и не пытался. Если вы выбрали для себя удобный инструмент, я только рад за вас. Пользуйтесь им и даже не думайте смотреть в сторону других инструментов (я серьезно).
Но меня тут назвали дураком и мои инструменты дурацкими, мне обидно.
С чего вы взяли, что вы реально стали быстрее? Аппл утверждает, что вам это только кажется.
Интереснее другое: насколько это важно не машинистке, а программисту.
Вы правите текст одной рукой?
Бывает и такое. Например, когда надо удалить по одному символу в произвольных местах, удобно курсор перемещать мышью, второй рукой нажимать Del. Но это частности, конечно. Само высказывание о трудоемкости переброски руки — сомнительно.
Само высказывание о трудоемкости переброски руки — сомнительно
Ну то что элементарная частица может быть в двух местах одновременно, тоже довольно сомнительное высказывание, но что поделать, не все упирается в наши предпочтения и веру.
Это не вопрос предпочтений и веры, а математическая модель. Никакого сходства, аналогия совершенно неуместная.
Итак, высказывание о переброске руки реально очень сомнительно. Я вчера весь день за собой следил, это не медленнее, чем дотянуться до ctrl+c или esc или смены раскладки (у меня это caps lock)
Итак, высказывание о переброске руки реально очень сомнительно
Повторю еще раз, для особо сомневающихся — ваши сомнения не имеют никакого отношения к объективной реальности. Засеките время переброса руки и тыке по иконке в быстром меню и время нажатия клавиш, на пример, 'gc.
У меня получилось (только на переброс руки с клавиатуры на мышь и обратно) ~ 1.1 секунды
Против ~ 0.5 секунды
Повторю еще раз, для особо сомневающихся — ваши сомнения не имеют никакого отношения к объективной реальности.
Я тоже могу повторить раз 10 для непонятливых: ваше субъективное понятие быстроты или трудоемкости не имеет отношения к реальности. Просто потому что это чисто субъективные понятия. Ваши.
Выше вы некрасиво передернули:
Ну то что элементарная частица может быть в двух местах одновременно, тоже довольно сомнительное высказывание, но что поделать, не все упирается в наши предпочтения и веру.
В то время, как я говорил лишь о том, что высказывание о трудоемкости — сомнительно.
Речь идет об исчезающей значимости разницы во времени, а не о якобы отсутствии разницы, на что упираете вы.
Засеките время переброса руки и тыке по иконке в быстром меню и время нажатия клавиш, на пример, 'gc.
При чем тут это? Макросы обычных редакторов никто не отменял. Весь сыр-бор разгорелся из-за позиционирования курсора, а не тыканья мышкой по иконкам вместо клавиатурных комбинаций.
Просто потому что это чисто субъективные понятия. Ваши
Ну так берите секундомер и меряйте, если сомневаетесь. Я померил, вон мой результат.
В то время, как я говорил лишь о том, что высказывание о трудоемкости — сомнительно.
Речь идет об исчезающей значимости разницы во времени, а не о якобы отсутствии разницы, на что упираете вы
О чем бы не шла там речь, такие вещи нужно оценивать объективно с секундомером в руках, иначе это пустые слова, не более того.
Весь сыр-бор разгорелся из-за позиционирования курсора, а не тыканья мышкой по иконкам вместо клавиатурных комбинаций
А если у меня привычное положение — одна рука на клаве, вторая на мышке?
О чем говорит такое привычное положение? О том что человек чаще пользуется мышью, нежели комбинациями клавиш. Не согласны?
Что это за стиль такой?
Можно еще мышкой по экранной клаве тыкать.
1. изучение предметной области
2. поиск библиотек или проектов, реализующих отдельные аспекты задачи (может быть даже почти всю задачу), и их изучение, включая чтение документции сборку, запуск, небольшую модификацию и отладку примеров
3. соединение этих библиотек вместе и написание необходимого соединительного кода
4. отладка, отладка и еще раз отладка того что получилсь :)
По 3 и 4 пунктам — вы пишите текст одной рукой?
Текст набираю двумя руками — но программирование это не та сфера, где нужно набирать много текста. Большая часть времени — это медитация над исходниками, документацией и результатами работы программ.
Пожалуй 50% рабочего времени я руками вообще ничего не делаю. Правая рука просто лежит рядом с мышкой и клавиатурой на столе, левая на левом краю клавиатуры. Где-то 35% кручу колесо и щелкаю мышью и только 15% набираю и исправляю текст.
Так вот интересно, какой текст в больших объёмах набирают поклонники Vim. Романы пишут, что ли? Мне правда интересно.
Это надо считать только при наборе кода. Между набором непосредственно кода программы много времени уходит на браузер и прокрастинацию, к сожалению.
Вопрос в том, так ли важен быстрый набор текста, если отсутствуют средства удобного и надёжного контроля кода? Я понимаю, что вряд ли смогу вам что-то доказать, но может, хоть заставлю задуматься.
Впервые встречаю это слово в таком значении
Но ведь оно для описания действий прекрасно подходить, разве нет?
а что делать в Vim?
Vim не умеет семантику, потому серфинг в Vim больше сводится к другой области управления (более мелкой или более специфичной). Было бы прекрасно, если бы кто нибудь таки включил Vim в качестве основного редактора в какой нибудь Eclips (на пример).
Вопрос в том, так ли важен быстрый набор текста
Набор текста это не только печатание (как многие тут считают), это и микросерфинг и макросерфинг по проекту. Vim с этим прекрасно справляется.
средства удобного и надёжного контроля кода?
О каких средствах идет речь?
Возможно, я лишь сказал, что не встречал его в таком значении.
>серфинг в Vim больше сводится к другой области управления (более мелкой или более специфичной)
>микросерфинг и макросерфинг по проекту
Непонятно, что же это такое. Открытие разных файлов и переход между ними? По-моему, это не так полезно, как семантическая навигация.
>О каких средствах идет речь?
Рефакторинг и Quick Fix (автоматическая генерация кода и исправление типичных ошибок), в основном, иногда анализ ресурсов на предмет соответствия коду, как в Android Studio проверка соответствия типа view из XML типу в коде и в Eclipse проверка наличия определения контрола в ui.xml, если он определён в аннотации @UiField (это для UiBinder из GWT). Автоматический рефакторинг позволяет не беспокоиться, что где-то что-то не исправилось как ожидалось, либо изменилось что-то, что не должно было. Возможно, он не идеален и тоже может накосячить, но я с таким пока не сталкивался.
Непонятно, что же это такое.
Микросерфинг это, к примеру, замена блока кода, переход к аргументам функции, переход к началу слова и т.д. Этих действий в процессе набора исходных кодов выполняется уйма.
Открытие разных файлов и переход между ними? По-моему, это не так полезно, как семантическая навигация
Смотря для каких целей. Я раньше обожал семантическую навигацию, потом полюбил хорошо структурированные проекты и необходимость в ней как то отпала. За последний год я использую ее реже, чем операцию коммита изменений.
Рефакторинг
Я об этом уже много раз писал, потому отвечу коротко — я рефакторю что то настолько редко (если раз в день переименую один метот, то это будет событием), что мне достаточно грепнуть по проекту и за 5 минут все закончить.
Quick Fix
Аналогично с рефакторингом. У меня для генерации кода свои механизмы, и они только облегчают набор шаблонов, а шаблоны рефакторить нет необходимости, да и типичных ошибок в них нет.
Автоматический рефакторинг позволяет не беспокоиться, что где-то что-то не исправилось как ожидалось, либо изменилось что-то, что не должно было
Для этого предпочитаю тесты и онлайн сервисы проверки исходных кодов.
а вместо этого больше думаю, чем печатаю
А это взаимоисключающая деятельность?
Вот хотелось бы посмотреть на процесс
Где то на хабре я выкладывал ссылку на видео. Можете поискать если интересно.
Мощь vim проявляется именно при редактировании (изменении, исправлении, форматировании, небольшом дополнении) в командном режиме.
не используете «слепой десятипальцевый»
Можно подумать, вы программируете код в редакторе со скоростью 500 символов в секунду! Никогда не знал, что в программировании важна скорость ввода текста!
Так что да — каждое нажатие клавиши имеет значение и оптимизация работы по работе с исходником (не важно vim это или Ctrl+Shift+Right) освобождает больше времени для «чисто подумать» над кодом или почитать Хабр.
Довольно странно вообще видеть человека, позицирующего себя как профессионального программиста, который выделяет куски текста чисто мышью и копирует/вырезает их правой клавишей мыши.
Исключение разве что текстовый редактор acme, который специально заточен на мышетекстовое управление.
https://habrahabr.ru/post/208482/
Я вот обычно сижу, думаю над кодом, неспешно прокручиваю его колесом мыши… иногда делаю переходы по дереву классов, или контекстные переходы типа «go to definition» — тоже мышью… время от времени переключаюсь на чтение документации опять-таки ничего не пишу, а только читаю и кручу мышью… иногда переключаюсь на браузер, там да — нужно набить фразу в поисковике, хотя часто можно сделать копи-паст мышью (например имя функции или сообщение об ошибке), а нередко прямо в программе в контекстном меню встроена команда «найти в гугле» (и думаю вскорости эта команда будет во всех ридерах и IDE).
И только иногда, когда вдруг в голове складывается полное понимание того, что нужно написать — откладываю мышь в сторону и пишу какой-нибудь кусок кода. Уже сразу обеими руками на клавиатуре.
А как вы позиционируете текстовый курсор в нужное место?
В Vim для этого есть normal mode.
Вот я вижу точку на экране, в которую ткнул бы мышью
При работе с текстом, автор оперирует синтаксическими конструкциями, а не точками на экране. Для них в Vim есть множество команд перевода курсора.
В отличие от
Очередное безосновательное заявление. Вот он я, и у меня работа с easymotion так же рефлекторно.
Это как?
Насколько я помню, в Виме можно собрать команду в командном режиме, которая уведёт курсор на пять строчек вверх и на 30 символов влево. Но это точно будет не «вверх и влево по разу». Это будет само по себе уже медленнее, чем дотянуться до мышки и обратно. Плюс к тому еще понадобится время на обдумывание, на сколько именно строк ты хочешь вверх и на сколько именно символов влево. Выше в комментариях товарищи пишут, как их «выкидывает из потока» необходимость тянуться за мышкой — а меня вот, например, начисто вышибает из потока как раз необходимость переключаться с раздумий о коде, который я пишу, на очередную заковыристую команду вима, а потом обратно. Возможно, к этому привыкаешь и, привыкнув, выполняешь на автомате — не знаю, я не смог.
И в этом вообще была моя главная проблема с Вимом, да и с Емаксом, до некоторой степени. Как редакторы-то они мощные и легко уделают любое IDE, без дураков. Более того, ниже товарищ пишет, что-де вот то да сё в Эклипсе удобнее чем в Виме — да, вполне может быть, что конкретное «то» и «се» действительно удобнее в IDE, но это только для каких-то совершенно определенных вещей, которые предусмотрели разработчики данного IDE, а в Виме из стандартного набора можно что хочешь собрать, о чем разработчики, возможно, и в страшном сне не помышляли. Но проблема в том, что эти преимущества Вима проявятся в полной мере только на какой-то нетривиальной задаче редактирования, возникающей раз в месяц, а то и реже. Допустим, я подумал, загуглил, еще подумал и нашёл способ, как сделать это в Виме супер-пупер-эффективно. С учётом времени на раздумья и гугление, я бы давно уже сделал то же самое в IDE, потыкав куда надо мышкой, конечно. Но теперь-то я уже умею в Виме и в следующий раз сразу быстро и эффективно сделаю, да? Нет. Ибо задача нетривиальна и понадобится её решать опять через месяц, за который я благополучно забуду своё нынешнее решение начисто. В результате опять думать, опять гуглить, и опять быстрее было бы потыкать мышкой в иде. Та же картина, кстати, и для ещё одной иконы опенсорса, написанной много лет назад, но до сих пор превосходящей и затмевающей — системы TeX. Всякий знает — ну или хотя бы слышал — что набирать формулы в TeX гораздо быстрее, чем в Word, и это факт. Вот только мало кто сидит и день за днём, час за часом долбит одни и те же формулы — прежде надо эксперименты поставить, расчёты провести, тексты написать, синтаксис формул опять успеешь забыть, опять гугль, опять дотянулся проклятый Кнут… (TeX крут, тем не менее, просто его истинная крутизна в другом.)
В этом плане Markdown гораздо юзабельнее — там нет проблем с конвертированием, у него глаже кривая обучения, а благодаря расширениям он крайне богат возможностями.
Вот я вижу точку на экране, в которую ткнул бы мышью — что вместо этого я должен сделать в виме/емаксе?
В vim можно использовать easymotion
А в emacs или avy или ace-jump-mode.
Все они работают на похожем принципе:
- нажимаете хоткей, затем вводите первую букву слова на которое надо перепрыгнуть
- редактор подсвечивает все слова начинающиеся с выбранной буквы
- выбираете на какое именно слово прыгнуть
Так можно за 3-4 нажатия клавиш переместиться в любое место на экране.
Разумеется можно переходить не только к началу слова, но и в произвольное место.
нажимаете хоткей, затем вводите первую букву слова на которое надо перепрыгнуть
Круто. У нас CodeGuide предполагает все формальные параметры начинать с буквы «A», как раз подойдет — скажем, ф.п. штук пять и нужен последний.
Так можно за 3-4 нажатия клавиш переместиться в любое место на экране.
Оно того стоит, если тронуть мышь — пол-секунды?
Ну во-первых можно прыгнуть на вторую букву, во-вторых пока количество формальных параметров на экране меньше чем 26, вы все равно в три keystroke попадете на букву А.
Я не знаю, удобнее ли это чем мышка для тех, кто хорошо владеет мышкой, я мышкой владею плохо, мне EasyMotion намного удобнее.
Вроде, как раз с этим проблем быть не должно — посмотрите по ссылкам выше avy, у него, по-моему, на картинках понятнее всего объяснено, как это работает. Очень интересный принцип, доберусь до емакса — обязательно попробую.
Оно того стоит, если тронуть мышь — пол-секунды?
А это каждый решает сам для себя. Редактор предоставляет возможность перемещаться с помощью мыши и клавиатуры, что больше нравится — то и используйте.
В emacs есть https://github.com/abo-abo/avy
Очень удобно. Работает, даже если открыто несколько виртуальных окон
Ниже уже где-то писали про AceJump (видео демо), добавлю, что есть в IDEA плагинчик. Всё-таки, даже рефлекторное и отработанное движение мышью не моментальное по той только причине, что вы не можете точно сказать где окажется курсор перед движением. Само движение строится на обратной связи текущего положения курсора (то есть вы смотрите как он движется и по ходу корректируете скорость/направление). Что, как бы, очевидно, менее эффективно, чем клавиатурное (даже если не AceJump, то можно просчитать наперёд при ручном перемещении).
И да, я до сих пор позиционирую курсор мышью (трекпадом, если точнее).
Его трекпоинт позволяет делать это, вообще не отрывая руки от клавиатуры.
Я уж молчу о том, что в моем понимании «моментальная навигация» — это прыгнуть к нужному классу/файлу/функции в проекте или исходниках библиотеки (и потом обратно, а лучше — и вовсе в отдельном окне показать), а не в пределах экрана-двух на регулярках ерзать.
:set mouse=a
Слово «моментально» в контексте разговора, очевидно, означает, что продолжительность промежутка в абсолютных значениях не имеет роли, т.к. пренебрежительно мала по сравнению с другими действиями. Ваши попытки переходить к абсолютным числам выглядят нелепо.
что продолжительность промежутка в абсолютных значениях не имеет роли
Когда человек привык отвлекаться от основной деятельности на 1-2 секунды, для него это не имеет роли. Мы говорим о Vim, редакторе, который позволяет пользователю писать программы «со скоростью мысли», а в его контексте термин «моментально» играет огромную роль.
Перенос руки с клавиатуры на мишь и обратно — это не моментально.
Когда человек привык отвлекаться от основной деятельности на 1-2 секунды, для него это не имеет роли. Мы говорим о Vim, редакторе, который позволяет пользователю писать программы «со скоростью мысли», а в его контексте термин «моментально» играет огромную роль.
Мы говорим о том, имеет ли значение скорость ввода как таковая.
Перенос руки с клавиатуры на мишь и обратно — это не моментально.
Слово «моментально» в контексте разговора, очевидно, означает, что продолжительность промежутка в абсолютных значениях не имеет роли, т.к. пренебрежительно мала по сравнению с другими действиями. Ваши попытки переходить к абсолютным числам выглядят нелепо.
Мы говорим о том, имеет ли значение скорость ввода как таковая
Не только скорость ввода, но и отвлечение. Естественно, эти микросекунды в результате складываются в секунды и десятки секунд, но что еще более противное, так это то, что эти мелкие действия не дают мозгу полноценно сосредоточиться на задаче. Вместо размышления над задачей, нужно искать переферийным зрением мышь, затем курсор, затем целевую позицию, заниматься перекладыванием ладоней и т.д. Это отвлекает.
Повторюсь, если бы это делалось моментально, то это не имело бы значение, но это не так.
:set mouse=c
"*yy
"+Y
также см. How can I copy text to the system clipboard from Vim?В Vim для этого есть EasyMotion, который позволяет прыгать в любое место без того, чтобы убирать руки на мышку.
Во-вторых, это смотря у кого какая производительность. Если я пишу новый код, я запросто могу написать этак 1500 строк в день.
продуктивность набивки текста обычно не влияет на скорость разработки
Более того, набивка текста вообще не влияет на скорость разработки, так как разработка — это в первую очередь построение абстрактных моделей и схем (для их представления другим разработчикам). Процесс разработки не связан ни с одним редактором или IDE. Не следует путать терминологию
Test subjects consistently report that keyboarding is faster than mousing.
The stopwatch consistently proves mousing is faster than keyboarding.
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.
Я вот ни разу вам не поверю, что, например, вам мышкой будет быстрее выделить строчку, нажать пр. кнопку мыши, нажать скопировать, передвинуть на новое место, нажать вставить, чем мне нажать 3 клавиши в виме.
ps. Я не утверждаю, что все должны пользоваться вимом, пользуйтесь чем вам удобнее. Но говорить, что мышка быстрее клавиатуры, это, извините, нонсенс.
Только меня смущает, что статья из тех времён, когда у большинства людей вообще не было мышек?
Вот пример неплохого исследования:
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.В статье приводятся все необходимые подробности: и количество испытуемых (63 человека), и наборы экспериментов, и используемое оборудование, и выполняемые задачи. Даже определялся прогресс — как сильно люди могут улучшить результаты в ходе тренировок скорости работы с данными девайсами.
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.
И раз уж взялись меряться писькой с мышкой, приведите, пожалуйста, эти три волшебные клавиши, которыми вы в виме скопируете и вставите в произвольное место файла произвольную строку текста. Вот давайте, для определённости, пусть ваш текстовый курсор стоит в позиции 0, 0, скопируйте нажатием трёх клавиш 37-ю строку и вставьте в 12-ю строку между 27-м и 28-м символами. Напоминаю, у вас есть три нажатия по одной клавише, время пошло :)
Конечно не исследование, так, хрень на постном масле
Совершенно верно.
эти три волшебные клавиши, которыми вы в виме скопируете
Могу в одну клавишу. Какую вам хочется? Давайте на m. Все, сделал.
:37 enter
v$hy
:12 enter
27lp
Если вы новичок в виме, то да, над каждой командой нужно думать, уйдет много времени. Если все в пальцах, то получается быстрее (тем более, если визуально 28 символ не сильно отделен). Опять же, я не призываю пользоваться вимом, пользуйтесь чем угодно. Но клавиатура в подобных задачах быстрее. Другой вопрос нужны ли эти выигрыши в скорости (вопрос почти как про преждевременную оптимизацию). За себя я могу сказать, что мне просто нравится работать таким образом.
Исследование у меня тоже вызывает вопросы. Какие операции они замеряли, какие у них в системе хоткеи, как организован гуй? Я вот думаю, хорошо бы ввести новую дисциплину специальной олимпиады по программированию, типа «бег по тексту с препятствиями». Команда задро… спортсменов может использовать любой редактор/IDE, обмазать его какими угодно модами и расширениями, тренироваться сколько хочет по затаскиванию мыши или запоминанию клавиатурных комбинаций. Потом всем командам раздают набор типовых заданий (заранее им неизвестный, чтобы не могли специально под него хоткеи заточить) и вперёд. Тогда рано или поздно станет понятен выбор чемпионов. А пока получается один субъективизм, кого-то сильнее бесит за мышку тягать, кого-то — клавиатуру топтать.
Здесь в исследовании дело в другом — насколько людям легко приспособится к интерфейсу.
Разумеется, пока ты не освоишь клавиатуру на хорошем уровне — нельзя ожидать увеличения производительности.
Вопреки исследованию — Apple не собирается горячие клавиши вырезать из своих продуктов. Их там — огромное количество. Горячие клавиши очень активно применяются в MacOS уже много десятилетий.
А тут писали что vim как раз позволяет не уподобляясь пианисту-виртуозу выполнять навигацию по тексту, не смещая рук с базовой десятипальцевой посадки. А вы тут про то, чтобы тянуться за мышью для
Во-вторых, если взять устройство где нет ни мыши, ни клавиатуры, в смысле дешёвый android-планшет, выяснится, что Vim Touch — самый удобный редактор для работы с исходными текстами для такого устройства, не требует установки Hacker´s Keyboard, как текстовые редакторы c «традиционным» управлением с клавиатуры, позволяет нормально перемещатся по тексту не занимаясь спортивным попаданием в нужное слово, ну и вообще.
На мой взгляд, ситуация не изменится, пока и если не появится способ вводить и редактировать произвольный (не словарный) текст с приемлемой скоростью вслепую с экранной клавиатуры. Из тех клавиатур, что я видел, слепой ввод и редактирование не обеспечивается ни одной. Попытки делаются обычно в направлении увеличения размера кнопок и применения техник вроде Т9 или жестов (в т.ч. для команд редактирования). У MessagEase есть даже возможность убрать все надписи с кнопок для работы в «слепом» режиме. Но по-настоящему вслепую печатать не получается из-за необходимости отрывать палец от экрана, прицеливаться и попадать даже в эти крупные кнопки: промахи — не редкость. А вот клавиатур, где не было бы необходимости отрывать палец от экрана совсем я ещё не видел. Хотя кажется, что двигаться надо бы в этом направлении.
vim очень помогает в случаях когда нужно кодировать, деплоить и тестировать быстрее скорости мысли.Задеплоить, а потом думать «а что же это я такое задеплоил?!»?
И если у вас linux-server, то там 100% есть vim.ну, не знаю, в десктопной ubuntu я его каждый раз ставлю, может в серверной иначе. По-моему, nano уже потихоньку его вытесняет в качестве дефолтного редактора.
vi (не vim) есть всегда — он входит в список утилит POSIX: Utilities. Есть очень редкие случаи, когда vi не установлен, но я такое встречал только на специализированных Linux-based firmware (впрочем, там не было и nano тоже).
Вот только не понимаю зачем вы постоянно оправдываетесь в том какой редактор вы используете (а часто еще и заходя дальше на тему — это же не просто редактор это нечто большее)…
Я искренне не понимаю зачем набирать ceHello[ESC] чтобы потом нажать '.' и превратить это просто в Hello — почему сразу не набрать это гребанное хелло?
Вот и в этой статье в очередной раз описывается как вы сами себе создаете проблемы чтобы потом решить их с помощью VI и в очередной раз что то доказать… ну а остальным сказать что их редактор никудышний, как это сделано в выводах статьи
Это работает не так. ce значит замена от текущей позиции курсора до конца слова (если курсор в слове. Если курсор на пробеле, то заменится пробел. Если курсор на первом символе слова, то заменится все слово) сразу после ce vim переходит в режим ввода. [ESC] выводит из режима ввода. Т.е. после ceHello[ESC] в тексте слово под курсором будет заменено на Hello. Точка повторяет эти махинации.
Вопрос ведь был не в этом — а в том что не нужно смотреть свысока только потому что вы используете 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 и не ощущаю какого-то дискомфорта. Вот мышкой пользоваться мне просто не очень удобно, хоть это и интуитивно-понятный контроллер.
з.ы. ну и да, постоянное нахождение рук на клавиатуре — это, помимо прочего, прямой путь к тунельному синдрому. Вспоминаем про то, что главный страдалец от этого недуга в ИТ не кто иной, как товарищ Столман, который большой поклонник маргинальных редакторов.
Вот конкретно эту штуку не пробовал. Но пробовал в Emacs подрубать clang для семантического разбора исходников через плагины и последующих умных переходов и автокомплитов, работало оно все не понятно как, требовало кучу телодвижений для того, чтобы пропарсить проект (депенденси тоже автоматом не цепляются разумеется) и потом все это жутко тормозило, т.к. Emacs немного не многопоточный. В итоге отказался от этой идеи… судя по тому, что среди моих знакомых Vim'еров также никто не использует никаких семантических приблуд, там дела обстоят не лучше.
Или одной командой в vim.
А многие сейчас даже приведут примеры как в их редакторе это вообще можно сделать одним кликом по какой нибудь кнопке — «заменить все».
Такое даже в стандартном виндовом блокноте есть. Я бы скорее удивился текстовым редакторам в которых функции «найти все %text1% и заменить на %text2%» не предусмотрено.
Вот только не понимаю зачем вы постоянно оправдываетесь в том какой редактор вы используете
Мне это тоже постоянно досаждает (
Ну да, в статье чувствуется очень легкая ангажированность — «я знаю такие фичи вима, из которого вы даже выйти не сможете». Не более того.
Что именно вас раздражает?
Вот только не понимаю зачем вы постоянно оправдываетесь в том какой редактор вы используете
Да всё очень просто.
Нам надоели. Надоели все эти люди, которые приходят и говорят: «Как ты программируешь на этом старом говне? Вот в моей <IDE_name>...».
Я перестал уже обращать на это внимание. Даже перестал что-то отвечать кроме как: «Да, твоя <IDE_name> очень классная. Пока.».
Это, как и любой холивар, просто непринятие одной из сторон точки зрения другого.
Мне удобно в виме, я уже свои плагинчики написал, настроил как надо всё. Сижу, программирую. ИДЕ пробовал. Лично мне не хватило огромного количество возможностей вима, которые добавляются через плагины.
Что, кстати, интересно все же идут, смотрят на голый вим без плагинов и ужасаются. Я тоже.
Через месяц я понял, как я заблуждался раньше, моя жизнь изменилась. Я поменял работу, и стал зарабатывать в 3 раза больше, женился, купил 2 машины.
Не попробовав — не поймешь. Смысл тут рассказавать, как вы что-то не понимаете?
Без вим режима теперь очень трудно, убогость других средств раздражает.
Особенно, когда опять видишь всякий IDE — кал, с кучкой ярких приблуд, а-да дополнения кода, многоярусные туллбары с десятками кнопок, и т.д. Впечатляет, когда по всем четырем сторонам окна открыто по тулбару, куда надо ловко и быстро попадать мышью. Напоминает игру в сапера.
Вим — это аскетизм, наполненный губочайшим смыслом, гениальность.
Конечно, это не для всех. ;-)
Мораль: слишком много притянуто к переходу на вим.
"A" переводит курсор в конец строки и активирует режим ввода. После завершения набора нажатием [ESC] вы можете нажать '.' где угодно, чтобы повторить ввод в конце строки.
Может быть вы знаете зачем? Чем лучшем, чем нажать Home/End в обычном редакторе?
В notepad одним regexp replace
В статье хорошие примеры, но попытки сказать, что VI во всем круче других современных редакторов и круче IDE — зря.
В FAR это делается элементарным макросом.
В notepad одним regexp replace
А в статье предлагается: AHelloj.j.j.j.j.j. что таки быстрее обоих предложенных вами вариантов.
но попытки сказать
Я о конкретном примере, а не об обидах и расследованиях.
Даже всякие sublime'ы поддерживают multiple cursor, при помощи которого ваша задача решится изящней, чем 20 нажатий j.
Ставите под ваш язык соотвествующий плагин. Если плагин хорошего качества (как для Go), то рефакторинг выглядит также: горячая клавиша и ввод нового имени.
Давайте об определённых действиях. Добавить внутрь if дополнительное условие. Подредактировать выражение. Строчку поправить внутри кавычек.
А с форматированием такое дело — бывает, что из заданного тобой же самим стиля нужно сделать исключение.
В моем случае, скорость ввода и редактирования текста не могут повлиять на продуктивность, совсем.
А как насчёт удобства редактирования?
Я правильно понимаю, что скорость и удобство ввода и редактирования текста не могут повлиять на продуктивность в вашем случае?
Ну, вы представьте себе, что в IDE, вместо обычного редактирования текста вставлен вим и что вам надо с ним работать. Повлияет это на вашу продуктивность?
Я считаю, что если вас посадить за неудобный редактор — ваша продуктивность резко упадёт. Не знаю, как у вас с вимом, но если вы им особенно непользуетесь, то когда в IDE редактирование текста будет доступно только с помощью способа, использующегося в виме — вам первое время будет очень тяжело. Будете раздражаться, ругаться и из-за этого пребывать в ужасном настроении. Потеряете концентрацию, сложно будет думать о задаче, а не о том, как вам неудобно. Потом, может быть, привыкнете. А может и нет. Может ваша продуктивность вообще просядет очень надолго. И всё из-за того, что вам очень неудобно делать 10% работы.
Да, если я внезапно буду вынужден использовать vim, и не иметь альтернатив, то моя продуктивность упадет.
Но, честно, я с трудом представляю задачу или ситуацию, где для работы с C/C++, ну там пусть, условно, PHP, Python у меня не было бы никакой возможности пользоваться при написании кода чем-то кроме vim'а…
Может Вы приведете пример подобной ситуации? Буду благодарен, если это будет приближенный к реальности, а не абстрактно высосанный из пальца.
Естественно, не беру сейчас ранее обсужденный в комментариях вопрос про "правку конфига на удаленном сервере" (или же правки пары строк в скрипте на сервере), речь именно про написание/редактирование(рефакторинг/добавление функционала и тд) кода.
Речь не о том, чтобы использовать вим, речь идёт о том, чтоб использовать вашу любимую IDE и заменить способ редактирования текста на тот, что используется в вим. Это пример для демонстрации того, насколько важно удобство именно редактирования текста при програмиировании.
Возможно, я не совсем точно сформулировал мысль.
Замените в моём предыдущем комментарии vim на vim-style. Т.е. если у меня не будет альтернативы vim-style редактированию, то моя продуктивность упадет.
В целом, с посылом про удобство я полностью согласен. Продуктивность будет выше в том случае, когда используется инструмент, знакомый до такой степени, что работаешь с ним на полном автомате, что позволяет полностью сосредоточиться на написании кода.
А это в 99% дело привычки, а не сам редактор. Подавляющее большинство редакторов, встроенных в IDE это не notepad, и позволяют делать практически все вещи, которые необходимы в процессе работы. Редкие исключения — не решают проблемы вообще.
VIM жив по одной причине — у него есть специализированная ниша — работа по удаленному ssh терминалу. Там он изначально появился, там вырос, и оттуда приходят люди, которые им пользуются, и соответственно они приходят уже с навыками. Но если ты изначально работаешь на локальной машине, vi не нужен.
P.S. Это учитывая, что я как раз пришел из сисадминов, и я в vi работал много и успешно. Но для правки текста на локальной машине, мне ближе FAR, а для правки java — встроенный редактор в jetbrains со всеми его наворотами.
"Это все есть в Emacs" ©
Этот комикс был просто обязан появиться в этом обсуждении: https://xkcd.com/378/
А в ФАР макрос может быть сложный, включать в себя поиск и перемещение.
Преобразовать 10 строк из
a[1,2,3]
в какой-нить
Var A{
[1],
[2],
[3]
};
— макрос набирается за несколько секунд и повторяется.
Более того — макрос может быть с выходом из редактора в панели, поэтому можно аналогичное исправление внести во множество файлов. Например, F2, Esc, Стрелка вниз в панелях, F4, F7, найти что-нибудь, отпозиционироваться, внести изменения — так после каждого выполнения макроса вы будете видеть изменённый, но ещё не сохранённый файл, а следующий вызов макроса сохранит текущий файл и изменит следующий. Причём множество файлов можно заранее сформировать во временной панели с помощью поиска или вручную добавляя/удаляя файлы. Наконец, эти файлы могут находиться в архиве или на удалённом сервере — макрос будет исправно работать.
Хотя не спорю, на нем написаны хорошие плагины.
Тем не менее, в последние время — какой плагин (из серьезных) не возьмешь — так все требуют поддержку в vim или Python или Lua… Не хотят авторы плагина реализовывать функционал полностью нативно на чистом vim-скрипте…
На убогом языке
С чего эти выводы?
Не хотят авторы плагина реализовывать функционал полностью нативно на чистом vim-скрипте…
Я реализовываю, что то во мне особенное наверно?
Зачем мне ваши самопальные макросы, решающие ваши локальные вопросы?
Один из самых лучших подсказчиков автодополнения исходного кода — требует Lua, другой — требует Python и вообще написан на C.
У вас мания величия?
Зачем мне ваши самопальные макросы, решающие ваши локальные вопросы?
Мда… Комьюнити хабра спускается все ниже и ниже с каждым новым комментарием. Печально.
Может, вы мне продемонстрируете тысячи фолловеров и лайков у ваших плагинов, и я признаю, что мания величия — это не про вас?
Да не впечатлило
Это не должно впечатлить.
Может, вы мне продемонстрируете
А как связано мое знание языка и мои навыки в области маркетинга?
Я не вижу смысла продолжать в сами диалог, если честно.
P.S. Я на 100% уверен, что это будет прочитано ;)
Запись макроса требует чуть больше нажатий (примерно на 3-4), зато вызов делается одной клавишей, которую можно просто зажать, если требуется внести одинаковое исправление тысячу раз, например. Точно лучше, чем по очереди писать j.j.j.
То есть не сложнее, чем затем жать.
Но при этом в 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 клавишь, если вам так угодно.
Дело не только в этом. Это не просто нажатие на кнопку, это — команда, которая может использоваться в комбинации с другими, может использоваться в скриптах и фукциях автоматизации. Командный режим — уникальная фича, его ничем не заменишь.
Не видел ни одного, кто-бы ушел с вима обратно к классическим инструментам.
Или продолжайте использовать никудышный редактор кода своей IDE.
Но, в любом случае, никогда больше не заявляйте, что пользователи vi придурки.
Типа «ваши инструменты отстой, но вы не могите сказать, что мои инструменты отстой!»
Убогий подход.
Тем более, что IDE — это манипулирование с сущностями, рефакторинг по имени поля/класса и т.п. IDE — это работа не только с текстом.
vi достаточно давно является частью busybox. Именно поэтому он есть практически на любой железке, даже если это роутер с 4Мб флешки.
И это не раздражает, а наоборот, радует — покуда хоть ЧТО-ТО для редактирования текста уже есть.
Установка любого другого редактора возможна; возможность сделать выбор никто не устраняет! И даже можно удалить симлинк /bin/vi -> busybox.
ЗЫ. Посмотрел на соседней генте — нету там ни vi ни vim. А вот ed почему-то есть. Так что правда повод! Скажите вашему товрищу, чтобы переучивался. Тем более, что ed работает на телетайпе, а vi — нет, поэтому ещё более универсален :)
ЗЗЫ. Задумался, а почему, собственно, там ed стоит…
Насчет vi не уверен, но вот vim хоть и есть на многих машинах, но без уютного конфига он не так уж и удобен… в результате затаскивание конфига на удаленную тачку по трудозатратам сравнимо с установкой редактора… т.ч. Emacs + tramp-mode тут немного выигрывает ;)
Пользуюсь vi. vim но раздражают не режимы/команды а необходимость переключаться между языками (редактирую русский текст).
Может вам это поможет https://habrahabr.ru/post/98393/#comment_3031341
Первый пример неубедительный. Например, чтобы в 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 мс, тогда как непосредственно алгоритм отрабатывает по полминуты… это больше похоже на преждевременную оптимизацию ради оптимизации. Вот к скорости набора кода у меня такое же отношение.
Это больше похоже на хвост, виляющий собакой. Может, логичнее в существующие мощные 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, а основная цель вашего разговора — поставить недалеких пользователей на путь истинны!
Мне такие монологи не интересны. Удачного программирования!
Судя по последнему вашему ответу, вы совершенно не знакомы с редактором Vim, а основная цель вашего разговора — поставить недалеких пользователей на путь истинны!
Это по-моему как раз и есть цель всей статьи, только речь о других пользователях. Да, возможно, я выгляжу высокомерно, но это только отражение.
И я честно надеялся, что у вас всё-таки есть вменяемые аргументы.
И я честно надеялся, что у вас всё-таки есть вменяемые аргументы
Проблема в другом, у меня нет времени приводить и обсуждать мои вменяемые аргументы с каждым первым хейтером Vim, знакомым с этим редактором на уровне «прочитал статью на хабре». Познакомьтесь с ним поближе, а потом уже можно будет поговорить о чем то конкретном.
А люди, которые вот этого не понимают, и продолжают настаивать на том, что я должен сначала научиться, а потом уже решать, надо мне это было или нет — вот они-то как раз и есть "#?@! придурки" из заголовка статьи. По странному совпадению, таких очень много среди адептов vi.
Это достигается тем, что навигация до определенного места в файле:
— с hjkl — достигается, к примеру, за 700мс.
— с переносом руки на мышку, перенести курсор, кликнуть, вернуть руку обратно — достигается за больше 1сек.
Лично я чувствую разницу в 300мс.
Насчёт продуктивности — я сомневаюсь, что она увеличится. Серьёзно сомневаюсь. Она не очень зависит от того, как быстро я работаю с компьютером, она зависит от того, с какой скоростью я соображаю. Я вообще часто работаю не сидя, а расхаживаю взад-вперёд с планшетом (не электронным, бумажка на деревяшке с прищепкой и карандаш).
возможность крутить веб-страницу колёсиком — это очень удобно
вы бы еще привели пример с играми, где WASD удобнее чем hjkl. :)
Естественно скролить страницы мышкой удобнее и быстрее. :)
Я вообще часто работаю не сидя, а расхаживаю взад-вперёд с планшетом (не электронным, бумажка на деревяшке с прищепкой и карандаш).
Интересна ваша мотивация вступать в дискуссию по поводу vim если редко набираете текст.
Естественно скролить страницы мышкой удобнее и быстрее. :)
Не согласен. Скролю страницу с помощью 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+пробел.
Стесняюсь спросить, а где у Вас в «стандартном положении [...]» находятся большие пальцы рук?
Мне кажется, что таки над пробелом. Так что, по большому счету, подходы равноценны.
Позиция руки для слепого десятипальцевого удобна не только для набора текста.
Не спорю. Но вот у меня не выработалась привычка постоянно держать руки на этой позиции, кладу по мере необходимости.
Чтобы получить хоть какой то профит, я должен потратить на изучение сочетаний клавиш, настройку плагинов, перенос конфигов и т. д. менее 80 часов за всю жизнь, отказавшись от всех преимуществ современных IDE или тратя время на переключение на них. Сомнительное преимущество.
Ничего сакрального в hjkl, кроме того, что они есть везде, где вообще терминал поддерживает алфавит — нет.
P.S. Кстати, если бы думали про удобство навигации стрелочек, могли бы придумать какой-нить asdw.
В вим редактирование текста ГОРАЗДО быстрее и удобнее.
И, да, пока не попробуешь сам, естественно, разницу не поймешь.
Каких именно доказательств вы хотите и как кто-то может вам их предоставить?
Снять видео?
Мне бы тоже не понравилось.
vim align_all.py -> правим ошибку -> :wq
vim всё же удобнее, чем nano (подсветка синтаксиса, автоинденты), опять же стоит везде, где можно. Но осваивать тонкости управления и настраивать гору плагинов я ради редких мелких правок не готов.
Могли бы и научиться за два года другим командам, их не так много на самом деле.
Я вот сумел настроить kitty и организовать работу так, что все мои линукс дотфайлы (не только вим) загружаются при ssh логине на хост. И я без проблем имею везде одинаковое, настроенное окружение.
2. Все вим команды через 3 месяца выполняются спинным мозгом не отвлекая и не создавая проблем в этом и есть смысл вима и это именно так и должно работать и работает у тех, кто вим освоил. Остальные жалуются.
2. Команды эффективны. Вам все это было не надо, т.к. вим для вас был вторичным инструментом, или по другим причинам. Я вам не смогу объяснить, почему для меня он лучше. Все, что я написал — мой субъективный опыт, у вас он другой.
3. Если используете firefox — поставьте vimium, поймете разницу между мышиным интерфейсом и командами, и увидите, что быстрее.
Потому, что эта парадигма эффективнее.
Доказательства, исследования?
поставьте vimium, поймете разницу между мышиным интерфейсом и командами, и увидите, что быстрее
А если не увижу? Вы перестанете утверждать, что vim всегда удобнее и эффективнее, или всё-таки
Все, что я написал — мой субъективный опыт, у вас он другой.
? Если другой, то вы не можете утверждать, что «парадигма эффективнее» без объективных исследований. То есть, утверждать можете, но это уже получается пустой трёп.
3) Проблема в том, что большую часть времени я не ввожу текст в Firefox
Не знаю, когда я пишу текст в outlook или word, мне очень нравится подсветка грамматики и возможность оформления rich текстом.
Объективные замеры есть? Я месяца два назад искал, на реддите спрашивал, но ничего не нашёл.
А действительно ли перенос руки на стрелки медленнее переноса руки на esc? И на сколько микросекунд? И эти микросекунды вам реально увеличивают эффективность?
Можно разве по-другому реализовать тот подход, который там описан?
Так он в статье же. Везде
Статья написана таким же новичком, надевшим розовые очки Vim.
Можно разве по-другому реализовать тот подход, который там описан?
Вариантов от любой кнопки на клавиатуре, до педали.
Кнопка не будет среди тех, которые уже используются для набора текста — т. к. в режиме набора их функция уже определена. Ей уже сложно попасть в десятипальцевую парадигму… но положим, предложите, которую кнопку использовать?
Я в первую очередь хочу именно результаты объективных исследований. Потом можно будет проверять, подходит это мне или нет.
Почему вы решили, что я в теме не разбираюсь?
Потому что вы предпочитаете перенос руки на esc.
Там теперь кнопку esc отменили?
Там давно рекомендуется не использовать ее.
И как волшебный vim понимает в каком режиме вы хотите работать?
Так же, как и всегда, через комбинации клавиш.
Нет, я предпочитаю другие редакторы. Собственно говоря, мне в принципе довольно всё-равно какими редакторами пользоваться, я не машинистка, и скорость набора (точнее, скорость переключения режимом) не является для меня ограничивающим фактором (я ещё и чай успеваю прихлёбывать по ходу дела). Кроме тех, которые «или пищат или всё портят» :)
>Так же, как и всегда, через комбинации клавиш.
Ага, я уже прочёл, что вы заменили одну клавишу на две (конгениально! Карл, одну клавишу нажимать медленно, поэтому будем нажимать две!) и на этом основании считаете всех идиотами, а себя д'Артаньяном (конгениальным д'Артаньяном!). Бывает.
Нет, я предпочитаю другие редакторы
Не скачите с темы на тему. С помощью демагогии не постичь истины.
точнее, скорость переключения режимом
У машинисток нет режимов.
и скорость набора не является для меня ограничивающим фактором
Скорость набора не является характеристикой какого либо редактора, это характеристика вашего умения печатать, не более того.
вы заменили одну клавишу на две
Я ничего не заменял, там все давно заменено.
одну клавишу нажимать медленно, поэтому будем нажимать две
Разница в расположении, а не в количестве.
и на этом основании считаете всех идиотами, а себя д'Артаньяном
Я считаю многих здесь отписавшихся людьми, которые делают выводы на основании своих предположений, а не изучения объекта спора. Спорить с такими людьми не имеет никакого смысла, так как они не способны на какие либо объективные оценки, а лишь преследуют цель — «я прав».
Демагогия — это у вас. Вы за меня придумали какой-то бред, а потом его успешно «опровергли». Ай, малацца!
>У машинисток нет режимов.
Верно! У машинисток нет. Сами догадаетесь почему? :)
>Скорость набора не является характеристикой какого либо редактора, это характеристика вашего умения печатать
Вон чувак выше, с которым я начал дискуссию до того, как вы неуместно влезли, утверждал, что именно скорость у него очень сильно повышается. Вы, как специалист опровергаете это? Ок. Тогда лично я совсем не вижу преимуществ, кроме персональной привязанности к одному единственному способу ввода. Кстати, вы в курсе, что в большинстве 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
Никто не утверждал обратное.
Эту комбинацию, впринципе и нажимать удобнее
Кому как, у меня capslock это смена раскладки.
Менять раскладку CapsLock, если пользуетесь вимом несколько странно. Посчитайте сколько раз в день вы меняете раскладку и сколько раз жмёте Ctrl. Скорее всего перевес в пользу второго. Для того, чтобы нажать Ctrl нужно скрючить мизинец и как правило подвинуть кисть. Чтобы нажать CapsLock этого не нужно. Также из тех же соображений имеет смысл перемапить Enter на правый Ctrl.
если вы используете Ctrl-C, который в vim из коробки, то у вас периодически будут странные проблемы
Никаких странных проблем за много лет использования не наблюдал.
Менять раскладку CapsLock...
Возможно вы и правы, но у меня уже этот мапинг на подкорке, больно будет вырезать его.
смысл перемапить Enter
Enter вообще не юзаю, как правило (в очень редких случаях). Обычно пользуюсь o и O.
CapsLock у меня тоже когда то переключал раскладку. Но потом я решил, что удобнее будет сделать CapsLock контролом. За 3 дня привык.
Что касается Enter — он действительно используется нечасто, поэтому у меня по нажатию Enter реально отдаётся сигнал Ctrl. А чтобы нажать Enter надо зажать Ctrl-M. Очень удобно.
Если на выход из insert mode какими нибудь плагинами навешаны какие-нибудь хуки
Не пользуюсь таким.
Но потом я решил, что удобнее будет сделать CapsLock контролом. За 3 дня привык
У меня Ctrl под капсом, не вижу смысла их менять местами.
Учтите, что для нажатия Ctrl+c отрывать указательный от f строго обязательно.
У асусов клавиатура вроде более менее стандартная. Сейчас пишу с самсунга, по моему там примерно такая же должна быть.
Любопытно как это у вас получается. Завтра найду кого-нибудь, попрошу мои руки на клавиатуре сфоткать, сравним.
Kinesis Freestyle 2
Каково в сравнении с Microsoft Natural Ergonomics 4000?
Основная проблема Microsoft Natural Ergonomics 4000 — большой размер и тяжёлый ход клавиш. Большой размер не решить никак, а вот насчёт того, что клавиши нажимать тяжело — тут есть новая модель со слим клавишами — Sculpt Ergonomic Desktop. Я хотел взять её, но потом решил попробовать Kinesis Freestyle 2.
Первые пару дней рукам было некомфортно, даже ладонь ныла немного. Кроме того, я постоянно промахивался по клавишам Alt и Winkey. Потом привык.
То, что клавиатура состоит из двух независимых половин — очень клёво, но надо подобрать положение каждой половины, чтобы было удобно рукам.
Сейчас пользуюсь в основном Kinesis. Мне удобно. Особенно прикольно, когда подходят коллеги и у них взрывается мозг. Печатать на майкрософтовской клаве они могут, хоть им и непривычно, а печатать на двух половинках это уже реально сносит шаблон :).
Думаю как-нибудь попробовать Sculpt Ergonomic Desktop — чисто из любопытства, но вообще на мой взгляд следующим шагом должна быть Ergo Proxy.
У меня Caps — смена раскладки — это, реально, удобно.
А вы не пытайтесь прослеживать связи из своей головы, вы их из действительности прослеживайте. Действительность она отличается от того, что вы придумали. Вы перечитайте про действительность. Попробуйте.
>Ну вот уже и прослеживается уровень ваших знаний и опыта.
Вы всерьёз полагаете, что у меня недостаточно опыта в движении руками над клавиатурой? Я, конечно, не престидижитарор, но слепым десятипальцевым последние 15 лет пользуюсь (исключая пару месяцев, когда из-за травмы пальца пришлось перейти на девятипальцевый).
>> Ctrl-C не работает
>Что за платформы?
Опа, приношу извинения, это я — дезинформатор. Поставил вим на третью машину и, наконец, вспомнил нечеловечью логику этой программы. Был не прав, работает на маке и паре линуксов.
На маковской клавиатуре эта комбинация ещё более-менее нажимабельна без смещения руки, а на стандартных клавиатурах куда хуже не только эскейпа, но и стрелок. В общем, я не могу настолько сильно оттопыривать мизинец вбок при его одновременном движении вниз. Наверное, руки кривые, не заточеные под вим.
>Достаточно было попробовать несколько в популярных IDE, чтобы понять, на чем они все спотыкаются и будут спотыкаться.
И это страшный секрет поклонников вима? Ах, ви такие загадошные!
>Мне не удобно гонять рукой над клавиатурой, это отвлекает
Ну, а на остальных редакторах, это давно перешло в разряд автоматической моторики, не осознаётся и не отвлекает. Ещё один повод не использовать программу, работа в которой требует настолько сильного сосредоточения и напряжения воли, что даже движение руки отвлекают. :)
PS в русском языке существует замечательная буква ё… почему бы её просто не использовать?
в русском языке существует замечательная буква ё… почему бы её просто не использовать?
Экономя время на перетаскивание пальца с начальной позиции для слепого десятипальцевого, я к концу дня успеваю за сэкономленное прочитать лишнюю страницу книги *сарказм* )
Вы же набираете 1цу? А буква ё совсем-совсем рядом.
PS простите, не смог разобрать полностью, что является в вашей фразе просто сарказмом, а что является убеждением.
Сэкономленное время, потраченное вами на комментарии к этой статье можно было потратить на чтение целой главы книги
Книги не дадут мне опыта реального общения.
Вы же набираете 1цу? А буква ё совсем-совсем рядом
Зачем, когда еще ближе клавиша capslock и ctrl?
Комменты на хабре — в общем-то тоже. Точнее опыт будет неэффективный и малорелевантный. Хотите опыт — пишите статьи.
т.е. когда вы набираете в тексте «1» вы жмёте капс или ctrl?
Комменты на хабре — в общем-то тоже
Вы глубоко ошибаетесь.
т.е. когда вы набираете в тексте «1» вы жмёте капс или ctrl
В тексте я пишу 1 куда чаще чем ё, которую я не пишу никогда. Все проще чем кажется.
Скорее распространяю своё мнение на остальных.
> В тексте я пишу 1 куда чаще чем ё, которую я не пишу никогда. Все проще чем кажется.
простите, что тогда значит ваша фраза «Зачем, когда еще ближе клавиша capslock и ctrl? » в ответ на «Вы же набираете 1цу? А буква ё совсем-совсем рядом»?
PS то, что в нашем печатном языке принято гнобить букву ё — вовсе не повод делать так же лично. Эта буква просто замечательная и несёт совсем другой звук, чем е. Ну вот вы попробуйте авто-доводчик вашего чтения и прочитайте все те места, где должна быть ё именно так, как вы пишите! Например «Все пропало, Шеф!» будет великолепным образчиком полного потери смысла из-за неверной буквы.
А в виме неудобно использовать ё :)
Дело в том, что vi разработан под другое расположение клавиши ESC.
Раньше это было, действительно, эффективнее.
На современных клавиатурах — приходится отрывать пальцы от прочих клавиш, при нажатии ESC даже мизинцем.
![image](https://habrastorage.org/getpro/habr/comment_images/a0f/b49/ef4/a0fb49ef480368844c9ed462e6f51821.jpg)
P.S.:
Попробовал нажимать мизинцем на классической (не ноутбучной) клавиатуре.
Если вы умудряетесь попадать ESC мизинцем — то вы видимо специально ради vi тренировались.
Например перемещение курсора клавишами hjkl сделано не потому, что это удобнее, а потому что стрелок на на многих клавиатурах тех времен просто не было
Это удобно. Внезапно:
Какие клавиши используются в 3D-шутерах, которые появились в век, когда стрелки уже сущестовали? Как правило это и стрелки и asdw
Самая большая грусть с vim — это ESC, который раньше находился там, где сейчас Tab или CapsLock.
Кстати, многие любители vim переназначают мало нужный CapsLock на ESC.
Примерно так же как проблема дотянуться до Esc в виме
Еще один… Ясно, понятно. Не буду тратить свое время на вас.
Зачем мне на клавиатуре вообще хоть когда-нибудь может потребоваться перемещать курсор с помощью неочевидных hkjl, если у меня есть специализированные клавиши управления курсором с очевидными стрелочками?
Научился и не понял.
Как в ваш «слепой десятипальцевый» вписался процесс снятия рук с «основной позиции набора» и перенос правой (или левой?) на клавиши со стрелками?
Вопрос странный. В процессе набора текста мне не нужно двигать курсор. В процессе работы с блоками/перемещении мне не нужно держать пальцы на шишечках.
Мне обязательно нужно все разжевывать?
Человек, научившийся (по его словам) слепому десятипальцевому не понимает, зачем использовать hjkl для серфинга по документу, ведь набор текста и серфинг это (как он считает) не пересекающиеся сферы. Другими словами набор с использованием слепого десятипальцевого кода программы у данного человека будет выглядить так:
1. Положил руки на asdf jkl;
2. Набрал два слова
3. Положил правую руку на стрелку
4. Поменял позицию курсора
5. п. 1
Теперь ясно и понятно о чем я?
Пока оно не бесит, модальность писец неудобная, это правда. Да и когда оно начинает бесить — путь наименьшего сопротивления — внедрение сочетаний клавиш. Это верная дорога к локальному оптимуму из которого нет простого выхода :).
мышь является стандартом де-факто уже более 20 лет.
Так что все современные адепты vi/vim начали освоение текстовых редакторов как раз именно с использованием мыши.
Так что все современные адепты vi/vim начали освоение текстовых редакторов как раз именно с использованием мыши
Что говорит не в ее пользу.
работать с русским текстом очень неудобно, потому что точка в двух раскладках находится на разных местах (и др., менее значимые нюансы). Как кто вышел из положения?
— мапинги — такого типа «map й q»?
— что вы делаете, когда вместо поиска по "/" повторяется предыдущее действие (потому что на русской раскладке там точка)?
— я пробовал решение с мапингами, https://habrahabr.ru/post/98393 и https://habrahabr.ru/post/175709/ Недостатки первого вроде понятны. По второму нужно привыкать к C-^ вместо обычных хоткеев переключания раскладки, в третьем нужно везение чтобы на вашей системе заработал xkb-switch (у меня на ubuntu 16.04 — не работает)
Если у кого есть дельные советы — я бы с радостью выслушал. Спасибо.
— Да
— Ничего, у меня редактор всегда в normal mode и en раскладкой
— Во втором можно выбрать другую комбинацию для переключения (уже и не помню как), сам отказался от него только потому, что привык к переключению по capslock
Если про специальные программки-переключатели, заточенные под vim (а таковых как минимум 2 отечественного производителя) — то они тоже умеют отлавливать из/в командный режим.
А вопрос мой был про конкретно ваш workflow, работающий. А то альтернативы, которые у вас не установлены, могут разочаровать нас обоих.
Он встроен и запускается без каких либо дополнительных внешних модулей.
Статья на Хабре «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+^. При этом происходит чего и добивались: команды и шорткаты ни коем образом не страдают при активной русской раскладке. Ура!
Во-первых, текстовые редакторы давно уже никому практически не нужны. Для ворда в своё время нашли хорошее название «текстовый процессор». То есть ввод текста — действительно только эпизод в общем объёме работ. Но остальное, кроме непосредственно набивания текста — это вовсе не изысканные текстовые команды, а уйма всего, выходящего за рамки набора буковок и изуверских поисков. Для программиста — это IDE, отладка, просмотр ссылок, связанных классов, наборов атрибутов и множество всего иного, что делать клавиатурными комбинациями просто смешно.
Что же касается мышки, то совет работать одновременно мышью и клавиатурой — совершенно правильный. Как именно — вопрос индивидуальный, но вот я (подсмотрев у старших товарищей) левой рукой работаю мышью, в то время как правая — на клавиатуре. Никаких переносов рук, потери времени и внимания. Ещё из индивидуального — правильная мышь пятикнопочна. Клик по колесу — ^V, две доп.кнопки — ^C и ^X. Вот тогда количество переключений между клавиатурой и мышью падает сильно и не приходится искать дурацкие возможности «а как бы вставить hello в любое место текста». Но — повторюсь — это индивидуально. Хотя и очень, очень удобно.
левой рукой работаю мышью, в то время как правая — на клавиатуре. Никаких переносов рук, потери времени и внимания
Вы печатаете одной рукой?
Но зачем, в этом случае от скорости набора зависит всё гораздо меньше, гораздо важнее скорость поиска, чтения и анализа? Даже если мышка медленнее (что неверно, судя по всему — она на самом деле быстрее, т.к. непосредственное позиционирование с визуальным подтверждением, в отличие от клавиатуры) — скорость попадания в нужное место в тексте не важна.
Заставляет тратить время на изучение. Пока не изучил — значительно медленнее всё, т.к. отвлекает на себя внимание. Если я захочу перейти на vim, в лучшем случае я несколько месяцев буду работать с резко сниженной эффективностью, которая потом, возможно, плавно вернётся на прежний уровень, а может и не вернётся — ни у кого объективных доказательств эффективности нет. И тогда получится, что я несколько месяцев мучился зря.
А мышкой я и так владею.
Кстати, не факт и что Delphinum и другие апологеты реально быстрее. Уже несколько оснований полагать, что это им самим так кажется, а если замерить по часам, окажется, что на самом деле vim медленнее.
Или вы будете утверждать, что он не нужен?
К счастью, для освоения vi, в отличие от слепого десятипальцевого не нужно столько времени. Нет там никаких месяцев падения производительности. Проходите vimtutor (за 20 минут) — и базис заложен. Производительность теряется на несколько дней всего.
Кстати да, буду. Десятипальцевый метод — это очень, очень узкоспециализированная техника, которая нужна всё меньшему числу людей. Программистам не нужна точно. Дизайнерам не нужна. Админам не нужна. Музыкантам не нужна. Художникам не нужна. Машинисткам нужна, вот их и обучайте.
Тут лет пять назад очень сильно пиарился shahidjanyan, автор "соло на клавиатуре". Всё пытался спорить, вот мол, какие вы компьютерщики, я быстрее вас текст набираю. Слился, теперь в рид-онли, не нужен он тут оказался со своим десятипальцевым методом и гнилыми типа-психологическими разливами воды с каплей смысла в комментариях. Видно было, что печатает человек гораздо быстрее, чем придумывает какие-то новые мысли. Прямо как в анекдоте: печатаю 1000 знаков в минуту, такая фигня получается!
А по поводу 20 минут и нескольких дней — разрешите вам не поверить. Я пробовал, мало. Три месяца — вот эта оценка похожа на правду.
Шахиджаняну уже 76 лет. Наверное его больше интересуют внуки, а не ваша скорость набора текстов.
> Машинисткам нужна, вот их и обучайте.
Самое смешное, что машинистки нынче — это очень малоквалифицифированный труд и набирают они «зрячим двухпальцевым» методом обычно.
> Программистам не нужна точно. Дизайнерам не нужна. Админам не нужна. Музыкантам не нужна. Художникам не нужна.
Дизайнерам, музыкантам, художникам — не нужна. Так они и не типичная аудитория этого сайта. Давайте еще напишем про водителей, ВДВшников, столяров, сварщиков, моряков… — им тоже не нужна.
Серьезный админ — это не тот, что умеет картриджи заправлять, а тот, что скрипты автоматизации пишет.
Разумеется, речь не идет, что без этого нельзя или что ты будешь плохим программистом только потому, что на клавиатуру глядишь.
Это просто базовый уровень познаний, являющихся бонусом для профессии. Не обязательное требование. А дополнительный улучшающий тебя как профессионала бонус.
Например, сегодняшний уровень развития автоматизированного перевода позволяет быть хорошим программистом, полагаясь на Google Translate. Но хорошее знание английского как оставалось плюсом так и остается.
> А по поводу 20 минут и нескольких дней — разрешите вам не поверить. Я пробовал, мало. Три месяца — вот эта оценка похожа на правду.
Вы проходили vimtutor 3 месяца?
Да там даже очень много выпившему пива больше 2 часов делать нечего.
Серьезный админ — это не тот, что умеет картриджи заправлять, а тот, что скрипты автоматизации пишет.
Разумеется. Серьёзный админ схемы рисует. Скрипты автоматизации вообще в первую очередь требуют чтения документации, а печатать там реально немного.
Разумеется, речь не идет, что без этого нельзя или что ты будешь плохим программистом только потому, что на клавиатуру глядишь.
Я не владею десятипальцевым, хотя и на клавиаутуру не гляжу. Я достаточно быстро набираю текст, с этим проблем нет никаких, чтобы не вызывать никаких вопросов на тему "чего он там копается".
Вы проходили vimtutor 3 месяца?
нет, это-то быстро, а потом надо ещё привыкнуть реально этим пользоваться. И тут нескольких дней мало, а три месяца я тратить не собираюсь, я практически уверен, что выгоды никакой не получу
Сразу после прохождения вимтутора — НЕ НУЖНО привыкать. Пальцы сами жмут куда нужно.
Ещё раз, 20 команд или сколько их там — ерунда. Совершенно не в этом проблема.
Так, сравните: выучить восемь команд брейнфака можно за десять минут — вы же не скажете, что этого достаточно, чтобы на нём программировать?
Так вот vim для меня — это брейнфак. Реально. При том, что я джентушник со стажем.
Я — освоил за несколько десятков минут. Мне этого достаточно, чтобы на серверах удаленно править файлики.
Десятипальцевый метод — это очень, очень узкоспециализированная техника, которая нужна всё меньшему числу людей. Программистам не нужна точно
Оуу… все настолько запущено (
Но вот когда я потом решил было освоить то же самое, но в asdf именно с целью упрощения набора кода, то быстро передумал. Потому как стало понятно, что не менее трети нажатий приходится на верхний ряд — тот, где цифры и спецсимволы. А туда дотягиваться ох как неудобно, и всё равно пальцы приходится отрывать от центральных клавиш.
В итоге пришёл к выводу, что десятипальцевый метод подходит только для набора текстов, но совершенно непригоден для ввода символьно-цифровой каши.
Потому как стало понятно, что не менее трети нажатий приходится на верхний ряд — тот, где цифры и спецсимволы
А почему ваш редактор сам не завершает ваш ввод?
А с символами — действительно беда.
Но то, что нет пользы для программиста/верстальщика в знании английской раскладке вслепую — не согласен.
Освоил их одновременно. Не жалею о потраченном времени. Уже многократно окупилось.
Правильный тренажёр — KeyTo или VerseQ. Вроде бы, щас они запилили даже онлайн-версию. Там не надо сначала миллион раз набирать «оло лолооллоло оллоло лол» а потом еще миллион раз «ожж жжожожо жожо», сразу идёт тренировка всех символов в комбинациях, наиболее часто встречающихся для данного языка.
И нет, я не имею никакого отношения к авторам тренажёра, и они мне даже не платят за рекламу. Просто тренажёр реально хорош :)
| потери времени и внимания
Бу-гагага.
Скажите еще, что вы одним пальцем тычете в кнопки с размаха. Пока другая чем-то там занята.
Что это вообще такое?
Хотя, может у вас 10 пальцев на руке.
И его совсем юного продолжателя — neovim. В который добавлен полноценный терминал, асинхронные комманды и много других фич уже работающих или только планируемых
Если пункт «Заблуждение №5» не прошёл мимо вашего внимания, будет интересно узнать мнение по существу.
Причем раньше пользовался продвинутыми хоткеями в IDE — это тоже удобно, но vi режим есть практически везде и лично мне это удобнее.
Похоже нас обоих раздражает фанатизм.
Я в этой статье нашёл пару интересных нюансов которые не знал, но пожалуй тон статей про Вим начинает напоминать истерию вокруг веганов и вейперов.
Согласен с тем, что на написание кода уходит не самая большая часть времени.
Как мне показалось, аргументация в статье была про то, что эту небольшую в процентном соотношении часть работы можно делать максимально удобно, сосредоточившись на коде — записывая, редактируя, стирая — параллельно с обдумыванием не обостряя внимание на инструменте, так как обдумывают какие-то вещи чиркая на бумаге карандашом.
В статье косяк видимо, после ctrl+r надо нажать "-" (минус) и строка вставится.
Ну и как с таким отношением к точности агитировать к переходу на vi/vim?
А здесь же даже толком не поймёшь, в чём ошибка, да и нагуглить решение сложнее.
Я не знаю почему в статье не точно написано, может быть в vi это и сработает, но в vim работает с "-". Вообще я бы не рассматривал эту статью как сборник рецептов для старта изучения. Она просто показывает какие "крутые штуки" можно делать с вимом. Что-то типа "учи программирование делай игры".
Ещё большой недостаток перехода состоит в том, что для более-менее нормальной работы потребуется выучить сразу много хоткеев, из-за чего первые «несколько недель», как пишет автор, производительность сильно упадёт, а работать-то надо прямо сейчас.
По проходить vimtutor в свободное время, за пару часов база со всеми хоткеями будет освоена. Производительность упадет из-за комбинирования этих хоткеев. Но это уже не проблема вима, это проблема всех хоткейных программ.
Плюс команды в vi могут быть сильно деструктивные — промах по клавише может выполнить совершенно другое действие.
Сначала надо промахнуться. Но даже если промахнулись, то можно отменить любое действие. А если действие не отменяемое, то это уже промах как-то неслучайный.
После Ctrl-r надо набрать название регистра (что-то вроде именованного буфера обмена), из которого вставлять текст. В данном случае "правильнее" набрать двойную кавычку (регистр по умолчанию), т.е. <Ctrl-r>";<Esc>
. Или можно <Ctrl-o>p;<Esc>
.
* Вырезание: cw — 2 кл.
* набор текста
* Новая строка над текущей — Shft-o — 2 кл.
* набор текста
* Вставка вырезанного — y — 1 кл.
* завершение — esc — 1 кл.
итого: 4 кл.
Хотите поиграть в VimGolf? )
Допускаю, что это отличная идея если надо обосновать — почему код на полчаса пишется 2 недели. Но для реальной работы это бред.
Я люблю и vi и far и idea, и на самом деле в статье хорошие и годные примеры. Просто непонятны эти нападки на IDE как в ней так и в каментах.
Это как спорить что лучше win или linux без указания задачи.
vim отличный инструмент. На этом следовало поставить точку и давать примеры использований, а не сравнивать с другим, причем неправильным.
Сейчас «регэкспы» с заменой даже в ворде есть.
Из моих личных наблюдений сложилось мнение что пристрастие к виму сродни моему пристрастию к перлу. Это просто любовь. И тут не может быть объективных аргументов.
Единственный вменяемый аргумент который мне доводилось слышать — вим везде одинаков. Работаешь ты локально или удаленно с телефона с виндоус. Это правда, но если проект не разрабатывается исключительно удаленно, то последнее — редкость, форсмажор. В таких ситуациях и нано сгодится.
Другое дело, что для этого хорошо бы иметь нормальную полноразмерную клавиатуру с полноценным командным блоком, ибо современные «дизайнеры» любят то блок со стрелками сделать в микроформате, то экспериментируют с расположением и наличием Insert/Delete и прочих допклавиш, а то и вовсе выстраивая их столбиком. (Отчасти я понимаю такие извраты в ноутбучном формате, когда нужно «впихнуть невпихуемое», но не понимаю как перенос данной концепции в десктопные клавы, так и использования ноутбучной клавиатуры при постоянном и объемном наборе, вместо того, чтобы подключить полноценную USB-клавиатуру).
Вообще же стенания поклонников VI/VIM о том, что их и VI не понимают, мне напоминают возмущения веганов.
«Вы просто десятипальцевым методом не владеете, вот и беситесь».
Ну и дискуссию по поводу удобства использования VI/VIM в качестве IDE можно закончить сразу, вспомнив основной аргумент, что VI легко превращается в IDE. Нужно всего-то: почитать доку, привыкнуть к стилю командному (!) редактирования, поставить пару десятков плагинов и написать под себя конфиг. Лично меня такой gentoo-style не устраивает.
Если мне нужен текстовый редактор — мне нужен именно текстовый редактор, а не коммандный процессор с функциями редактирования текста. Если IDE — значит полноценна IDE. Со всеми плюшками, которая она дает.
На вкус и цвет…
Microsoft Natural с проводами имеет отлично расположенные клавиши. Жаль, выпускать перестали. Когда сломалась пришлось уже беспроводную покупать и она без нампада.
базовое привыкание — это всего лишь 20 минут прохождения vimtutor
Это не всегда так:
IDEA — шикарна под Java.
Хороша под те языки, которые поддерживают сами разработчики — Python, Ruby…
Но скажем под Go — vim использует абсолютно тот же механизм предсказаний при наборе кода, что и IDEA — а именно написанный нашим соотечественником GoCode.
И от шикарного предсказания и от шикарного рефакторинга, которые есть в IDEA для Java, ничего выдающегося не остается — по сравнению с vim для Go.
Или продолжайте использовать никудышный редактор кода своей IDE.
Придется потратить от нескольких недель до нескольких месяцев и первый опыт не будет приятным
Тратить аж несколько месяцев на обучение какому-то редактору, тогда как для эффективной работы в любой IDE достаточно пары часов, чтобы привыкнуть к интерфейсу и пары недель, чтобы привыкнуть к горячим клавишам.
Единственный повод немного знать vi/vim — редактирование файлов на хостах, где больше ничего нет.
Хочу переименовать названия.
Пример №1: что делать, если ваш редактор не умеет сгенерировать объявление и тело метода одной атомарной командой.
Пример №2: что делать, если ваш редактор не имеет рефакторинга «выделить локальную переменную», который вызывается одной горячей клавишей.
Пример №3: что делать, если в вашем редакторе нет семантического выделения блоков CST-дерева.
Ну серьёзно. Я понимаю, что изучить vi может быть полезно, мало ли где окажешься. Я понимаю, что некоторые просто фанатеют от vi. Но заявлять «Или продолжайте использовать никудышный редактор кода своей IDE» просто глупо. В нормальных IDE (IDEA, Eclipse) всё из этой статьи можно сделать быстрее, удобнее и надёжнее.
Только не в базе.
А ставится плагинами под конкретный язык программирования.
Он же универсальный редактор и под конкретный язык нужно включить ту или иную функциональность отдельно.
Первые 2 пункта я сходу знаю что нужно для моего языка программирования.
Третий — что-то смутно знакомое, точно к сожалению не скажу кто это реализует.
Статьи появляются потому что кто-то делится своим опытом. Эта статья, согласен, несколько ангажированна, давящая на «ты тупой, если не используешь вим».
Исходя из того, что вим бесплатен и не рекламирует себя за деньги, стоит задуматься, — а почему так много статей собственно?
Я задумался. Холивары не убедили. Обучился раболе с вим (это недолго, вопреки заблуждениям), вполне достаточно для начала пройти vimtutor. Чтобы делать собственные выводы, а не в стиле «не читал, но осуждаю».
Например, подумайте про интерфейсы цифровых камер, сколько тут пересудов. И поскольку по сути они все равноценны для подавляющего большинства задач, споры Canon/Nikon/Sony/etc часто сводится к обсуждению «как неудобно делать то-то и то-то на такой-то камере», т. е. к эргономике интерфейса.
А почему с этим возникают проблемы у разработчиков… Ну, в камере очень дофига разных функций, и нужно как-то обеспечить к ним доступ. Самым первым появляется отдельный режим «меню настройки», а там страницы, а ещё режим «просмотра отснятого» и так далее… и в этих режимах органы управления, которые устанавливают диафрагму, выдержку и так далее, имеют другие функции.
И вот пока ты там копался перед тобой возник кадр, ты инстинктивно ставишь выдержку, спуск… и фейл, потому, что ты был в меню и выдержка не поменялась, а ты там вместо этого что-то прокрутил! У меня было такое, это очень обидно.
Более узкоспециализированный пример — микшерные пульты. Если у цифрового пульта «аналоговое» управление, т.к. каждая ручка ответственна только за одну свою конкретную функцию — это прямо пишут одним из первых пунктов, как преимущество! Ну и всё равно тут есть проблема — часто бывает, что есть «страницы», когда условно на 32-канальном пульте всего 16 фейдеров, и ты можешь переключать, 1-16 каналы ты сейчас рулишь, или 17-32; а для тембров и сабмиксов вообще выделен один набор органов, и чтобы поменять что-то в канале, нужно его выбрать и тогда только крутить. Некоторые приёмы, которые раньше работали на аналоговых пультах, тут недоступны — например, элементарно невозможно поменять панораму сразу на двух каналах (плавно «развести» их налево-направо) — крутилка панорамы одна, приходится регулировать каналы по очереди!
Именно всё это это и является причиной того, что «старшее поколение» с таким трудом осваивает современную технику, компьютер, да и вообще того, что компьютер приходится осваивать.
У вас конечно есть предолжение, как добиться подобного в vi — как сделать так, чтобы не нужно было думать о том, какие функции у кнопок в данный момент. Это уже ближе к идеалу, но выглядит как костыль: мы должны сознательно всегда входить в особый «модальный» режим ввода и сразу по окончании не забывать из него выходить. Очевидное развитие этой идеи в направлении упрощения — чтобы отдельного режима вообще не было… и мы приходим к традиционному редактору.
Обратите внимание, самым простым интерфейсом является карандаш. Никаких состояний в нём нет!
Продаются, имеют разные размеры как по количеству клавиш, так и размерам самих клавиш.
Можно с такую забить все нужные комбинации и носить с собой работая в чужих системах.
Но стрелочки, функциональные, pgup/pgdown/insert/etc уже есть, их не надо носить с собой!
Я бы ещё сослался на книгу Джефа Раскина — Интерфейс: новые направления в проектировании компьютерных систем. Он там, в том числе, достаточно убедительно обосновывает вред модальности для удобства интерфейса.
Заметьте, про что бы ни шла речь в книге, модальность, куча режимов и состояний, в которых привычные контролы принимают другие функции — это плохо и отвлекает внимание всегда, какой бы это интерфейс ни был.
В командном интерфейсе, например, не должно быть ничего, кроме команд. Клавиатура должна быть выделена эксклюзивно под набор команд, в идеале — даже освобождена от интерактивной реакции на ответы этих команд.
Заметьте, про что бы ни шла речь в книге, модальность, куча режимов и состояний, в которых привычные контролы принимают другие функции — это плохо и отвлекает внимание всегда, какой бы это интерфейс ни был
Такое чувство, что у вас не работает логика… Что значит: «про что бы ни шла речь в книге»? Книга о GUI, мы о CLI, чувствуете разницу? То что удобно, модно, молодежно под GUI, может быть вообще не применимо для CLI и наоборот.
Кстати, вы в курсе, что GUI это модальный интерфейс?
Во-первых это неверно (естественные интерфейсы по сути ближе всего к GUI и не могут быть модальными, а значит сквеоморфные приложения, которые их имитируют, тоже немодальны), во-вторых — не имеет отношения к вопросу.
во-вторых — не имеет отношения к вопросу
Как же не имеет отношения, если вы приводите в пример книгу, которая утверждает неудобство модальных интерфейсов и при этом описывает GUI интерфейс? ) Имеет еще какое отношение.
Во-первых это неверно
Ну как же не верно, вы должны переключаться от одного устройства ввода к другому, что создает модальность на аппаратном уровне.
Нет, никакой модальности это не создаёт. Модальность — это когда я использую одно устройство для активации нескольких разных функций. Я должен следить, какую функцию сейчас я активирую, что плохо. Наоборот, когда для каждой функции своё устройство ввода — это и есть немодальный вариант.
Нет, я смогу их использовать одновременно. Возможно, смогу одну и ту же функцию вызывать разными способами, и буду выбирать подходящий в зависимости от ситуации; это весьма улучшает интерфейс. Ну примерно как одну и ту же клавишу на фортепиано я могу нажимать разными пальцами, в зависимости от положения рук, в зависимости от того, зачем мне эта клавиша нужна.
Вообще ещё раз: модальным интерфейс делается, когда некоторая кнопка перестаёт на время вызывать свою функцию, или начинает вызывать другую. Например, при вводе текста я жму "ввод" для перевода строки, а мне операционка выкидывает вообще не относящееся к редактору сообщения, перехватившее это нажатие и получается, что я отправил "ввод" не туда. Вот за это надо убивать, это плохо и поэтому я виндой пользоваться не собираюсь. В случае в вимом, если я в режиме ввода, кнопка i означает ввод символа i, а в командном режиме — переход в режим ввода. Я не могу просто в случайный момент времени не глядя нажать i и быть точно уверенным в том, что произойдёт. Это модальный интерфейс и это плохо.
А вот если взять синтезатор и завернуть в него две клавиатуры, уверен: вот эта клавиша вызовет этот звук и всё, других действий ожидать не придётся. Хоть десять клавиатур и другие контроллеры. Я могу бегать между клавиатурами, но вон та клавиша вон той клавиатуры всегда вызывает вот этот же самый звук.
Нет, я смогу их использовать одновременно
Так же одновременно, как и режимы Vim.
Возможно, смогу одну и ту же функцию вызывать разными способами
Как и в Vim.
модальным интерфейс делается, когда некоторая кнопка перестаёт на время вызывать свою функцию, или начинает вызывать другую
Нет, модальный интерфейс это такой интерфейс, который поддерживает различную логику обработки команды в зависимости от некоторых условий (будь то состояние системы или используемый манипулятор).
Я не могу просто в случайный момент времени не глядя нажать i и быть точно уверенным в том, что произойдёт
Конечно не можете, вы же пользуетесь Vim, а не бегаете ногами по клавиатуре. У вас для работы есть такая вещь как — мозг.
А вот если взять синтезатор и завернуть в него две клавиатуры, уверен: вот эта клавиша вызовет этот звук и всё, других действий ожидать не придётся
Не знаю чего вас все время уводит в сторону, но синтезатор тоже имеет модальный интерфейс и в зависимости от текущих настроек, одна и та же клавиша может давать различный звук. Это тоже по вашему плохо?
Совершенно естественно, что внимание человека направлено на его задачу, а не на состояние интерфейса
Как же тогда вы объясните то, что я не совершаю модальных ошибок при работе в 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, вы бы хоть ознакомились с предметом обсуждения…
А хотя нет, лучше не нужно ни с чем ознакамливаться и продолжать сотрясать воздух пустыми комментариями, которые вам «хочется писать» )))
В версии вима под Windows Alt+F4 закрывает окно с вимом. Это стандартное поведение 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?
А когда агитируют за вим против IDEA, то не зависит?
Да разницы вроде никакой, но когда речь шла об агитации за вим вы написали, что это делают придурки, а когда об агитации за IDE вы написали, что зависит от задач. И я удивился, что в одном случае зависит, а в другом нет.
Конечно имеет. Т.к. TUI — это, по сути, GUI нарисованный в терминале псевдографикой, то все ваши комментарии в этой ветке теряют всякий смысл. И тематика упомянутой мной книги в одинаковой мере относится как к GUI, так и к TUI.
А ведь даже много лет спустя, даже сегодня не так много хороших и удобных редакторов, которые работают в терминале через ssh. И vi среди них один из лучших.
Вывод из этого один. Я не понимаю людей, которые используют vim для написания кода. В статье уверенно доказывается, что vim намного лучше всего остального, как текстовый редактор. Но это и есть текстовый редактор. Многие сейчас использует IDE. Но IDE — это не текстовый редактор. У него совсем другие функции.
Вывод в статье совсем неадекватный. Интересная статья, а посыл в ней грязный. Считая себя самым умнын, автор убеждает всех в обратном.
Спасибо за перевод. Несмотря на посыл статьи, материал очень познавательный.
Одно время пользовался vim-плагином, но в некоторых случаях он работал некорректно, так что просто забросил его. Потом пришло понимание, что при наборе текста бонусов от vim практически нет, при редактировании с лихвой хватает возможностей IDE, и, в конечном счете, выигранные миллисекунды не сложатся в сколько-нибудь значимую разницу, все-таки программистам не за набор текста платят.
Кстати, еще постоянно забывают о том, что для выхода в командный режим (то есть довольно часто) надо нажимать Esc, который, вообще-то, находится ничуть не ближе, чем курсорные клавиши, которые так не любят адепты.
По теме: чем продуктивнее инструмент, тем более высок порог входа и кривая обучения. Я знаю людей, которые не осилили ide и продолжают писать в notepad++. Знаю людей, которые исользуют ide, но абсолютно не понимают зачем она им.
Сам использую PhpStorm с нашлёпкой IdeaVIm.
чем продуктивнее инструмент, тем более высок порог входа и кривая обучения
Obvious false.
Резко повысить продуктивность фотографирования позволил автофокус, а позже — возможность немедленно видеть результат. И первое, и особенно второе снизило порог входа и кривую обучения в фотографирование.
Даже если это ваше утверждние обусловить, что касается оно только редакторов, оно не становится вернее. Конечно, такой же яркий контрпример я не смогу привести, но вот kwrite однозначно продуктивнее notepad, тем не менее порог вхождения в него как минимум не выше, а с учётом некоторых особенностей и настроек по умолчанию — он наверняка ниже. В любом случае, доказательств утверждения «чем продуктивнее инструмент, тем более высок порог входа и кривая обучения» всё равно нет, оно голословно.
И вы прекрасно понимаете о чём я писал. Этот снобизм не уместен.
то же контекстное выделение по CTRL+W в IDE от jetbrains для меня во многом проще, удобнее и нагляднее, чем отсчитывать скобочки для команды vim'а
Вы явно не осилили. Скобки считать не нужно, esc использовать не обязательно
Вы говорите что в Vim нужно отсчитывать какие то скобочки, а человек вам говорит, что «отсчитывать скобочки для команды vim'а» не нужно. Отсюда делается вывод, что вы просто не осилили редактор и ваше незнание выдаете за кривость Vim.
Вы меня простите, но автор явно не пробовал продукты от 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 будет работать.
Понятно, что полагается сделать фичу, закоммитить, потом делать следующуюПредполагается использовать changesets, ну или git stash/unstash вручную. Иметь изменения из разных задач в рабочем дереве одновременно — это плохая практика, они могут конфликтовать непредсказуемым образом.
Когда vi используют для программирования (т.е. как замену IDE), то vi проигрывает. Автор статьи этого не понимает.
Когда IDE используют в качестве простого редактора текста (т.е. никогда по сути), то vim возможно в чем-то выигрывает.
>Хотя, если честно, для языков с динамической типизацией нет большой разницы между использованием IDE или vim с кучкой плагинов.
Нет, это не так.
1) Для того же php (самый динамический язык) всё это есть: и рефакторинг, и переименования классов, и подсветка и т.д.
2) Знать кучу плагинов и, что еще хуже, знать все эти 100500 комбинаций клавиш для каждого из этих плагинов — это же адъ. Не надо это сравнивать с IDE, где из коробки идет 99% функционала, а остальное включается нажатием галочки.
Когда IDE используют в качестве простого редактора текста (т.е. никогда по сути), то vim возможно в чем-то выигрывает.
Правда конфигов.
Но сейчас средства разделились на редакторы (набрать текст) и IDE (работать с проектом). Вим получается посередине, как утка. Но это уже не нужно. Если я хочу набрать текст — мне не нужен редактор который осваивать дольше чем IDE, мне нужен ee/nano. А если мне нужна работа с проектом — мне нужна нормальная IDE с большими возможностями и низким порогом вхождения, а не школа белого нидзя по освоению навороченного текстового редактора.
Вы собираетесь 2 дня поработать и потом к IDE не прикасаться?
Я могу сесть за IDEA и начать там кодить в интуитивно понятном окружении эффективнее чем NP++ не используя 90% фич оптимальным образом (например, тыкаю мышкой вместо хоткеев).
Со временм я изучаю оптимальные способы использования известных фич и новые фичи и начинаю кодить еще эфективнее.
Это называется низкий порог вхождения.
Зайдя в вим без знания системы команд я не увижу позитивных отличий от нано. Только побешусь что хрен знает как тут сохранить и выйти.
Т.е. чтобы начать там работать эффективнее чем в нано надо что-то читать, понимать и запоминать вещи которые лично я, кроме как в виме не видел нигде.
Низкий порог вхождения означает использование базовых навыков и функций.
Это не эффективно, т.к. ниже базового ничего нет.
Находясь на базовом уровне вы эффективность можете только повышать, значит — базовый неэффективен изначально.
Логично?
В общем, всяко бывает. Нет тут простой связи.
Вообще, почему-то считается, что запомнить 10-20 основных команд vim — это непосильный труд для человека, тем более, связанного с IT.
Памяти не хватает?
Сразу поднимается волна непонимания и возмущенных воплей.
Зачем эти разговоры об «интуитивности текстового редактора», когда 99% проблемы решаются за 2 часа. Тем более, что этот инструмент остается с вами на всю трудовую жизнь.
Ладно, что тут обсуждать.
Меня не команды напрягают, а режимы, то есть, состояния редактора. Я считаю, что чем меньше режимов, тем лучше. Чем меньше модальности, тем лучше. Чем меньше функций висит на каждой конкретной кнопке, тем лучше. Чем меньше, тем лучше. Идеал — когда ничего нельзя убрать.
И, про запоминание команд и привыкание к нему: вот с этим я полностью солидарен. Не стоит овчинка выделки. Да и про то, что вы, давно использующий и хорошо знающий vim реально получили ускорение хотя бы работы с текстом тоже бабка надвое сказала.
Переключение режимов на автомате.
Мне собственно все равно, используете вы его или нет.
Мне удобно, я использую. Вас не агитирую.
Что поразительно, таких как вы очень мало. Большинство vim-еров реально утверждают, что так удобнее и быстрее и тому подобное.
Статья дурацкая, минус поставить и забыть.
А то что так удобнее и быстрее и тому подобное, ну да, так и есть. Я тоже это утверждаю.
А ide мне не удобно, пробовал, сложно.
Для меня удобнее и быстрее vim.
Васе emacs
Пете visual studio
Выбор есть, что еще надо.
Есть основания? Все собрались тут, чтобы вас обмануть и поиметь от этого какую-то выгоду?
Вы же сами поддерживаете этот спор, задаете какие-то вопросы.
Вы вим этот, пресловутый, никогда не видели, судя по всему.
Говорят вам, что быстрее вводить тект в нем — не верите.
Говорят, что командный режим — дает больше возможностей — не верите.
Ну так решите проблему для себя, поставьте, или забудьте. Смысл спорить о том, чего вы не видели и не понимаете.
Смысл спорить о том, чего вы не видели и не понимаете.
ЧСВ и все такое.
Тем более, что мне тут слили рейтинг минусами и ограничили частоту комментов.
Хотя я не из ИГИЛ и даже ни разу не матюкнулся.
Идиотская система.
Идеальный юзер здесь не должен сильно выделяться из общей массы, иначе и пукнуть не дадут.
Правильно ли это для IT ресурса, призвание которого побуждать человека к творчеству и генерации идей?
Думаю — нет.
PS чтобы участвовать в холиварах надо накапливать карму заранее… иначе будете как я раз в час писать коммент… а может и реже :)
чтобы участвовать в холиварах надо накапливать карму заранее…
Есть способ проще, дождаться когда сольют карму и забить на хабр. Со временем на хабре останутся только определенный контингент юзеров и хабр вымрет, а на его пепелище родиться другой блог с более адекватным подходом к оценке.
Идите вы нах со своим сайтом.
Вон, меня в статье дураком назвали, и инструменты мои дурацкими, потому, что не vim.
Вы цитируйте, не стесняйтесь.
Я тоже за то, чтобы была одна кнопку, кликая на которую все остальное делалось само. Но юзер должен как-то получать доступ к богатым возможностям редактора. И вариантов это предоставить не много. Это или мышиный интерфейс — меню, тулбары, или командный режим. Командный режим гораздо быстрее.
Зачем вы мне дали эти ссылки? У меня проблем с вим нет, я его давно освоил и наслаждаюсь.
Изобретательные айтишники сделали для таких неудобных условия отличный vi-vim, который ушел далеко вперед от изначальной работы. Но большинству — он неинтересен. Поэтому очень полезно писать о малоизвестных инструментах интересные плюшки — всегда найдутся люди, которые работают в условиях, где это будет крайне полезно. Но сравнивать инструменты, без подачи изначальных условий, еще и проецировать узкоспециализированную тулзу на большинство — некомильфо.
Если вам кажется, что командный режим в vi гораздо быстрее, то давайте так — я — опытный пользователь ZX-Spectrum, будем меряться в скорости набора программ на Spectrum-бейсике, где в зависимости от режима, одна и таже клавиша могла ввести разные символы или операторы целиком, а режимов 5 или даже 6?
Я «goto 1» наберу двумя кнопками, и что? где модальный редактор спектрума?
P.S. Нет смысла к чему-то привыкать. Есть смысл, если приходится пользоваться vi, изучить его возможности и упростить себе задачу.
Поясню — если интерфейс тормозит, то работа мышкой приводит к постоянным промахам и ожиданиям — кликнул куда-то мышкой, и обязательно нужно дождаться, пока курсор туда переместится, чтобы что-то сделать. Начал что-то выделять стрелочками — и нужно дождаться, пока все выделится.
В VI этой проблемы не было в принципе — ты мог нажать 10-20 клавиш, четко «запрограммировав действия», и пока они дойдут на удаленный сервер, уже закрыть VI. В то время ни один редактор так четко не мог.
Кроме того, IMHO vi это не IDE — это редактор, который крайне полезен сисадмину, потому что для правки текстовых файлов (быстро исправить конфиг) — он идеален. Маленький, мгновенно открывается, отличная навигация, огромные возможности для автоматизации действий. VI и SED — и все будет хорошо.
То, что VI пролез в программирование — ну наверное на фоне популярности среди переучившихся админов.
P.S. Вдобавок vi есть сходу во всех *nix, это как notepad, только сразу почти notepad++
Про два раза Esc (чтобы гарантированно перейти в командный режим) я знаю, но это не отменяет вопроса…
Языки(топ, иногда бывают и другие): bash, python, erlang, go, javascript, haskell, c, ruby.
Конфиги: список слишком длинный чтоб его тут озвучивать.
60 % времени на удаленных серверах.
А теперь порекомендуйте мне ide, под мой профиль.
Стрелки для навигации использовать на macbook не удобно, home delete page up down
везде разные, то есть ими пользоваться опять же не удобно.
Подсветка для всех типов файлов обязана быть, проверка синтаксиса, проверка типов, навигация по функциям и прочее для комфортной жизни. Мышь противопоказана, ssh и все дела постоянно.
Какая idе мне подойдет?
И никто не говорит о том что любая IDE лучше вима в любом случае, даже если вы на голове стоите. Речь о среднем по больничке. В обычных условиях.
Личное удобство обсуждать вообще странно, это личное дело каждого.
P.S. у эклипса (вроде) и идеи (точно) есть прозрачный деплой на удаленный сервер. Опять же, фича ситуативная: если есть возможность иметь локальную копию проекта (без запуска), вы редактируете локально а IDE деплоит куда настроите.
Даже если убрать работу на удаленном сервере, если речь идет про зоопарк языков, и различных разметок, любая ide сразу сливает в удобстве использования.
vim, emacs — универсальные инструменты, с возможностью расширения функциональности
ide — узкоспециализированный, как правило заточенный под конкретный технологический стэк
Смысла их сравнивать нет никакого.
А реплики типа эти… его все еще используют, могут говорить только…
В среднем по больничке ни vim ни ide не нужны от слова совсем.
А что, простите нужно обычному разработчику от слова совсем?
Это узко специализированные инструменты, часто взаимозаменяемые.
Это уже похоже на какую то демагогию.
vim, emacs — универсальные инструменты, с возможностью расширения функциональности
ide — узкоспециализированный, как правило заточенный под конкретный технологический стэк
Eclipse, IDEA — универсальные инструменты, с возможностью расширения функциональности
Видимо я не очень понимаю что вы имеете ввиду под термином ide
Какой то прям очень «тонкий» коммент.
Intellij IDEA. все языки кроме С
bash, python, erlang, go, javascript, haskell, c, ruby
Ясно, понятно…
Постоянно за мышкой тянуться нужно.
Настройка через GUI, плевался.
Сложно.
Терминал одно название.
Не удобно.
Вспоминаю как страшный сон.
Это мое впечатление от intellij idea.
Мой выбор в пользу vim.
Ваш intellij idea.
Все довольны.
Или продолжайте использовать никудышный редактор кода своей IDE.
Но, в любом случае, никогда больше не заявляйте, что пользователи vi придурки.
Что за двойные стандарты?
вы пожете пользоваться мощью IDE и фичами по набору текста в vi
В Vi нет фич по набору текста, в Vi модальность. Ни одни плагин для IDE для реализации поддержки Vi мода не реализует в полной мере эту модальность.
Поробовал фичу с «iHelloESC .», в идее работает
Вы о чем вообще? Я о плагинах, эмулирующих Vim говорю. Или очередной демагог?
где это нужно в реальной жизни
Что «это»?
Я пошевелили пятой точкой, установил плагин вима для идеи, попробовал пример из статьи, где говорится о модальном редактировании. Пример отработал, вот и уточняя, какие же именно отличия в реализации, в ответ же получаю переход на личности.
Я пошевелили пятой точкой, установил плагин вима для идеи, попробовал пример из статьи, где говорится о модальном редактировании
С этого и следовало начинать свой вопрос.
1. Попробуйте забиндить 'gC для автоматического добавления всех изменений в индекс и открытия окна ввода комментария к коммиту.
2. Попробуйте перейти к дереву файлов проекта с помощью Ctrl+j и выбрав с помощью j/k некий файл, открыть его с помощью t в новой вкладке
3. Попробуйте перейти к объявлению метода установив на него курсор и нажав Ctrl+j
Продолжать можно долго.
1. Ctrl+k — открывает диалог коммита с полем для комментариями и списком измененных файлов с установленными чекбоксами
2. Alt+1 — фокус на дерево файлов, далее просто набираешь имя директории/файла и курсор переходит по совпадениям
3. Установить курсор и нажать Ctrl+b
Это из коробки, на самом деле можно настроить сотни хоткеев, не говоря уже о макросах. И да, в продуктах от JetBrains можно работать вообще без мышки. На клавиатуре куча клавиш — зачем ещё и режимы?
Я пошевелили пятой точкой, установил плагин вима для идеи, попробовал пример из статьи, где говорится о модальном редактировании. Пример отработал, вот и уточняя, какие же именно отличия в реализации, в ответ же получаю переход на личности.
А вот мой ответ:
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?)
Также использую множество горячих клавиш для таких операций как, например, «удалить строку», «дублировать строку», «закомментировать/раскомментировать». И это действительно повышает скорость кодинга, когда реже переключаешься на мышку. Однако совсем без мышки не обойтись, поэтому я даже выбрал клавиатуру без Numpad-а, чтобы было еще удобнее перемещать руку на мышку и обратно.
Или продолжайте использовать никудышный редактор кода своей IDE.
Это новая мода такая оскорблять программистов? В топку с таким подходом.
Тут недавно был эпизод как один из коллег, пользующийся вимом, жаловался, что вот дескать, неудобно, что у вас столько use надо писать. Не все даже вопрос поняли, я последний раз use руками писал не помню когда, кто-то вообще забыл что use автоматически в шапку файла добавляется.
Решил поискать скринкасты слепого десятипальцевого кодирования в 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. Одной из главных мыслей данной статьи, кстати, является мысль о том, что вим действительно своеобразен, но его своеобразие вызвано не историческими, а сугубо практическими причинами. Причинами, которые действительно объяснимы и понятны и делают вим лучше, а не просто другим.
Автор излагает с позиции "вот вим, это хороший, удобный и современный редактор, который многое может — не надо думать, что все, кто им пользуются — тупые ретрограды".
Но вижу в текстах автора вижу отрицательную психоэнергетику…
1) Сломаны копья в сраче «мышь vs. слепой десятипальцевый метод™», но не упомянуты ни трекпоинты («клиторы»), ни навигация тачпадом большими пальцами — оба без увода рук с основной позиции. Равно как и плагин для вима EasyMove для быстрого прыжка в любое видимое место без особого задротства.
2) Vim головного мозга в терминальной стадии с внедрением клавиатурной навигации везде подряд (в особенности в браузеры, там с этим просто). Тормозные хинты портят UX не менее, чем в 90-х портили тормозные и громоздкие мышки. Также картина неполная без срача «клавиатура vs. тачскрин» касательно мобильных устройств и применения альтернативных клавиатур (не QWERTY) на десктопе.
3) Мнения людей в возрасте, заработавших RSI от мышевозни либо наоборот — от долгого лежания рук в основной позиции на неэргономичной клавиатуре.
4) Опыт скриптования среды и написания собственных плагинов для Vim/Emacs и IDE. Также макросы vs. сниппеты vs. мультикурсор.
5) Ресурсопотребление (ну а что, программист без 16 GB рамы и SSD с нынешними-то зарплатами себя не уважает :->).
- emacs — если надо редактировать по ssh что-то посложнее чем «Hello world»
- 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? в пределах погрешности измерения?
Проще просто сказать "фломастеры на вкус и цвет разные".
Я решил эти споры для себя проще:
Изучил 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-овцами.
Рефакторинг, к примеру, для вима, то, чем в свое время взяла IDEA — нынче это уже нормально и для вима (с соответствующим плагином).
Та же крутая IDEA крута под Java — так как у IDEA свой разбор синтаксиса.
А вот функционал IDEA для Go, к примеру, ничуть не круче vim, так как синтаксический анализ и в IDEA и в vim базируется на одном и том же gocode.
Засекать можно когда угодно. IDEA может запросто начать тормозить в разгар работы, при открытии очередного диалога.
Для Java соревноваться с IDEA — глупо.
Для Go — ставите в vim плагин являющийся стандартом де-факто vim-go, читаете к нему доку, оставляете то, что автор vim-go советует. Доставляете общеупотребимые популярные плагины для vim (easymotion, figurative и т.п.).
Другие языки меня не интересуют.
можно не читать. Дальше все от религии.
Отсюда все споры/разногласия и высказывания «смотрите как в нашем редакторе быстро можно сделать ххх» — примерно как совет плывущим в валенках поменять их на сапоги, мол быстрее получается.
Клавиатура для начинающего — рай, все буковки видны, тыкай сколько хочешь, не запутаешься. И скорость не нужна, тут бы с экраном разобраться…
Клавиатура для профи — ад, прямо чуствуешь как мысль спотыкается об эти клавиши. Вспомните то чувство, когда приходишь в гости, а там незнакомая клава (с большим энтером и, не дай бог, кнопкой ресет под delete). Знаю многих прогеров, которые носят клавиатуры с собой, потому что привыкли (делать это быстро, а не искать «где же тут долбанный бэкслеш?!»)
Альтернативы? Были и есть. Вот например:
![image](https://habrastorage.org/getpro/habr/comment_images/c27/c51/131/c27c51131dbe94c8d38e1776d0c0e210.jpg)
Но все равно клавиатуру не вытеснить — инерция сознания. Научившиеся не хотят переучиваться, новеньких натаскивают на существующее оборудование.
и никак не могу найти картинку, когда клава разделена на две части, левая стационарная, а правая — мышка с аккордной клавой %) то есть руки вообще перемещать не надо.
Нету никакой инерции. Отдельные личности всегда будут «не как все». До сих пор выпускаются даже клавиатуры без стрелочек (Happy Hacking Keyboard, Pro-версия, не Lite).
А аккордные клавиатуры вымерли — потому что это очень неудобно.
И только поэтому. Инерция мышления тут не при чем.
40 файлов, около 200 тыс. строк = 4 месяца
теперь на клавиатуре я херачу работаю элегантнее любого пианиста
коллеги сначала сочувствовали, теперь завидуют
Не убедили.
Абсолютно все приведённые примеры умеют делать современные IDE. Плюс в них есть ещё и InteliSence с контекстной кодогенирацией.
Если мне нужно печатать текст — мне его нужно печатать, а не думать о том "как его печатать".
В vim есть на выбор несколько плагинов с «intellisence» и сниппетами (кодогенирацией)… (таковые есть и для Atom, Sublime, Emacs и пр.) Уж поверьте — современные редакторы мало чем отличаются от IDE.
А, например, для используемого мною языка Go (я могу говорить более предметно, так как в курсе темы) — этот самый intellisence в одной из лучших IDE мира IntelliJ IDEA ничуть не лучше, чем в vim, потому как в качестве базы использует все тот же алгоритм, реализованный в gocode нашим соотечественником.
А vim и проект студии откроет, и скомпилирует и продебажет?
Для 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 — та же ситуация.
Стало быть IDE — излишества.
Vim = редактор + плагины.
Так таки IDE круче?
Для Java — есть. Поэтому JetBrains IDEA — круче.
Для Go — и vim и JetBrains IDEA используют один и тот же код для разбора исходников (это gocode) — поэтому разницы нет.
Я имел ввиду Visual Studio .sln файл
1) нафиг надо изучать. У меня рабочие места по всему городу у заказчиков, проводник/блокнот есть везде, этого добра — нигде.
2) я весьма неплохо управляюсь мышью — можете мне поверить. Если не верите — поиграйте полгода в третий Квейк, где от скорости позиционирования прицела рейлгана зависит ваша жизнь — будете мышью так орудовать, что те, кому вы демонстрируете последовательность действий, будут просить вас показывать помедленнее.
3) был коммент про то — что они там. романы что ли в виме своем пишут? Например, когда я пишу на хаскеле, мне хватает блокнота (и не ++, а обычного виндового блокнота!). Потому что например 250 строчек у меня — полноценный интерпретатор Лисп-диалекта, и это с лексером, парсером, эвалюатором и вводом/выводом в консоль/файл. И скорость набора строки мне фиолетова, потому что думать приходится в сотни раз дольше, чем непосредственно набирать текст кода.
ЗЫ а вообще, продолжая посыл статьи, можно развить идею. Набор текста программы? Прошлый век! Надо сразу писать в АСТ, минуя убогое текстовое представление. Клавиатура? Прошлый век! Изобретена во времена палеозоя вместе с первой печатной машинкой и с тех пор принципиально не изменилась. Надо голосовой набор. А лучше — мысленный. Сидишь, думаешь — «о, напиши мне оптимальный алгоритм решения. Как не знаешь, в интернет слазь, тупая машина! Да не так, тут надо другой код!..» — и так со скоростью мысли будут создаваться шедевры программистского искусства ))))
испытываете шок и отвращение от того что должны нажать «i»
Лучшее, что можно придумать. Вот ты редактируешь, а вот ты… работаешь с документом. Я на серверах всегда использую vi.
Производительность его труда была отвратительной.
Я это не к тому, что vim плох. А к тому, что все от человека зависит.
И еще, сколько строчек кода вы пишете в день? 10? 100? 1000? Я думаю, большинство пишет меньше 100 строчек в день. В основном читаешь (код, документацию) или делаешь debug. То есть, зачем меня должны волновать все эти свистульки vi (или IDE), даже если они быстрее и круче?
использую Vim/vi только на серверах. Если нужно поправить или дописать конфиги, просмотреть какой-то файл или что-то найти (хотя зачастую less хватает).
Пользоваться Vim/vi для полноценного кодинга — это просто приколы мазохистов. тут IDE конечно же выигрывает.
А почему Vim/vi а не какой-нибудь mcedit или другой редактор? Да не знаю, просто привык и не вижу смысла использовать что-то другое. Те действия которые я выполняю в vim/vi не такие уж важные и глобальные чтобы менять свою привычку. Да и если нет vim, то уж vi на сервере точно будет установлен.
Потому что есть способы намного удобней:
- Ctrl-[ (еще удобнее если настроить, чтобы кнопка CapsLock работала как Ctrl)
- добавить в конфиг, например:
" позволяет вместо ESC использовать двойное нажатие "j"
inoremap jj
Когда узнал эти возможности – пользоваться vim стало намного приятнее.
Не надо сразу учить миллиард команд и тд, в первую очередь надо узнать как никогда не пользоваться кнопкой ESC в vim. Это решает.
Вот и все, что я знаю про редактирование текста.
А в vi есть прекрасная команда :q!
Но полноценное боевое положение рук при редактировании текста/кода это левый мизинец на Ctrl и мышка в правой руке. Навигация по Crtl+f.
П.С. кто может закиньте пару плюсов в карму. А то внезапно раз в час могу комментить.
С Atl не понял
Многие редакторы с нажатым Alt (некоторые по Ctrl) воспринимают выделение мышкой как блочное.
Но полноценное боевое положение рук при редактировании текста/кода это левый мизинец на Ctrl и мышка в правой руке
Может вы мне откроете секрет, как вы одной рукой текст печатаете? Или все сводится к копи-пасте?
Ха, так и знал что вместо плюса какая-то злобная душонка закинет минус.
А в vi есть прекрасная команда :q!
Всё бы людям сложности искать. ZQ делает то же самое.
Реквестирую людей, которые освоили Vi и вернулись обратно к редакторам с поддержкой стрелочек и мыши. Есть такие?
А то эта статья напоминает мои отношения со Scala. Сначала плевался, сейчас на джаву смотреть не могу.
Да, даже если вы не можете в это поверить, у редактора vi, увидевшего свет более тридцати лет назад (и его более молодого, всего-то пятнадцатилетнего лучшего клона & большого улучшения — vim) очень много фанатов.
Vim'у не 15 лет, а 25, а VI — 40
Почему, ну почему, эти #?@! придурки используют vi?