Существует сходство между изучением Vim и обучением игре на фортепиано.

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

Это то, что привлекло меня в Vim. Я не искал способ заставить себя нажимать наибольшее количество кнопок в минуту. Я пытался сократить дистанцию ​​между идеей и ее написанием и редактированием.

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

Что такое Vim в первую очередь?

Vim — текстовый редактор, что означает Vi IMproved. Он используется для написания программ и текстовых файлов, им можно управлять с клавиатуры, а также с поддержкой мыши. Но идея, которая отличает его, не в том, что мышь запрещена; Идея состоит в том, что значение клавиши варьируется в зависимости от режима, в котором вы ею пользуетесь. 1

Во многих редакторах, если вы нажимаете на букву, эта буква пишется, и если вы хотите сделать что-то еще, вы добавляете к ней Ctrl или Alt или переходите в меню.

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

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

Три режима для начала, а не все существующие режимы

Полезно сначала понять эти три режима:

режим Что мне в нем делать? Простой пример
Нормальный Я перемещаюсь по тексту и даю команды редактирования Нажмите w, чтобы перейти к началу следующего слова
Вставить Напишите буквы внутри файла Войдите в него, нажав i из обычного
Визуальный Я выделяю фрагмент текста и применяю команду для него. Введите его, нажав v

Нажатие Esc возвращает меня из режима «Вставка» или «Визуальный» в режим «Обычный». Существуют и другие режимы, включая режим командной строки, доступ к которому я получаю, нажав :. Так что фраза «У Vim только три режима» — это чрезмерное упрощение; Это хорошее начало обучения, а не полное описание редактора. 1

Если вы открываете Vim, а затем нажимаете символы, и они не пишутся, вы, вероятно, находитесь в обычном режиме. Этот изначально сбивающий с толку момент совпадает с сутью идеи: клавиатура ждет от вас команды, а не текста.

Мощность при установке команд

Я научился рассматривать команды Vim как короткие предложения.

