На днях один популярный вопрос на Stack Overflow отпраздновал свой юбилейный миллионный просмотр.



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




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

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

У какого количества людей возникают проблемы с выходом из Vim?

В прошлом году около 0.05% от общего числа просмотров приходилось на вопросы типа «Как выйти из редактора Vim?»; это значит, что каждый 20 000-й посетитель приходил на сайт именно с этой проблемой. Иными словами, по будням в часы, когда трафик достигает пика, примерно 80 человек в час нуждаются в помощи с выходом из Vim.

Менялся ли этот процент со временем? То есть можно ли сказать, что разработчики постепенно осваивают эту функцию собственными силами?



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

Статистика по странам

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



Как видим, программисты из Украины, Турции и Индонезии довольно часто застревают в этом редакторе: доля вопросов о Vim, связанных непосредственно с выходом из программы, у них больше, чем у всех остальных государств. На противоположном конце спектра находятся Китай, Корея и Япония — у них процент таких запросов меньше в добрые десять раз. Из этого, по всей видимости, следует заключить, что разработчики из этих стран заходят в Vim не по случайности и хорошо представляют себе, что делать, чтобы выйти.

На каких языках пишут те, кто не может сладить с Vim?

Логичным также представляется, что на опыт работы с Vim будет влиять и тот язык, на котором программист пишет код. Эту гипотезу мы можем проверить так: разобьем пользователей на группы по основной технологии программирования и посмотрим на среднее процентное соотношение «вопросы по выходу из Vim» / «вопросы по Vim» у каждой из групп.

Основную технологию программирования мы будем определять на базе того, какой тэг на Stack Overflow пользователь посещает чаще всего (скажем, в моем случае самый популярный тэг — R, на него приходится 52% просмотров). Способ не идеальный, но достаточно надежный, чтобы в общих чертах представить распределение по языкам. Для этой части анализа в выборку мы включали только зарегистрированных пользователей, у которых более 100 просмотров сайта.



