Вим и фортепиано: когда перестанешь думать о кнопках
Опубликовано · 10 мин чтения
На этой странице
Перевод выполнен с помощью машинного перевода. Технические формулировки можно сверить с оригиналом. Также на
Существует сходство между изучением 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 я могу выразить модификацию прямой командой: изменить это слово, удалить эту строку или перейти к следующему слову. По мере того, как команды становятся привычными, мне нужно меньше думать о шагах по их выполнению. Так что я могу извлечь из этого пользу, даже если моя скорость набора текста нормальная. Выгода также заключается в способе перемещения, модификации и выборе подходящего процесса.
У меня также появилось новое значение для клавиши 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
Для меня наличие готовой установки имеет простой смысл: я хочу работать. Я мог бы научиться настраивать параметры, когда мне нужно что-то конкретное, но я не хочу тратить все время на создание редактора, который я буду использовать позже для работы, которую отложил.
Кривая обучения: где сложно?
Поначалу я могу действовать медленнее, поскольку заменяю привычки, которые знаю, на те, о которых все еще думаю. Я могу знать это, но забыть об этом в тот момент, когда мне это понадобится.
Но было бы неточно проводить черту и писать по ней: через неделю ты становишься быстрым, а через месяц превосходишь всех редакторов. Не существует единой продолжительности, описывающей опыт каждого человека, и задание, которое я пишу, и метод обучения влияют на этот опыт.
Ближе всего к тому, что я имею в виду, относятся перекрывающиеся фазы:
Я начинаю с того, что позволяет мне вводить, сохранять и выходить: i, Esc, :w для сохранения и :q для выхода, когда нет несохраненных изменений. Затем я добавляю движения слов, а затем команды модификации, которые повторяются в моей работе. Вы можете сослаться на :help в редакторе или попробовать руководство по vimtutor, если оно было установлено вместе с Vim. 8Я выбираю небольшой навык, например, изменять содержимое скобок, и использую его, пока он не станет привычным. Потом добавляю еще кое-что. Мне не нужно прекращать работу, пока я не запомню всю ссылку.
Кто это сделал?
Вим начал с Брэма Муленаара. Ему понравилось, что его история также связана с идеей помощи детям в Уганде, идеей, известной в его сообществе как благотворительность. Брэм умер 3 августа 2023 года, сообщила его семья, а проект и его сообщество продолжаются. 9
На официальной странице поддержки по-прежнему упоминается организация «Помощь детям в Уганде», и в настоящее время поддержка направляется в Кувашу. Итак, если вы хотите прочитать историю или внести свой вклад, лучше всего вернуться на текущую страницу проекта. 10
Мне нравится этот человеческий аспект: небольшой инструмент, который вникает в детали жизни многих людей, имеет имя, опыт и сообщество, стоящее за ним.
Как это повлияло на мою работу?
Я не изучаю каждый инструмент, останавливая свою жизнь и посвящая ее этому.
Я пытаюсь открыть для нее небольшой путь в рамках уже существующей работы. Я пробую это в файле или в рамках задания и уделяю ограниченное время на изучение. Если он окажется полезным, его площадь постепенно увеличится.
Иногда я не могу точно определить, когда это стало нормальной частью моего дня. Ввел ли я это в свой способ работы, или сам способ работы расширил и вместил его? Я не знаю, но я знаю практический знак: я открываю другую программу и надеюсь, что команды перемещения Vim там есть.
Это не делает Vim началом и концом и не делает его пользователя лучше других. Для меня это инструмент, который уменьшает некоторые движения, прерывающие мышление. Я оставляю то, что мне полезно, и оставляю то, что мне не нужно.
Точно так же, как пианист изучает ключевые положения и движения пальцев, чтобы направить свое внимание на мелодию, я хочу, чтобы движения при написании и редактировании стали привычными, оставляя мне больше места для размышлений о том, что я пишу.
Источники и дополнительная литература
- Справочное руководство Vim — Введение. Редактор и различные режимы .
- Руководство пользователя Vim — Внесение небольших изменений. Состав команд, команд перемещения, текстовых объектов и повторных модификаций.
- Справочное руководство Vim — Движение курсора. Движение, слова, дуги и текстовые объекты.
- Sublime Text — винтажный режим. Поддержка стиля vi внутри Sublime.
- VSCodeVim. Добавление и документация отличий и настроек .
- Neovim — Vision. Его связь с Vim и целями проекта.
- LazyVim — Начало работы. Определение установки и требования.
- Руководство пользователя Vim. Обучение, Помощь и Vim Tutor, Начало работы, сохранение и выход.
- Сообщение от семьи Брэма Муленаара. Семейное заявление, 5 августа 2023 г..
- Vim — Спонсор Vim Development. Текущая страница поддержки и помощи детям в Уганде. 11. mattmc3 — графическая шпаргалка Neovim/Vim. Источник карты клавиатуры и лицензия .
Последняя редакция источников: 3 ноября 2026 г.