Есть действие, которое я хочу выполнить, и есть фрагмент текста, к которому я хочу его применить. Например: удалите слово, измените содержимое скобок или скопируйте строку.Символ d инициирует операцию удаления, а c инициирует операцию изменения, за которой следует операция вставки. iw относится к слову внутри курсора, а i( относится к содержимому внутри круглых скобок. Когда я соединяю эти части вместе, это обретает больше смысла. 2, 3

Что я хочу сделать Команда взята из Обычный Как я это понимаю?
Перемещение между словами w или b w в начало следующего слова; и b в начало текущего или предыдущего слова в зависимости от положения курсора  
Удалить слово «Я стою внутри» diw удалить + внутреннее слово
Измените слово «Я стою внутри» ciw Удалите его содержимое и начните вводить альтернативный вариант
Измените содержимое круглых скобок ci( изменить + внутренние скобки
Удалить текущую строку dd Короткая команда для обработки всей строки
Повторить последнее изменение . Выполните предыдущую модификацию еще раз
Отменить изменение u отменить

Важно, чтобы я усвоил это на примере. Если у меня есть строка:

reference_voltage = calculate_voltage(old_parameter)

Если курсор находится внутри круглых скобок, ci( позволяет мне изменить old_parameter, затем я ввожу новый параметр и нажимаю Esc. Мне не нужно указывать количество букв или тщательно перетаскивать мышь между скобками.

Это то, что меня привлекло: описать то, что я хочу изменить, вместо того, чтобы просчитывать каждое движение, необходимое для достижения этой цели. Мышь все еще может пригодиться для других целей; Это не обязательно должно превращаться в проверку на лояльность клавиатуры.

А как насчет h, j, k и l?

Эти клавиши перемещают курсор влево, вниз, вверх и вправо соответственно в обычных настройках. Но это еще не все, что касается Vim, и его запоминание само по себе не объясняет его полезности. Пропустить слово, найти текст или перейти в конец строки может быть удобнее, чем повторять движение одной буквы десятки раз. 3

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

Справочная карта команд Vim, распределенная по клавишам клавиатуры QWERTY, с функциями перемещения и изменения.
Рис. 1. Карта ярлыков Vim на QWERTY-панели. Версия для Google Таблиц: mattmc3 (2018) , оригинальный дизайн — ViEmu. Исходный код и заявление о лицензии, CC BY 4.0. Главная страница преобразована в SVG с сохранением прав на графику и авторство; Некоторые детали могут различаться между Vim и Neovim и их версиями. Нажмите на изображение, чтобы прочитать его в полном размере.

Что меняется при наборе текста на клавиатуре?

Когда я пишу обычным способом, я пишу письма, затем перемещаюсь по тексту, чтобы просмотреть и отредактировать написанное. Я могу использовать мышь, чтобы выбрать слово, или несколько раз нажать клавиши со стрелками, чтобы достичь определенной позиции. Эти движения являются частью самого письма, и я хочу сделать их более плавными.С помощью Vim я могу выразить модификацию прямой командой: изменить это слово, удалить эту строку или перейти к следующему слову. По мере того, как команды становятся привычными, мне нужно меньше думать о шагах по их выполнению. Так что я могу извлечь из этого пользу, даже если моя скорость набора текста нормальная. Выгода также заключается в способе перемещения, модификации и выборе подходящего процесса.

У меня также появилось новое значение для клавиши Esc. Я часто им пользуюсь, поэтому перенос его функций на Caps Lock может быть удобным выбором для тех, кому он удобен. Но это необязательная настройка, а не шаг, который должен выполнить каждый пользователь. Лучше изменить то, что меня действительно беспокоит, после того, как я пойму, как пользоваться, а не копировать всю чужую клавиатуру.

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

Программа — это одно, анимация Vim — другое

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

Я начал экспериментировать с его командами перемещения в Sublime Text, затем использовал их в VS Code. Существуют инструменты, которые переносят этот подход в редакторы, такие как Vintage в Sublime и VSCodeVim в VS Code, хотя они не переносят все поведение Vim одинаковым образом. 4, 5

После этого я использовал Neovim и до сих пор использую его вместе с VS Code. Neovim — это расширение Vim, которое, помимо своих целей, фокусируется на расширяемости, интерфейсе Lua и интеграции с другими инструментами. 6

LazyVim — это готовая версия Neovim, которая сочетает в себе настройки и плагины и использует менеджер плагинов lazy.nvim. Это не отдельный редактор и не разветвленная версия Neovim. Это различие важно: Neovim — это редактор, а LazyVim — способ его настройки. 7

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

Кривая обучения: где сложно?

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

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

Ближе всего к тому, что я имею в виду, относятся перекрывающиеся фазы:

Предлагаемые этапы: изучение основных команд, затем установка команд, затем отработка их в реальной работе.
Рис. 2. Наглядная диаграмма предлагаемых этапов обучения, а не кривая, полученная в результате эксперимента или измерения скорости. Размеры коробок не отражают время или усилия. Примеры команд основаны на руководстве Vim Vim User Manual, и этапы могут перекрываться в зависимости от использования.

Я начинаю с того, что позволяет мне вводить, сохранять и выходить: i, Esc, :w для сохранения и :q для выхода, когда нет несохраненных изменений. Затем я добавляю движения слов, а затем команды модификации, которые повторяются в моей работе. Вы можете сослаться на :help в редакторе или попробовать руководство по vimtutor, если оно было установлено вместе с Vim. 8Я выбираю небольшой навык, например, изменять содержимое скобок, и использую его, пока он не станет привычным. Потом добавляю еще кое-что. Мне не нужно прекращать работу, пока я не запомню всю ссылку.

Кто это сделал?

Вим начал с Брэма Муленаара. Ему понравилось, что его история также связана с идеей помощи детям в Уганде, идеей, известной в его сообществе как благотворительность. Брэм умер 3 августа 2023 года, сообщила его семья, а проект и его сообщество продолжаются. 9

На официальной странице поддержки по-прежнему упоминается организация «Помощь детям в Уганде», и в настоящее время поддержка направляется в Кувашу. Итак, если вы хотите прочитать историю или внести свой вклад, лучше всего вернуться на текущую страницу проекта. 10

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

Как это повлияло на мою работу?

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

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

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

Это не делает Vim началом и концом и не делает его пользователя лучше других. Для меня это инструмент, который уменьшает некоторые движения, прерывающие мышление. Я оставляю то, что мне полезно, и оставляю то, что мне не нужно.

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

Источники и дополнительная литература

  1. Справочное руководство Vim — Введение. Редактор и различные режимы .
  2. Руководство пользователя Vim — Внесение небольших изменений. Состав команд, команд перемещения, текстовых объектов и повторных модификаций.
  3. Справочное руководство Vim — Движение курсора. Движение, слова, дуги и текстовые объекты.
  4. Sublime Text — винтажный режим. Поддержка стиля vi внутри Sublime.
  5. VSCodeVim. Добавление и документация отличий и настроек .
  6. Neovim — Vision. Его связь с Vim и целями проекта.
  7. LazyVim — Начало работы. Определение установки и требования.
  8. Руководство пользователя Vim. Обучение, Помощь и Vim Tutor, Начало работы, сохранение и выход.
  9. Сообщение от семьи Брэма Муленаара. Семейное заявление, 5 августа 2023 г..
  10. Vim — Спонсор Vim Development. Текущая страница поддержки и помощи детям в Уганде. 11. mattmc3 — графическая шпаргалка Neovim/Vim. Источник карты клавиатуры и лицензия .

Последняя редакция источников: 3 ноября 2026 г.