Чаще всего сложности с тем, чтобы покинуть Vim, возникают у фронт-енд разработчиков — то есть тех, которые преимущественно просматривают тэги JQuery, CSS и AngularJS. За ними следом идут разработчики на Microsoft (C# и SQL Server) и мобильные разработчики (Android и iOS). Они работают по большей части с интегрированными средами разработки (Visual Studio, Eclipse, Xcode и так далее), а не простыми текстовыми редакторами, поэтому неудивительно, что они более склонны угодить в Vim случайно, чем открыть его умышленно.

Разработчики, которые реже всего заходят в тупик, пишут на C, C++, Python и Ruby. Этот список, на мой взгляд, вполне закономерен: он представляет собой смесь низкоуровневых и скриптовых языков, которые обычно предполагают простой текстовый редактор без графической оболочки. Соответственно, у тех, кто работает с этими языками, достаточно опыта, чтобы выйти из Vim, не прибегая к помощи Google.

Заключение

Когда я увидел, что число просмотров вопроса подходит к отметке в миллион, меня это позабавило, но вместе с тем, я испытал гордость за то, что работаю (и, среди прочего, отвечаю на вопросы) над сайтом, который оказался полезен такому огромному количеству разработчиков. Подумать только: ответ, который предлагаешь, может помочь миллионам людей, о чем бы ни шла речь — об отмене команды в git или использовании ключевого слова yield в Python.

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

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

Комментарии (92)


  1. TimsTims
    26.05.2017 09:39
    +4

    *Объявление гадалки: выведу из запоя, покажу дорогу из комы, верну мужа, выведу заблудших из Вима


  1. t0pep0
    26.05.2017 09:48
    +23

    У Vim есть не только кривая входа, но и довольно крутая кривая выхода =) (Сам вимер, если что)


  1. Envek
    26.05.2017 09:50
    -3

    Не все восприняли это позитивно: https://ebanoe.it/2017/05/25/exiting-vim/ :-)


  1. eblomyac
    26.05.2017 09:53
    +3

    Я ни разу не пользовался vim, но мне стало интересно как все-таки из него выйти?


    1. t0pep0
      26.05.2017 09:58
      +1

      ESC :q! Enter — выход без сохранения
      ESC :wq Enter или ESC :x Enter — выход с сохранением


      1. farcaller
        26.05.2017 11:29
        +1

        :qa! если нажатиями кнопок вы уже наоткрывали сплиты :-)


      1. Jenyay
        26.05.2017 15:36
        +1

        :x — выход с сохранением.


      1. kostus1974
        26.05.2017 18:04

        я по старой привычке всегда нажимаю esc два раза.


      1. khanid
        26.05.2017 20:53
        +7

        Кстати вот вопрос на размышление. Почему ZZ реже упоминается, несмотря на то, что позволяет сохранить и выйти в меньшее количество нажатия кнопок?


      1. asm0dey
        27.05.2017 14:53
        +1

        ESC ZZ — выход с сохренением, ESC ZQ — без.


    1. Envek
      26.05.2017 09:59
      +2

      1. Нажать Esc для выхода в командный режим (на случай, если вы уже в приступе паники успели нажать все клавиши и войти в какой-либо из режимов)
      2. ввести на клавиатуре :q! (восклицательный знак заставит Vim выйти без сохранения, если вы уже нажатием на все кнопки наворотили дел)
      3. нажать Enter
      4. выдохнуть.


      1. EvilsInterrupt
        26.05.2017 12:48

        А если q пивом залило?


        1. berezuev
          26.05.2017 12:51
          +3

          ALT+113


        1. niya3
          26.05.2017 13:18

          А если q пивом залило?

          :exit (оно же :x ). Опционально !


          Если вдруг залип капслок — ZZ или ZQ


    1. Virviil
      26.05.2017 10:16

      Походу гит в линухе на мержах и ребазах выкидывает по дефолту в вим.
      Так что вам ещё предстоит им попользоваться)


      1. berezuev
        26.05.2017 11:29

        кстати, у меня в дебиане по дефолту кидает в Нано… И я вот хз, как переключить на вим.


        1. farcaller
          26.05.2017 11:30
          +3

          задать EDITOR в среде окружения, например export EDITOR=/usr/bin/vim где-то в .bashrc.


          1. Keyten
            26.05.2017 15:30
            +10

            Спасибо, получилось. Как выйти?
            (шутка)


        1. staticlab
          26.05.2017 11:34

          Ещё проверить gitconfig, там тоже можно указать редактор.


        1. BekoBou
          26.05.2017 15:30

          git config --global core.editor vim


        1. Areso
          27.05.2017 09:28

          За что я Дебиану премного благодарен)


    1. Halt
      26.05.2017 11:06

      Ctrl+Alt+Shift+Reset :)


      1. sevikl
        26.05.2017 12:03

        Alt+SysRq+B


        1. Envek
          26.05.2017 19:06
          +1

          Зачем же так жёстко?


          Alt+SysRq+[REISUB] (с паузами между нажатиями клавиш) сделает это гораздо более щадяще.


          1. sevikl
            29.05.2017 13:55
            +1

            это для девочек. бруталы бегут из вима наиболее коротким путём


    1. rrrav
      26.05.2017 11:14
      +7

      В соседней консоли набрать

      ps aux | grep vi
      

      найти pid vim и сделать
      kill <pid>
      

      ;-))


      1. Izaron
        26.05.2017 12:30
        +5

        К чему такие сложности?


        killall vim


        1. rrrav
          26.05.2017 14:11

          Ну так можно все запущенные vim'ы прибить, а надо только свой


      1. rstepanov
        26.05.2017 15:59
        +3

        kill -9, пусть ему будет больно


    1. ArsenAbakarov
      26.05.2017 15:13

      Все хорошо?)


  1. o_serega
    26.05.2017 10:28
    +1

    :q! — выйти без сохранения
    :wq — записать и выйти
    :wq! — записать принудительно
    :x — аналог :wq

    Не благодарите)


    1. skymal4ik
      26.05.2017 10:43
      +3

      Добавлю шоткат ZZ (без двоеточия) — чуть более короткое и удобное на клавиатуре сохранение и выход


      1. o_serega
        26.05.2017 11:04

        Мы так скоро сделаем методичку молодого вимщика)


      1. o_serega
        26.05.2017 13:47

        кстати, на счет удобства, я правой рукой нажимаю шифт и клавишу двоеточия, левой — х, мне выходит удобнее, чем ZZ)


        1. poxvuibr
          27.05.2017 22:16

          И третьей рукой нажимаете Enter, да?;)


          1. o_serega
            27.05.2017 22:18

            Энтр нажимается безымянным пальцем правой руки) Ну вот мне ZZ не с руки, вот такой я странный человек


      1. danfe
        26.05.2017 15:31

        Подтверждаю, самый удобный и быстрый способ выхода из vi.


  1. Caelwyn
    26.05.2017 10:39

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


  1. Eldhenn
    26.05.2017 10:40
    +5

    Это главное, что нужно знать об украинских и турецких фронт-енд разработчиках.


  1. maxru
    26.05.2017 10:52
    +35

    Я два года работал в vim, потому что не знал, как выйти. (с) кто-то на хабре


    1. Skerrigan
      26.05.2017 11:08
      -1

      Боже, вы сделали мой день!


    1. grossws
      26.05.2017 13:02
      +6

      Это © ни кто-то на хабре, а кто-то в англоязычном интернете, скорее всего ещё в 90х. В начале 2000x я уже видел эту шутку.


    1. robert_ayrapetyan
      27.05.2017 00:52

      Давайте к баянам еще вспомним ножные педали для работы в емакс (кажется, еще продаются на ебее)


      1. grossws
        27.05.2017 01:04

        К моей Kinesis Advantage педали идут в некоторых комплектациях или покупаются отдельно. Стоят как крыло от самолёта, правда. Но они, ессно, не специфичны для emacs'а.


  1. jatx
    26.05.2017 10:55
    -1

    Первым делом при настройке удаленного сервера под линуксом устанавливаю туда текстовый редактор ne ;)


  1. cynovg
    26.05.2017 10:56
    +1

    Вы завысили проценты, в оригинале .005% от общего трафика приходилось на вопрос «Как выйти из Vim».


  1. Crandel
    26.05.2017 10:58
    +5

    Вышел из вима, зашел в емакс)



  1. hdfan2
    26.05.2017 12:11
    +9

    Кривые обучения для различных текстовых редакторов:
    image


  1. kostus1974
    26.05.2017 12:39

    статистика доставляет:
    украина, турция, индонезия + люди, колупающие jquery, css и ангуляр )))
    самые умные — рубисты и сишники из китая и кореи.
    идеально совпадает с лично моим представлением о мире ))


    1. oldbie
      26.05.2017 13:11
      +5

      Предположу что в азиатских странах процент такой низкий т.к. у них есть свои ресурсы взамен SO. Ну или свой vim или способ выйти из него с помощью иероглифов =)


      P.S. на самом деле понятия не имею, но тот же китай слабо представлен в соц. сетях, гугле и т.п. как раз по причине "имопртозамещения" и фаервола.


      1. EviGL
        26.05.2017 15:21

        Статистика нормирована на общее число вопросов про Vim, так что количество китайцев на SO тут не при чём.


        1. Diverclaim
          26.05.2017 15:37
          +1

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


          1. Busla
            27.05.2017 12:59

            Дело не совсем в количестве, а в том что до SO из Китая доходит уже отфильтрованная аудитория.


        1. kostus1974
          26.05.2017 17:54

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


      1. danfe
        26.05.2017 15:45

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

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


        1. Ruckus
          26.05.2017 17:37

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


          1. danfe
            26.05.2017 18:22

            Ну, Far это просто для примера, замените на Total Commander (или какие там еще есть манагеры) — результат был бы, думаю, такой же.

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


          1. dimm_ddr
            26.05.2017 18:55

            TotalCommander не подойдет? Настроить его под себя можно без проблем и выглядит он получше Far


            1. MacIn
              26.05.2017 20:59
              +1

              Как в принципе оконный TC может выглядеть лучше консольного Far?


              1. centur
                27.05.2017 03:25

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


                Какая разница вообще чем пользоваться, если это все равно удобнее Explorer? я даже на сервера где гуй тыкаю перетаскиваю папку Q-Dir Portable потому что вот эти 500 кб все равно удобнее explorer.


                1. Busla
                  27.05.2017 13:27

                  Это можно и в обратную сторону озвучить: в чём прикол угорать по графике, когда можно нормально работать с текстом? — всё-таки никакого нового качества, уровня абстракций графика в TC не даёт, а целенаправленно стилизуется под старые добрые панельки.


                1. MacIn
                  27.05.2017 15:30

                  Это сарказм был.
                  FAR это псевдографика и ничем, по сути, кроме «шрифта» от Total Commander а не отличается. Те же панели, та же логика работы с ними. Но у FARа есть хорошие плагины.


                  1. centur
                    27.05.2017 16:12

                    Не знаю, мне как то и цвета и шрифты и рельефность нравятся. И дело не в каком-то принципиальном качестве графики и его преимуществе над консолью — его особо и нету. Не буду приводить примеры всяких исследований которые говорят что людям приятней работать с визуально приятными программами ибо сам считаю это субъективной оценкой ( git extensions > git kraken) Но при прочих равных мне лично нравится пользоваться визуально приятными продуктами. ФАР не по вкусу, вот и все.


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


                    1. MacIn
                      29.05.2017 19:14

                      У Far а как раз проблем с цветами нет, все color coded. Это чисто дело вкуса.


          1. centur
            27.05.2017 03:28

            А что подразумевается под несплит? Q-Dir пробовали (его можно настроить на что-то подобное pathfinder вроде как)?


            1. lobzanoff
              28.05.2017 13:36

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


            1. Ruckus
              29.05.2017 14:01

              Что-то такого плана
              image


              1. Ruckus
                29.05.2017 14:11

                Ну сравните тот скрин, что выше с этим

                скрином
                image


                1. Crandel
                  29.05.2017 14:23

                  Вот тотал

                  image


                  1. Ruckus
                    29.05.2017 14:58

                    Хоть консоль в винде и отвратительна, но её необходимость никуда не уходит, чтоб не терять лог выполнения скриптов, например, или выполнять CMake сборку (gui там может для виндовс-пользователей и удобны, но я только из ide/консоли). Вообще конечно нужно валить обратно на мак, чем дольше в винде тем меньше нравится.


                    1. MacIn
                      29.05.2017 19:16

                      Если вкладки не принципиальны, тот тот же Far имеет стандартный Detailed view с одной панелью.


                  1. centur
                    29.05.2017 15:35

                    отдельная консоль в виде conemu\Cmder очень даже ничего под винду. Терминал приятный, вкладки и все такое. Не сильно хуже того же баша или фиша под WSL :) А если крутить баш не под стандартным cmd а под Cmder — жизнь вообще налаживается =)


                    1. Crandel
                      29.05.2017 15:38

                      Я очень редко пользуюсь Windows, только для скайпа и почты, поэтому вспомнил только то, чем когда-то пользовался


                1. centur
                  29.05.2017 14:24

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


                  Тотал


              1. centur
                29.05.2017 14:14

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



  1. RomeoGolf
    26.05.2017 17:31

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

    Правда, не видно и, скажем, бейсика с паскаль-семейством (Lazarus, Delphi), но тут, видимо, потому, что они с VIM не пересекаются вовсе.

    А может, просто выборка сильно подрезана…


    1. grossws
      26.05.2017 18:16

      Хочу обратить внимание, что в статистике языков совсем не видно ассемблера

      Какого из? И где там высокий порог входа в сам "язык"? Це ж просто мнемокоды опкодов конкретного проца.


      1. RomeoGolf
        26.05.2017 18:19

        Да, вообще-то, любого из… А «мнемокоды опкодов» и «просто» я бы в одном предложении не ставил :-)


        1. grossws
          26.05.2017 18:24

          Что в них сложного-то? Мапятся один в один, адреса на метки пересчитывает ассемблер. Сам домен сложный, но он и на си сложный.


          1. RomeoGolf
            26.05.2017 18:32

            Сложность не в набивке кодов в VIM`е. Сложность в реализации сложного алгоритма. Для которого в какой-нибудь яве есть пицот библиотек, а тут надо изобрести костылевелосипед с экономией каждого байта или наносекунды (иначе написал бы на СРР), для чего надо знать еще и особенности выполнения конкретных инструкций на конкретном камне. Сложность в сопровождении чужого кода, в котором туча «оригинальных решений» и хаков, но мало комментариев. Сложность в том, что асм-программу для встроенной системы надо рассматривать, держа в другой руке схему Э3, а в третьей — карту памяти (если она есть, а если нет — нарисовать сначала). В ассемблер лезут, если не из интересу от безделья или для учебы, то не от хорошей жизни.


            1. grossws
              26.05.2017 18:38
              +1

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


              1. RomeoGolf
                26.05.2017 18:42
                -1

                Можно было бы в первом моем комментарии заменить «ассемблер» на «низкоуровневый язык», но с там есть, да и писать на нем легче. А я, вообще-то, и не спорю. Я о том, что если человек влез в опкоды, то выйти из вима для него не проблема. А если пишет на дельфи, то в вим и не зайдет. Такие крайности. (К слову, часто пишу на асме в виме, много писал на дельфи/лазаре.)


  1. daiver19
    26.05.2017 17:34

    Разработчики, которые реже всего заходят в тупик, пишут на C, C++, Python и Ruby. Этот список, на мой взгляд, вполне закономерен: он представляет собой смесь низкоуровневых и скриптовых языков, которые обычно предполагают простой текстовый редактор без графической оболочки.


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


  1. cyber_genius
    26.05.2017 17:50
    +4

    Спасибо, посмеялся. Я почему-то представляю этих пользователей застраявших в Vim как Винни-Пуха из старого мультика СССР, когда он застрял в норе. :)


  1. AmdY
    26.05.2017 19:36
    +3

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


  1. zooks
    26.05.2017 20:18
    -3

    Давайте не будем смеяться над теми, кто застрял в Vim. Они хотя бы зашли в него, это уже прогресс в сравнении с теми, кто сидит на Notepad++ в Windows XP.


    1. khanid
      26.05.2017 21:01
      +2

      А что не так с npp?
      Это вообще первое, что я ставлю на новый виндовый сервер.
      Он не гробит кодировки, позволяет с ними адекватно работать, в отличие от дефолтного notepad.


    1. MacIn
      27.05.2017 15:30

      А вот сейчас обидно было.


  1. khanid
    26.05.2017 20:58

    Самое забавное, что под vi(vim) даже свой поддомен есть на стэке.
    https://vi.stackexchange.com/


  1. sumanai
    26.05.2017 22:52
    -2

    Я нашёл новый способ выйти из Vim- нужно просто закрыть окно консоли «Bash on Windows».


  1. olegkrasnov
    26.05.2017 23:11
    +1

    При работе с вимом у меня возникает синдром белки:

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