Комментарии 103
В Debian и Ubuntu именно nano запускается по умолчанию
Первым делом на свежей системе приходится идти и исправлять EDITOR. Не напряжно, но каждый раз это чувство WTF
Есть системы, на которые нельзя ставить ничего. Например операторский софтсвич. Что предустановил вендор, то там и будет. И вообще там может быть даже не Linux, а другая система вроде VxWorks, с самыми древнейшими утилитами. Даже Cat может не быть. Попадалась и система с Vi вместо Vim.
vi входит в posix, поэтому он по идее должен быть в любом юниксе. А вот vim не входит, поэтому он есть не везде. Но если vim есть, то vi обычно ссылка на него же.
Как-то вываливался в аварийный режим на какой-то bsd, там не было ls. Приходилось смотреть содержимое папок через echo *
И даже mc нету у бедных и поставить нельзя??? Я если что сразу меняю редактор на mcedit
А уж сколько юмора это породило...


Вспомнилось)

как по мне, emacs попроще будет.
только magit интересен, вот бы кто на голагне и для всех переписал
из него сложнее выйти, но об этом почему-то никто не шутит
О, я зашёл в комменты просто поискать флейм vi vs emacs :-)
я вошел в vim в 2001г, все еще не могу выйти - приходится работать в нем до сих пор.
Отрадно было узнать, что я не один такой бестолковый, кто не смог выйти из vim. После получаса тщетных попыток найти выход использовал killall. Честно пытался освоить, даже установил на Windows. Не моё.
Это как стоп слово из Евротрипа
Казалось бы, приделайте туда одну единственную плашку где-нибудь сбоку: [F1] Help (или "Type :help if you're stuck", по желанию). Можно убирать по нажатию любой клавиши.
От скольких страданий бы это уберегло!
Наконец-то качественная статья на Хабре! А то всё чаще встречаются материалы в духе «Я запряг оркестр агентов, а они мне навайбкодили и написали эту статью».
Это волшебное сочетание <ESC>:q!<ENTER> будоражит умы многих начинающих разработчиков своей неочевидностью. Теперь, когда его происхождение понятно, оно кажется даже логичным
Программное обеспечение без графического интерфейса - это примерно как скрипка с одной струной или старый mp3-плеер с маленьким экранчиком для настройки всего. В принципе, конечно, работает, можно наловчиться и привыкнуть. Но зачем?
Думаю, дело в том, что Linux - это часто не локальная машина, а удалённый сервер. Туда заходят по SSH, где есть только текстовый терминал и никакого GUI. Vim/vi там оказывается самым доступным инструментом: он почти всегда уже стоит и работает в любой сессии. Для локальной работы GUI удобнее — тут не поспоришь, но на сервере сценарий другой.
Писать программу квадратиками-линиями мышкой в FBD на Codesys? Ну, многие именно так и работают, и даже не понимают, почему а спрашиваю "но зачем?".
Да IDE Codesys и сама та еще бяка - проект в виде огромного дерева с сотней листочков-окон. И большинство окон - с мышовым интерфейсом. Ну хотя бы алгоритм можно на ST текстом писать, алилуйа.
Довольно странно, но в Vim я нахожу гораздо больше возможностей для взаимодействия с текстом, чем в любом графическом редакторе или IDE. И эти возможности куда точнее выражают мои намерения, чем стандартные средства типичного приложения с GUI. Более того, при необходимости работать в GUI без Vim-эмуляции я чувствую ту самую ограниченность, о которой вы говорите.
С Vim я могу прыгнуть в нужное место в тексте, сделать именно ту правку, которая мне нужна, масштабировать её — и всё это, не убирая рук с home row. По-моему, это удобнее, чем искать опцию во вложенных меню или иконку на панели, тем более что нужной узкой операции там может просто не быть.
GUI, конечно, облегчает начало работы с инструментом и знакомство с его возможностями. Но если нужно действительно овладеть инструментом, всё равно не избежать чтения мануалов. Возможности того же VS Code гораздо шире тех, что непосредственно экспонируются через графический интерфейс.
Автор хорошо сформулировал: пользователи vi(m) просто иначе воспринимают работу с текстом.
Вы делаете нужные вам правки в нужных местах, а не просто пытаетесь набить строчки текста или стереть и набить их по-другому.
Разница сложноощутимая, но она есть.
Ну, чтобы понять всю ущербность Vim, достаточно попробовать выделить/подредактировать что-нибудь в режиме multiline или попробовать "найти и выделить похожее" (как Ctrl+Shift+L в VSCode).
Причем желательно чтобы это что-то "мультистрочное" находилось на разных строках со смещением, чтобы курсоры установить в разных точках)
Я писал код 2 года чисто на vim, я даже две книги по нему прочитал, но боже мой, какое же он дно перед базовыми возможностями того же VSCode) А уж если плагинов накрутить в VSCode, то вообще рядом не стоит.
Я до сих пор люблю vim для редактирования однострочных конфигов "по быстренькому пару строчек", но если надо на файл смотреть больше одной минуты и упаси господи прыгать по нему куда-то, ставить закладки, etc - в пень этот vim.
Стоит признать, что в VSCode некоторые сочетания прямо украдены из vim, типа того Ctrl-G. И vim сделал очень много, задал кучу трендов, чтобы сегодняшние редакторы были удобнее. Но он устарел шопипец.
Вы здесь понимаете Vim слишком буквально. Речь прежде всего о Vim как системе модального редактирования и навигации. Я и сам много лет сижу на VS Code + VSCodeVim, пользуюсь преимуществами обоих миров. Но и внутри VS Code я в основном использую его возможности с клавиатуры или через палитру команд. Моя претензия скорее к тому, что жить постоянно в режиме ввода неудобно: это закрывает клавиатуру от других действий. Так же неудобно искать нужные действия через меню или кнопки/иконки на панелях GUI-редакторов — это отвлекает от редактируемого текста.
От каких действий?) Я прост не очень понимаю, что именно такого умеет командный режим, чего не умеют горячие клавиши VSCode/Other IDE.
Поиск? Ctrl+F или Ctrl+Shift+F
Замена? Ctrl+H или Ctrl+Shift+H.
Навигация по элементам GUI через Tab/Shift+Tab/Space/Enter.
Regex-ы с группами для замен поддерживаются.
Перемещение/выделение по словам - есть и гораздо мощнее vim
Перемещение по позициям в файле - аналогично vim
Выделить строку - да, тут уже надо Home -> Shift+End и дальше уже какое-то действие (копировать, удалить, etc). Чуть больше кликов по клаве.
Открыть терминал - у меня Ctrl-`. Открыть ещё один - Ctrl+Shift+'+'
Заметим, что я до сих пор не поднимал руки с клавиатуры))
Не так, чтобы я прям имел что-то сильно против vimmode, дело удобства, но говорить, что он чем-то удобнее других - сомнительно)
Можно было бы сказать, что Vim Mode "универсален" для всех IDE и даже браузеров, но это не так. В каждой IDE плагин для Vim Mode работает "чуть-чуть" по другому) Примерно как и логика работы элементов GUI иногда тоже чутка отличается, но почти всё написанное про GUI работает вообще везде, в любом GUI редакторе)
Дело ведь не просто в возможности вызвать поиск или замену с клавиатуры. В Vim вся клавиатура в normal mode становится пространством команд, причём эти команды композиционны: оператор + движение/text object + количество. Именно это я и имел в виду, когда говорил, что Vim точнее выражает мои намерения. Набор хоткеев VS Code устроен всё-таки иначе.
Из того, что для меня существенно в этой модели, навскидку назову макросы, ., текстовые объекты, удобную клавиатурную навигацию вроде Ctrl-O / Ctrl-I, управление положением текста в окне через zt / zz / zb и Ctrl-E / Ctrl-Y, плагины вроде Vim-Surround и EasyMotion. Наверняка всему этому можно подобрать те или иные аналоги в VS Code, но, думаю, перечисление особенностей обоих редакторов нас никуда не приведёт.
Я, в общем-то, и не утверждал, что модальный режим обязательно удобнее для всех. Если вы вернётесь к моему первому комментарию в этой ветке, то увидите, что речь шла прежде всего о моих ощущениях: что важно именно для меня и почему мне так удобнее. Насколько мои аргументы отзываются у вас или у кого-то ещё — уже вопрос индивидуальный.
Вы на одной платформе работаете? Когда работаешь на маке / вин / линухе по очереди (или одновременно), единственный редактор, который ведёт себя одинаково это vim.
что именно такого умеет командный режим, чего не умеют горячие клавиши VSCode/Other IDE.
Удобство, например?
Перемещение/выделение по словам - есть и гораздо мощнее vim
С трёэтажными шорткатами, которые нужно запоминать?
В vim всё просто: ct, (change-till-,) выделение текста до запятой, удаление его и переход в режим набора. di{ - delete inside {}
Заметим, что я до сих пор не поднимал руки с клавиатуры))
Перемещаетесь курсорными клавишами? Так вы уже подняли руки.
Даже интересно стало, что вы имеете ввиду?
Выделение ДВУХ блоков в разных местах файла, чтобы вносить в них и там и там одновременно правки?
А зачем?
(очень часто мнение "ХХХ - отстой!" бывает основано только на том, что в ХХХ чесать правое ухо левой пяткой очень неудобно)
Мультикурсор достаточно мощная вещь. Есть например в sublime text. Для аналогии, представим макрос в виме, который в одной строке что-то ищет, запоминает и перемещает в рамках этой же строки. Мультикурсор позволяет сделать тоже самое, только в режиме, когда результат сразу виден по мере редактирования. Это не единственный пример, можно например делать интерактивно search-replace интерактивно сразу везде.
Для этого макрос не нужен. Есть идиома cgn + ., если хочется последовательно пройти по совпадениям.
Интерактивный поиск и замену тоже можно сделать штатно:
:s/foo/bar/gc
с решением по каждому совпадению или сразу по всем оставшимся.
Ну и расширения для настоящего мультикурсора тоже есть. И я согласен, это довольно удобная штука. VSCodeVim его по умолчанию даже биндит на gb и режим блочного выделения через него эмулирует.
"Зачем" - да оч просто: потому что надо ну очень часто) Я уже даже не замечаю как часто я это юзаю.
Ну, например поправить пачку однотипных параметров в одной строчке. Добавить/удалить префикс для связанных логически переменных. Иногда код отформатирован "специфически" под каким-нибудь //clang-format off блоком и нужно подвигать его немножко. Ну или из банального, нужно добавить точку с запятой сразу в конец ряда строк, ну вот бывает так, просто тыкаешь мышкой в нужные строки, жмешь End и вуаля, ты в конце нужных строк)
А, ну вот я и спрашиваю, что и зачем.
У нас "поиск и замена" может быть, например, так: # на слове отмечаем его, i<что-нибудь>ESC пишем, дальше n . n . - это если вручную.
В каких-то случаях лучше регекспом, в каких-то проще выделить, скопировать и вставить блок
Точку с запятой в конец строки - A;ESC.
Повторить N раз - N.
Без мышей.
То есть варианты решения имеются, просто надо понять что именно решаем.
Другое дело что это надо знать: от только сегодня из этой статьи узнал о ci" - и буквально тут же пригодилось, надо было пройти по куче мест, меняя и копируя структуры типа JSON. Очень удобно.
В 90% случаев надо просто открыть конфиг и поправить пару параметров.Использовать для этого такой неудобный редактор — это, конечно, не очень хорошо придумали.
Мы в общаге устраивали соревнования - кто быстрее доберётся до дна бутылки дерева каталогов - участвовали проводник(windows), total commander (аналог mc\far) и cli. Условия: где-то зарыт файл с контрольной фразой (или несколько файлов), надо добраться и произнести. Поиском пользоваться нельзя, смотреть объем тоже, без скриптов и онострочников - соревнование про UI.В некоторых каталогах были подсказки, что-то в духе "дальше ныряй в 49zfr37"
Cli и тотал были примерно на равных, проводник безбожно отстал
Ваши аналогии неадекватны, я так тоже могу: это как амбарный замок, ручка, туалетная бумага и лопата. Которым графический интерфейс будет верх идиотизма в контексте решаемых задач.
В контексте vim ваш комментарий вообще ни в тему, это здоровый комбайн c text user interface и миллионом плагинов, если так нужно gui, а не tui то есть gvim. Только вот какая разница? Чуть-чуть будет по другому выглядеть? Или вам на фоне единорог нужен (это тоже можно)? Статья то про вим.
Возможно вы так пишите, потому что не пользуетесь простыми командами, утилитами и программами, которые делают ровно одну вещь? Или вы без мышки работать не умеете? Или вместо простого вывода вам нужен к этому выводу салют?
Лично я вас не понимаю. Я использую графику только там, где нужно, лично у меня это браузер, почта, мессенджеры, плееры ну и может какой-нибудь рдп клиент. Всё остальное мне быстрее и удобнее делать в основном из консоли.
Я конечно понимаю смысл пользоваться наутилусом или дельфином вместо ls и cd (мне интересно в какую сторону вы миднайт поставите). Но при этом говорить “зачем использовать cd и ls?” я вижу крайне странным.
Мне одна вещь бесит когда просишь нейросеть сделать мануал по шагам, то он почему то все делает через nano и приходится специально добавлять используй vim.
О как же благословен Microsoft выпустивший MS-EDIT в опенсорс
Конец 2026 года, люди на хабре на серьезных щах обсуждают вим.
Реальность: уже даже vscode никто не использует, весь офис работает исключительно в claude/codex cli/desktop
Я сам IDE уже месяца три не открывал.
Иногда хочется и свои собственные мысли записывать. Это весело.
А по существу. Даже при работе в Claude Code хочется редактировать длинные промпты через встроенный редактор, навигироваться по ответу модели чуть более эффективно, чем через встроенный pager, читать отчёты модели и другие материалы, писать к ним комментарии.
Не боитесь ли вы отупеть в таком режиме?
Stack Overflow. Вопрос «How do I exit the Vim editor?» появился там в 2012 году
Так любой сможет. А пробовали выйти из Vim в 90х без всяких этих ваших интернетов?
Пфф… RESET
Так-то интернет появился сильно раньше 2012...
Я в 2010-м не смог) Интернета у меня тогда вообще не было, Ubuntu 10.04 я заказал почтой, мне из Голландии его Canonical прислал, они в те времена рассылали его всем желающим на CD, бесплатно) Форму заявки в школе заполнил на уроке инфоматики)
И вот где-то я накопал инструкцию по настройке, вроде через школьный интернет, там был этот чертов vim) Полчаса я страдал, а потом установил windows XP)
"Is vi that editor with two modes, one that beeps and second that corrupts my file?"
Никаких vi, никаких nano и прочих! На локале только и только mcedit. Когда через ssh, тут увы, кроме vi альтернативы нет. Я был взращён на редактировании через кнопку F4 в Norton Comander (вернее в Команден Организатор, клон NC на болгарских клонах IBM PC XT "Правец 16") и поэтому на локале только и только mcedit!
стирают мизинцы об Ctrl
Шутка, повторённая миллион раз, становится смешнее. Пока не посмотришь на клавиатуры, которые использовались в LISP-машинах. Там Ctrl был в том месте, где сейчас у нас Alt. Сочетания с Ctrl в то время были офигеть какие удобные.

Ещё вброшу: сам RMS в далёком 2014-м писал, что терминология "фреймы" и "окна" путает людей, и неплохо бы их называть "окна" и "панели", и он надеется, что в ближайшее время это изменится, ведь так больше продолжаться не может. Но продолжится.
Пруф: https://lists.gnu.org/archive/html/emacs-devel/2014-01/msg00496.html
Оригинальный текст:
[[[ To any NSA and FBI agents reading my email: please consider ]]]
[[[ whether defending the US Constitution against all enemies, ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]
Conceivably we could rename "window" to "pane" and "frame" to "window". I think the two renamings would have to be done in two different releases, perhaps a year or two apart.
Whether it is worth the trouble, I don't know.
-- Dr Richard Stallman President, Free Software Foundation 51 Franklin St Boston MA 02110 USA www.fsf.org www.gnu.org Skype: No way! That's nonfree (freedom-denying) software. Use Ekiga or an ordinary phone call.
Там Ctrl был в том месте, где сейчас у нас Alt. Сочетания с Ctrl в то время были офигеть какие удобные.
Назначаю Ctrl на Caps Lock на всех компах, на которых работаю продолжительное время, вполне удобно.
Не понял, а сейчас Ctrl не так, что ли?
Или на полноразмерных по другому?

Это как будто современная клавиатура с закосом под Space cadet, у в терминалов в основном такие клавиатуры были, с Ctrl в среднем ряду.

vim бывает очень разный

Я привык к графическим интерфейсам, жертва винды. На серваках у меня установлен midnight commander, и по умолчанию везде прописываю mcedit вместо nano и vim. Возможно это хорошие редакторы, но я с ними не умею работать)
С vim стал дружить, когда мне сделали тенодез длинной головки бицепса и любое движение правой руки причиняло боль. Я искал редактор кода, чтобы минимум задействовать мышь. И какое было моё удивление, когда мне ИИ посоветовал vim, который я ранее считал богомерзким. И знаете что? Он реально меня спасал! Пока рука не выздоровела))
В свое время осознанно решил перейти на Vim навигацию во всех IDE просто потому что часто приходилось скакать между разными операционными системами и соответственно разными IDE (Visual Studio, Visual Studio Code, Qt Creator, XCode, Android Studio). Оказалось проще везде использовать унифицированную Vim like навигацию чем каждый раз вспоминать как выполнять базовые действия...
А если еще вспомнить что на ноутбуках пока, слава богу, не додумались сломать раскладку центральной части клавиатуры (в отличии от стрелочек, Home/End/PgUp/PgDown и F ряда) - то и переключение между разными клавиатурами не доставляет дополнительной боли...
В Debian и Ubuntu именно nano запускается по умолчанию

так а что не так с nano? из консольных редакторов предпочитаю его, потому что в нем есть "горячие клавиши", которые можно использовать в любой момент.
Для сравнения в vim постоянно путаешься в режимах (как с раскладкой клавы) и вместо горячих клавиш еще одна (внутренняя) консоль ввода.
так а что не так с nano
не везде есть. В embaded разработке встречаются железки где есть только vi(m)
Ну и менее кастомизируем - посмотрите на neovim - это практически VSCode в консоли
Другое дело что, лично я, пришел в стадию минимум изменений, максимум однотипности
Да тоже далеко не сахар. Сочетания клавиш из 70х годов, не похожие ни на один современный редактор. Выделить текст - Alt+6, как вам такое? Отменить/повторить - тоже какие-то извращения. Поиск туда же. Да всё, кроме выхода по Ctrl+X. Хорошо хоть выход оставили, в отличие от вима. Мышка по умолчанию выключена. Копирование-вставка - только в свой собственный буфер, и тоже, это ни фига не Ctrl+Ins/Shift+Ins. Ты вроде бы программист со стажем, и должен тратить время на документацию по простейшим действиям в текстовом редакторе, который должен быть прозрачным как воздух, которым мы дышим
Название модификаторов. Я знаю, что ^ - это Ctrl, а M - это Alt (Meta), но блин, мозг отказывается воспринимать это на автомате, каждый раз переводишь как с иностранного языка.
В 70х годах у кого-то там стрелки были на клавишах J и K, и модификаторы назывались по-другому. Ну офигеть теперь. Сейчас-то вы где такие клавиатуры вообще найдете? С чем обеспечивается обратная совместимость, такого железа давно нет. Или есть у 1 процента, но страдают 99. Тут прогресс на дворе - появились клавиши со стрелками и функциональные клавиши - но нет, мы будем поддерживать то, что было когда-то. И ладно, если кому-то нравится, пусть, но ведь оно же стоит по умолчанию везде! Убожество.
Сам ставлю Micro Editor, где есть возможность и права (не везде они есть).
Vim и все такие штуки подходят только для тех, у кого идеальная моторика и мышечная память. Для меня, например, даже простой геймпад от приставки - уже боль, я физически не могу использовать его без тонны мискликов, автоматизмы не нарабатываются, сколько бы не играл, всегда надо думать что нажать.
И автомобилем не можете управлять?
Странно, казалось бы как раз наоборот. Для vim не нужна особая моторика и мышечная память. Более того, управление имеет внутреннюю логику, после чего не нужно что-то зазубривать - часто используемые команды запоминаются, а остальные обычно логично конструируются. Как пример:
diw = d (delete) i (inner) w (word) => удалить слово
сa) = c (change) a (around)
)- скобочка => заменить текущее выражение в скобках (включительно)3dd = 3 (3 times) dd (delete line) - удалить 3 строки
Мисклики и моторика, imho, это больше про управление мышкой
c (change)
Вот в этом проблема vim'а для новичков надо - городить какую-то мнемонику. Вот во всем современном мире "найти и заменить" - find and replace. У меня, лично "с" это copy. Понятно что replace это частный случай change, но блин...
dd (delete line)
Вот где тут логика со второй d? Почему не dl?
А hjkl? почему лево, низ, верх, право? Почему вверх под безымянным пальцем? ну проще же было кнопку вверх перенести на ряд выше и получить классические стрелочки которые можно жать тремя пальцами
А i? Почему режим редактирования (edit), это вставка (insert). Или логика в том что надо прыгать между режимами - d3(или как там удалить буквы) i, пишем нудное, esc, hjki, i, вставляем слово номер 2, esc. этож звиздец
А wq! - w(rite) q(uit) понятно, но восклицательный знак то? Вроде бы в классике != означает "не равно", т.е. ! это отрицание... а тут наоборот....
Нее, я попытался в (neo)vim, прошел встроенный туториал и через день все забыл - т.е. надо пару недель просидеть в нем со шпаргалками и вот все эти боли и страдания ради чего? Копировать/вставить/заменить/найти - 99% функционала при редактировании файла... и вот смысл трать время на рбучение?
К истории про уехавший в угол Esc не хватает одной детали: Ctrl+[ отправляет тот же управляющий код ESC (ASCII 27) и в Vim работает так же.
На современной клавиатуре это часто быстрее, чем тянуться в левый верхний угол, особенно если Ctrl перенесён на Caps Lock. Получается забавно: проблему, созданную исчезнувшей клавиатурой ADM-3A, частично решает ещё более древняя особенность терминального протокола.
Правда, самостоятельно догадаться о Ctrl+[ шансов примерно столько же, сколько о :q!.
vim приходится время от времени использовать по ssm и ssh на linux инстансах для правки конфигов. если nano на инстансе есть, использую его с облегчением. все-таки vi семейство не для всех.
на Хабре полно ностальгических статей про редакторы прошлого, к которым многие привыкли. а про тенденции и свежие идеи в современных редакторах ничего нет
А они есть, эти свежие идеи-то?
В vime по крайней мере до сих пор можно что-то интересное найти, вот например не знал что можно взять и переписать всю функцию одной командой ci{ - теперь знаю
(аналогия с ci", ci(, ci[ и т.д. - а мне такое надо)
Тенденции тут как раз понятны: если к 100 старых юниксоидов с vim прибавить 1000000 новых виндузятников с Блокнотом - тенденция будет в использовании Блокнота, ведь Блокнот выбирают 99.99%!
kakoune и helix можно считать зумерскими версиями Вима. Красивая теория, но в helix поменяли кучу привычных сочетаний клавиш, а kakoune жёстко привязан к linux (нет и не может быть аналога gVim)
Когда попробовал micro, то сразу выкинул Neovim везде, где он у меня был.

Получилось!
Раз уж очередная статья про вим.
Причина по которой мы имеем неудобный Escape заключается в старой раскладке клавиатуры :
https://commons.wikimedia.org/wiki/File:KB_Terminal_ADM3A.svg#/media/File:KB_Terminal_ADM3A.svg
Приятно слушать стоны виндузятников. ;)






Vim против всех: редактор, в который можно войти, но нельзя выйти