Обновить

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

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели64K
Всего голосов 58: ↑57 и ↓1+65
Комментарии67

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

В Debian и Ubuntu именно nano запускается по умолчанию

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

Есть системы, на которые нельзя ставить ничего. Например операторский софтсвич. Что предустановил вендор, то там и будет. И вообще там может быть даже не Linux, а другая система вроде VxWorks, с самыми древнейшими утилитами. Даже Cat может не быть. Попадалась и система с Vi вместо Vim.

vi входит в posix, поэтому он по идее должен быть в любом юниксе. А вот vim не входит, поэтому он есть не везде. Но если vim есть, то vi обычно ссылка на него же.

Как-то вываливался в аварийный режим на какой-то bsd, там не было ls. Приходилось смотреть содержимое папок через echo *

А уж сколько юмора это породило...

Зачем агенту использовать Vim?

sed же есть. где бы агент научился таким ужасам?

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

Так ведь и в 90-е не могли выйти. Дело в программе, а не в программистах, такое ощущение что автор мема просто сам узнал о нем в 2021.

Deno был выпущен в 2018, а первая мажорка в 2020
Так что где-то примерно в этот период и был сделан мем :)

как по мне, emacs попроще будет.

org-mode!

А как вы представляете hot-reload и я-вот-прям-сейчас-написал-функцию с golang?

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

Есть расширение edamagit для VSCode и плагин neogit для Neovim

Так чего же вы ждёте? LLM в помощь!

Попробуйте lazygit

из него сложнее выйти, но об этом почему-то никто не шутит

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

О, я зашёл в комменты просто поискать флейм vi vs emacs :-)

я вошел в vim в 2001г, все еще не могу выйти - приходится работать в нем до сих пор.

Отрадно было узнать, что я не один такой бестолковый, кто не смог выйти из vim. После получаса тщетных попыток найти выход использовал killall. Честно пытался освоить, даже установил на Windows. Не моё.

Это как стоп слово из Евротрипа

Казалось бы, приделайте туда одну единственную плашку где-нибудь сбоку: [F1] Help (или "Type :help if you're stuck", по желанию). Можно убирать по нажатию любой клавиши.

От скольких страданий бы это уберегло!

Таков путь! (с) Ленин В.И. и Разработчик Vim

Если просто запустить vi то он как раз и откроет окошко с подсказками

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

Это волшебное сочетание <ESC>:q!<ENTER> будоражит умы многих начинающих разработчиков своей неочевидностью. Теперь, когда его происхождение понятно, оно кажется даже логичным

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

Думаю, дело в том, что Linux - это часто не локальная машина, а удалённый сервер. Туда заходят по SSH, где есть только текстовый терминал и никакого GUI. Vim/vi там оказывается самым доступным инструментом: он почти всегда уже стоит и работает в любой сессии. Для локальной работы GUI удобнее — тут не поспоришь, но на сервере сценарий другой.

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

Обычно после установки сервера ставлю mc. А там встроенный редактор... оч удобно

но назначить в mc редактором vim - еще удобнее )

Писать программу квадратиками-линиями мышкой в FBD на Codesys? Ну, многие именно так и работают, и даже не понимают, почему а спрашиваю "но зачем?".

Да IDE Codesys и сама та еще бяка - проект в виде огромного дерева с сотней листочков-окон. И большинство окон - с мышовым интерфейсом. Ну хотя бы алгоритм можно на ST текстом писать, алилуйа.

А чем плох fdb или st? Это просто графический яп, описанный в 61131. Ну и претензия к codesys странная — посмотрите на проект в tia portal или rslogic и другие среды для работы с промкой.

Довольно странно, но в 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-редакторов — это отвлекает от редактируемого текста.

Мы в общаге устраивали соревнования - кто быстрее доберётся до дна бутылки дерева каталогов - участвовали проводник(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 не так, что ли?
Или на полноразмерных по другому?

На современных полноразмерных 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 запускается по умолчанию

С просторов
С просторов

из-за чего `sudo update-alternatives --config editor` уже на автомате набирается сразу после установки... "прям бесит" :)

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

Для сравнения в vim постоянно путаешься в режимах (как с раскладкой клавы) и вместо горячих клавиш еще одна (внутренняя) консоль ввода.

так а что не так с nano

не везде есть. В embaded разработке встречаются железки где есть только vi(m)

Ну и менее кастомизируем - посмотрите на neovim - это практически VSCode в консоли

Другое дело что, лично я, пришел в стадию минимум изменений, максимум однотипности

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

К истории про уехавший в угол Esc не хватает одной детали: Ctrl+[ отправляет тот же управляющий код ESC (ASCII 27) и в Vim работает так же.

На современной клавиатуре это часто быстрее, чем тянуться в левый верхний угол, особенно если Ctrl перенесён на Caps Lock. Получается забавно: проблему, созданную исчезнувшей клавиатурой ADM-3A, частично решает ещё более древняя особенность терминального протокола.

Правда, самостоятельно догадаться о Ctrl+[ шансов примерно столько же, сколько о :q!.

vim приходится время от времени использовать по ssm и ssh на linux инстансах для правки конфигов. если nano на инстансе есть, использую его с облегчением. все-таки vi семейство не для всех.

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

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации