Ты не одинок, 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)
t0pep0
26.05.2017 09:48+23У Vim есть не только кривая входа, но и довольно крутая кривая выхода =) (Сам вимер, если что)
Envek
26.05.2017 09:50-3Не все восприняли это позитивно: https://ebanoe.it/2017/05/25/exiting-vim/ :-)
eblomyac
26.05.2017 09:53+3Я ни разу не пользовался vim, но мне стало интересно как все-таки из него выйти?
Envek
26.05.2017 09:59+2- Нажать
Esc
для выхода в командный режим (на случай, если вы уже в приступе паники успели нажать все клавиши и войти в какой-либо из режимов) - ввести на клавиатуре
:q!
(восклицательный знак заставит Vim выйти без сохранения, если вы уже нажатием на все кнопки наворотили дел) - нажать
Enter
- выдохнуть.
EvilsInterrupt
26.05.2017 12:48А если q пивом залило?
niya3
26.05.2017 13:18А если q пивом залило?
:exit (оно же :x ). Опционально !
Если вдруг залип капслок — ZZ или ZQ
- Нажать
rrrav
26.05.2017 11:14+7В соседней консоли набрать
ps aux | grep vi
найти pid vim и сделать
kill <pid>
;-))
o_serega
26.05.2017 10:28+1:q! — выйти без сохранения
:wq — записать и выйти
:wq! — записать принудительно
:x — аналог :wq
Не благодарите)
Caelwyn
26.05.2017 10:39В первый раз увидел vi когда в первый раз ставил себе линукс в начале нулевых, будучи тупым студентом, без интернета, обычным методом тыка вполне научился править в нём конфиги. О существовании nano, который оказался в разы удобнее для меня узнал через довольно продолжительное время. И я был очень удивлён когда увидел эту статью.
Eldhenn
26.05.2017 10:40+5Это главное, что нужно знать об украинских и турецких фронт-енд разработчиках.
maxru
26.05.2017 10:52+35Я два года работал в vim, потому что не знал, как выйти. (с) кто-то на хабре
grossws
26.05.2017 13:02+6Это © ни кто-то на хабре, а кто-то в англоязычном интернете, скорее всего ещё в 90х. В начале 2000x я уже видел эту шутку.
robert_ayrapetyan
27.05.2017 00:52Давайте к баянам еще вспомним ножные педали для работы в емакс (кажется, еще продаются на ебее)
jatx
26.05.2017 10:55-1Первым делом при настройке удаленного сервера под линуксом устанавливаю туда текстовый редактор ne ;)
cynovg
26.05.2017 10:56+1Вы завысили проценты, в оригинале .005% от общего трафика приходилось на вопрос «Как выйти из Vim».
kostus1974
26.05.2017 12:39статистика доставляет:
украина, турция, индонезия + люди, колупающие jquery, css и ангуляр )))
самые умные — рубисты и сишники из китая и кореи.
идеально совпадает с лично моим представлением о мире ))oldbie
26.05.2017 13:11+5Предположу что в азиатских странах процент такой низкий т.к. у них есть свои ресурсы взамен SO. Ну или свой vim или способ выйти из него с помощью иероглифов =)
P.S. на самом деле понятия не имею, но тот же китай слабо представлен в соц. сетях, гугле и т.п. как раз по причине "имопртозамещения" и фаервола.
EviGL
26.05.2017 15:21Статистика нормирована на общее число вопросов про Vim, так что количество китайцев на SO тут не при чём.
Diverclaim
26.05.2017 15:37+1Как раз таки причем, поскольку если данных вообще очень мало, то сделать надежные выводы по ним нельзя.
Busla
27.05.2017 12:59Дело не совсем в количестве, а в том что до SO из Китая доходит уже отфильтрованная аудитория.
kostus1974
26.05.2017 17:54да конечно же здесь нет связи, о которой я сказал. просто чисто визуально графики распределения весело между собой коррелируют )
danfe
26.05.2017 15:45Vim у них такой же, и выходят из него они так же. Просто любой выпускник университета, идущий работать программистом, почти всегда знает vim, пусть на базовом уровне, и Source Insight.
Привычки к тулзам меняют редко и неохотно; например, в качестве файлового приказчика (простите, не удержался) пользуются исключительно эксплорером (под вендой). Приятель рассказывал (работает в USA, там много китайцев), мол, покажешь им какой-нибудь Far, покивают, но даже не попробуют, что это за штука такая.Ruckus
26.05.2017 17:37Я бы тоже не пробовал, под виндой приятных штук мало и фар не из самых удобных, но крайне функционален, не поспоришь.
Я, как маковод, пользуюсь PathFinder и не нашёл аналога под винду, очень грусть (дайте нормальный несплит менеджер с вкладками и инетрфейсом не как у консоли).danfe
26.05.2017 18:22Ну, Far это просто для примера, замените на Total Commander (или какие там еще есть манагеры) — результат был бы, думаю, такой же.
То есть, вы вот грустите, что нет аналога чего-то, хотите «нормальный, несплит, такой-сякой», ищете, а им кроме эксплорера ничего не нужно, даже когда показываешь, мол, «смотри, как еще можно, быстрее и удобнее». И так со многими инструментами.
dimm_ddr
26.05.2017 18:55TotalCommander не подойдет? Настроить его под себя можно без проблем и выглядит он получше Far
MacIn
26.05.2017 20:59+1Как в принципе оконный TC может выглядеть лучше консольного Far?
centur
27.05.2017 03:25А в чем прикол угорать по консоли когда можно нормально работать с графикой? Не холивара ради, пользовался обоими, остановился на TC потому что сильно удобней оказался, а потом просто привык и уже больше 10 лет на всех рабочих и домашних машинах пользуюсь постоянно.
Какая разница вообще чем пользоваться, если это все равно удобнее Explorer? я даже на сервера где гуй тыкаю перетаскиваю папку Q-Dir Portable потому что вот эти 500 кб все равно удобнее explorer.
Busla
27.05.2017 13:27Это можно и в обратную сторону озвучить: в чём прикол угорать по графике, когда можно нормально работать с текстом? — всё-таки никакого нового качества, уровня абстракций графика в TC не даёт, а целенаправленно стилизуется под старые добрые панельки.
MacIn
27.05.2017 15:30Это сарказм был.
FAR это псевдографика и ничем, по сути, кроме «шрифта» от Total Commander а не отличается. Те же панели, та же логика работы с ними. Но у FARа есть хорошие плагины.centur
27.05.2017 16:12Не знаю, мне как то и цвета и шрифты и рельефность нравятся. И дело не в каком-то принципиальном качестве графики и его преимуществе над консолью — его особо и нету. Не буду приводить примеры всяких исследований которые говорят что людям приятней работать с визуально приятными программами ибо сам считаю это субъективной оценкой ( git extensions > git kraken) Но при прочих равных мне лично нравится пользоваться визуально приятными продуктами. ФАР не по вкусу, вот и все.
А плагины и индивидуальные настройки есть везде — любой инструмент можно заточить под свои привычки или поменять привычки под инструмент.
centur
27.05.2017 03:28А что подразумевается под несплит? Q-Dir пробовали (его можно настроить на что-то подобное pathfinder вроде как)?
lobzanoff
28.05.2017 13:36Собственно и Тотал Коммандер можно в однопанельный режим со вкладками переключить, с деревом или без.
Ruckus
29.05.2017 14:01Что-то такого планаRuckus
29.05.2017 14:11Ну сравните тот скрин, что выше с этим
скриномCrandel
29.05.2017 14:23Вот тоталRuckus
29.05.2017 14:58Хоть консоль в винде и отвратительна, но её необходимость никуда не уходит, чтоб не терять лог выполнения скриптов, например, или выполнять CMake сборку (gui там может для виндовс-пользователей и удобны, но я только из ide/консоли). Вообще конечно нужно валить обратно на мак, чем дольше в винде тем меньше нравится.
MacIn
29.05.2017 19:16Если вкладки не принципиальны, тот тот же Far имеет стандартный Detailed view с одной панелью.
centur
29.05.2017 15:35отдельная консоль в виде conemu\Cmder очень даже ничего под винду. Терминал приятный, вкладки и все такое. Не сильно хуже того же баша или фиша под WSL :) А если крутить баш не под стандартным cmd а под Cmder — жизнь вообще налаживается =)
Crandel
29.05.2017 15:38Я очень редко пользуюсь Windows, только для скайпа и почты, поэтому вспомнил только то, чем когда-то пользовался
centur
29.05.2017 14:24ну скрины из интернетов это хлам. Вот вам коммандер (сборка от impomezia, просто самому стало влом его перенастраивать однажды, и подвернулась очень практичная чужая). Режим панелей для меня немного странный (я таким не пользуюсь, навигация неудобная да и фильтры рулят) но тут в общем можно все сделать так как вам нравится.
Тоталcentur
29.05.2017 14:14там есть и закладки и вкладки. Я сам не особо им пользуюсь, потому как "продал душу тоталу". Он со вкладками и удобный и много всего можно делать. А Q-Dir легковесный и работает — с файлом возиться на серверах от случая к случаю.
Вот вроде со вкладками (уродливые они как гражданская война, в этом плане мак впереди конечно...)
RomeoGolf
26.05.2017 17:31Хочу обратить внимание, что в статистике языков совсем не видно ассемблера. Подозреваю, это потому, что для них VIM чаще всего является осознанным выбором, и кривая входа в язык никак не глаже, чем в VIM. То есть, вопрос выхода не возникает.
Правда, не видно и, скажем, бейсика с паскаль-семейством (Lazarus, Delphi), но тут, видимо, потому, что они с VIM не пересекаются вовсе.
А может, просто выборка сильно подрезана…grossws
26.05.2017 18:16Хочу обратить внимание, что в статистике языков совсем не видно ассемблера
Какого из? И где там высокий порог входа в сам "язык"? Це ж просто мнемокоды опкодов конкретного проца.
RomeoGolf
26.05.2017 18:19Да, вообще-то, любого из… А «мнемокоды опкодов» и «просто» я бы в одном предложении не ставил :-)
grossws
26.05.2017 18:24Что в них сложного-то? Мапятся один в один, адреса на метки пересчитывает ассемблер. Сам домен сложный, но он и на си сложный.
RomeoGolf
26.05.2017 18:32Сложность не в набивке кодов в VIM`е. Сложность в реализации сложного алгоритма. Для которого в какой-нибудь яве есть пицот библиотек, а тут надо изобрести костылевелосипед с экономией каждого байта или наносекунды (иначе написал бы на СРР), для чего надо знать еще и особенности выполнения конкретных инструкций на конкретном камне. Сложность в сопровождении чужого кода, в котором туча «оригинальных решений» и хаков, но мало комментариев. Сложность в том, что асм-программу для встроенной системы надо рассматривать, держа в другой руке схему Э3, а в третьей — карту памяти (если она есть, а если нет — нарисовать сначала). В ассемблер лезут, если не из интересу от безделья или для учебы, то не от хорошей жизни.
grossws
26.05.2017 18:38+1Всё, что вы описываете — относится не к языку, а к домену низкоуровневого программирования вообще. Так что спор чисто терминологический, на мой взгляд.
RomeoGolf
26.05.2017 18:42-1Можно было бы в первом моем комментарии заменить «ассемблер» на «низкоуровневый язык», но с там есть, да и писать на нем легче. А я, вообще-то, и не спорю. Я о том, что если человек влез в опкоды, то выйти из вима для него не проблема. А если пишет на дельфи, то в вим и не зайдет. Такие крайности. (К слову, часто пишу на асме в виме, много писал на дельфи/лазаре.)
daiver19
26.05.2017 17:34Разработчики, которые реже всего заходят в тупик, пишут на C, C++, Python и Ruby. Этот список, на мой взгляд, вполне закономерен: он представляет собой смесь низкоуровневых и скриптовых языков, которые обычно предполагают простой текстовый редактор без графической оболочки.
Мне кажется, это люди, которым не надо юзать SSH, в отличие от фронтэндеров. Ну и и IDE для по крайней мере плюсов и питона полно (я уже молчу о том, что многие просто работают под Windows).
cyber_genius
26.05.2017 17:50+4Спасибо, посмеялся. Я почему-то представляю этих пользователей застраявших в Vim как Винни-Пуха из старого мультика СССР, когда он застрял в норе. :)
AmdY
26.05.2017 19:36+3Ссылка на этот вопрос ходит как мем и имеет мало общего с количеством людей реально застрявших в виме.
zooks
26.05.2017 20:18-3Давайте не будем смеяться над теми, кто застрял в Vim. Они хотя бы зашли в него, это уже прогресс в сравнении с теми, кто сидит на Notepad++ в Windows XP.
khanid
26.05.2017 21:01+2А что не так с npp?
Это вообще первое, что я ставлю на новый виндовый сервер.
Он не гробит кодировки, позволяет с ними адекватно работать, в отличие от дефолтного notepad.
khanid
26.05.2017 20:58Самое забавное, что под vi(vim) даже свой поддомен есть на стэке.
https://vi.stackexchange.com/
sumanai
26.05.2017 22:52-2Я нашёл новый способ выйти из Vim- нужно просто закрыть окно консоли «Bash on Windows».
olegkrasnov
26.05.2017 23:11+1При работе с вимом у меня возникает синдром белки:
Раз в полгода я выбираю день, гуглю новые плагины, перетряхиваю старые. Правлю конфиг, добавляю разных крутых фишек. А через время забываю о них. В итоге стоит под 90 плагинов, а пользую я из них может с десяток.
TimsTims
*Объявление гадалки: выведу из запоя, покажу дорогу из комы, верну мужа, выведу заблудших из Вима