Vim editor что это
Vim: текстовый редактор для мастеров
Очень сложная штука, но мы попытаемся объяснить просто.
Вы могли слышать программистские анекдоты типа «Не могу выйти из Vim». На «Амазоне» продаётся электронная книга о выходе из текстового редактора Vim. Одни программисты искренне не понимают, как можно работать в такой страшной среде. А для других это любимый текстовый редактор — настолько любимый, что они тащат его команды и плагины в другие текстовые редакторы, например, в VSCode.
Сейчас попробуем разложить по полочкам, что это за зверь и почему вокруг него такой культ.
Что такое Vim
Vim — это специализированный текстовый редактор для программистов. Он предназначен для работы с большими объёмами кода без использования мыши.
Главная особенность Vim — два режима: режим написания текста и режим команд. В первом режиме вы как обычно пишете код, а во втором молниеносно управляете им. Режимы работают параллельно друг другу и меняются по нажатию клавиш.
Главная сила — в огромном количестве клавиатурных команд, которые помогают быстро редактировать текст. Например:
dd — удалить строку, на которой вы сейчас стоите;
10dd — удалить сколько-то строк, в этом случае 10;
cw — заменить слово на другое;
w, b — курсор вперёд или назад на одно слово;
A — дописать текст в конец строки;
I — Начать вписывать текст в начало строки;
U — вернуть изменения в строке (например, если случайно стёр);
: 10,25 w temp — сохранить кусок документа в файл temp. Конкретно здесь сохранится кусок с 10-й по 25-ю строку.
И таких команд несколько десятков. Всё построено вокруг того, чтобы делать все текстовые дела молниеносно и принципиально без участия мыши.
Команды Vim, разложенные на клавиатуре
🤔 Зачем редактировать текст без мыши?
У мыши один курсор, которым нужно целиться в мелкие объекты на экране. А пальцев на руках десять, и ими никуда целиться не надо (при должной сноровке). Если у вас выработана мышечная память и вы знаете горячие клавиши (или команды Vim), вы будете редактировать текст быстрее, чем при использовании мыши.
Посмотрите, как удаляет строку среднестатистический пользователь:
А так это же действие выполнит пользователь Vim:
Пользователь Vim убирает руки с клавиатуры, только чтобы поесть или почесать репу. Всё остальное время он короткими командами обрабатывает текст в несколько раз быстрее, чем любой человек с мышью.
После привыкания работа в Vim сравнима с игрой на гитаре: вы управляете текстом, будто он продолжение вашей руки. Фильмы про хакеров видели? Вот такой эффект.
Кому подходит
Vim считается нестандартным инструментом со множеством недостатков:
Vim однозначно не подходит руководителям и тем разработчикам, которые большую часть времени занимаются организационными задачами и мало кодят — не получится быстро редактировать код, если постоянно не тренироваться.
Ещё Vim не подходит новичкам, которые только записались на курсы и ничего не знают о выбранной технологии — нужны хотя бы базовые навыки программирования, чтобы не допускать грубых ошибок при написании кода. Vim тебя не корректирует.
Если вас не испугали перечисленные недостатки и ваша работа связана с постоянным кодингом, то Vim может стать вашим незаменимым помощником.
Комментарий типичного вимера. Если узнали себя — однозначно стоит попробовать. Источник
Как установить
Перейдите на сайт vim.org и поставьте подходящую версию Vim на компьютер. Десктопный редактор — это полигон для тренировок. Здесь вы можете запустить тестовый проект или начать писать текстовые заметки. Основная задача: привыкнуть к новому сочетанию клавиш, научиться быстро переключаться между режимами и перестать пользоваться мышкой с трекпадом.
После установки перейдите в раздел «Справка» и выберите вкладу «Учебник Vim» — это интерактивная обучающая программа и минимум, необходимый для работы с редактором. Учебник состоит из семи уроков, по ходу которых вы познакомитесь с основными командами и сможете медленно обрабатывать код. Чтобы постоянно не возвращаться к учебнику — рекомендуем установить на рабочий стол фирменные обои или распечатать шпаргалку с командами Vim. Когда выучите команды и сможете ими пользоваться без шпаргалок — переходите на следующий этап и попробуйте использовать Vim на реальном проекте.
Стартовая страница учебника Vim. Учебник можно вызвать через «Справку» или команду vimtutor. Во время тестов мы скачали несколько версий редактора, и команда vimtutor срабатывала не всегда. Поэтому рекомендуем пользоваться «Справкой» — она надёжней
Добавление Vim в VS Code
Vim поддерживает множество плагинов, которые после установки позволяют превратить старый редактор в аналог современной среды разработки. На наш взгляд, для новичка это не слишком удобно и лучше наоборот — установить Vim в современную среду разработки вроде VS Code.
Откройте VS Code, в боковой панели нажмите на вкладку «Расширения» и вбейте в поиск «Vim» — вам нужно установить плагин vscodevim.vim. Теперь откройте любой файл и попробуйте что-то напечатать — в VS Code должны работать все команды Vim: вы можете в скоростном режиме создавать и редактировать код. Если что-то не работает — перезагрузите программу и попробуйте ещё раз.
Расширение vscodevim.vim для VS Code
Как стать продвинутым вимером
1. Изучите русскоязычную документацию и попробуйте команды, которые могут пригодиться в работе. Если что-то не понимаете или считаете какие-то команды лишними — не тратьте на них время. Vim необъятен, и большинство его возможностей вам не понадобятся — они нужны для специфичных задач.
2. Прочтите список рекомендованной литературы. Во время чтения помните, что лучше всего материал усваивается в том случае, если подкрепить его практикой.
3. Выберите плагины для индивидуальной настройки редактора. Это для тех, кому десктопная версия Vim понравилась больше плагина в VS Code.
Зачем использовать vim
VI(M) — текстовый редактор, который появился в далеком 1991 году, но до сих пор пользуется огромной популярностью (наряду с Emacs). Как правило, на него переходят после других редакторов уже состоявшиеся разработчики. Нередко, переходят с полноценных IDE. Почему?
vim с настроенным линтером, файловым деревом NERDTree и нечетким поиском с fzf
В этом гайде не будет пошагового обучения виму. Цель — объяснить философию vim и причины его популярности, а также дать направление для дальнейшего обучения.
Различия редакторов
В современном мире есть из чего выбрать среди редакторов: Sublime Text, Atom, VS Code, Brackets. И это не считая IDE.
Visual Studio Code
Все они не лишены недостатков, но с точки зрения возможностей наворочены по максимуму. Между собой редакторы сравнивают по следующим характеристикам:
При таком способе сравнения vim выглядит достаточно бледно на фоне других редакторов. Да, он самый быстрый, но количество и качество плагинов явно уступает, а интеграций и вовсе нет, хотя, с другой стороны, многие из них не нужны в мире вима. Кроме всего прочего, обычный vim (а есть еще gvim — версия, запускающаяся в виде отдельного оконного приложения) — терминальная программа со всеми вытекающими последствиями. Мышка хоть и поддерживается, но работать используя её в виме — сомнительное удовольствие. Например скроллинг двигается рывками, так как в текстовом терминале смещение построчное.
И завершает картину кривая обучения. У вима она даже круче, чем у emacs. Чтобы научиться им пользоваться, придется в буквальном смысле страдать (но недолго если правильно учиться).
Чужой среди своих
Если слепой десятипальцевый метод печатания создан для эффективного набора текста, то вим создан для слепого десятипальцевого редактирования текста.
Вим предлагает другой взгляд на способ работы с текстом. Вместо горячих клавиш + мышка + перемещение стрелками вим вводит понятие режимы. По умолчанию, открыв редактор, мы попадаем в режим normal. В этом режиме вся клавиатура действует как приборная панель, набор текста в нём невозможен. Его основная задача — использовать клавиатуру для перемещения по тексту и выполнение модификаций с помощью команд. В отличие от горячих клавиш, все команды короткие и нередко составные, причем, нажатие составных команд всегда последовательное, а не одновременное, как в горячих клавишах.
Другими словами, вим предоставляет язык для модификации текста.
Приведу несколько примеров:
Сама система команд, при этом, выстраивается в логичную систему, где всё имеет смысл и находится на своем месте. Причем, не только с точки зрения обозначений (i — inner, a — around и так далее), но и с точки зрения расположения на клавиатуре. Из этого, кстати, следует интересный вывод: если ваша раскладка не qwerty, то вся клавиатура «поедет», и пользоваться вимом станет невыносимо больно.
vim cheat sheet by Max Cantor
Но для полноценной работы одного режима normal недостаточно. Для перехода в режим редактирования insert, существует более 6 способов! Например ввод команды i приводит к тому, что ввод начинается прямо в том месте, где стоит курсор, а shift + a перемещает курсор в конец строки (требуется довольно часто), в свою очередь cc стирает ту строчку, где находится курсор и входит в режим редактирования.
Для выхода из режима вставки в нормальный режим, достаточно нажать ESC.
При правильной работе в вим режим вставки используется только для ситуации набора текста (или стирания во время набора). Модификации и перемещения выполняются, в подавляющем большинстве случаев, в режиме команд.
Мощь режима normal вы можете оценить хотя бы по тому, что абсолютно в каждом популярном редакторе есть плагин, эмулирующий работу vim и, как правило, это самый популярный плагин с огромным отрывом от всех остальных. Например, плагин в VS Code установили более миллиона раз.
Наличие режимов — ключевая, но не единственная причина. Вторая, не менее важная — буферы. В обычных редакторах есть чёткое разграничение на табы с файлами и другие панели, такие как файловое дерево, встроенный терминал, окно вывода ошибок, окно конфигурации, окно отладки и так далее. Все эти сущности живут своей жизнью. У них свои правила работы и отображения, свой набор горячих клавиш и способ перемещения внутри них (если такое перемещение вообще возможно).
Еще одно внезапное преимущество появляется из-за текстовой природы самого редактора. Так как он открывается прямо во вкладках терминала, а продвинутые терминалы имеют такую возможность как split окна, то интеграция терминала внутрь vim особо не нужна и с помощью комбинации вкладок терминалов и вима можно очень удобно настроить рабочий процесс.
Терминал iTerm 2 со split-окнами
Возможности, описанные выше, не даются бесплатно. Существуют определенные пререквизиты. Главный из которых — слепая десятипальцевая печать. Опыт показывает, что если программист печатает вслепую, но не по десятипальцевой схеме, то он либо вообще не может адаптироваться, либо постоянно испытывает дискомфорт. Если же человек пока не научился печатать вслепую вообще, то изучение вима стоит отложить на будущее.
Как правило, люди, печатающие правильно, настолько ценят возможность не смещать руки относительно центральной позиции (смещение руки на стрелки для них доставляет физический дискомфорт и неприятие), что вим становится для них настоящим праздником. Вся система команд идеально ложится на соответствующую концепцию.
Клавиатура терминала ADM-3A
В мире вима есть одна деталь, серьезно влияющая на количество его пользователей. В отличие от современных редакторов, в которых настройка выполняется переключением галочек либо изменением значений в json-файле, вим требует поддержки своего файла конфигурации и ручном управлении буквально всем. В виме нет механизма для просмотра и установки плагинов прямо из редактора. Каждый плагин необходимо самостоятельно найти на гитхабе и вписать в этот файл. Если нужна дополнительная конфигурация, то в этом же файле её и нужно сделать. Сам конфигурационный файл использует язык программирования VimL, тот же, на котором написан сам редактор. К сожалению, не получается один раз настроить его и забыть. Несмотря на то, что в сети огромное число примеров этих конфигурационных файлов, постоянно приходится что-то подкручивать, заменять плагины и дописывать новые горячие клавиши.
Фрагмент файла конфигурации vim
Когда не стоит учить вим
Отдельно стоит сказать, что не стоит учить вим одновременно с тем, что вы собираетесь делать внутри него. Когнитивная нагрузка при изучении вима настолько высокая, что у вас не будет оставаться никакой энергии на изучение нового языка, фреймворка или, даже, программирования в целом. На вим имеет смысл смотреть тогда, когда вы уже спокойно работаете и хотите новых острых ощущений.
Другой важный аспект — готовность принять идеологию вима. Нередко происходит ситуация, когда программист садится за вим и при этом не начинает пользоваться вимом. Он продолжает использовать стрелки и практически не выходит в командный режим. Такой способ обучения виму самый опасный. Как только произойдет привыкание, переучить себя будет неимоверно сложно. Немалое число людей, считающих себя вимерами, не используют вим и в действительности работают крайне неэффективно.
Обучение виму — процесс сложный морально. Дело в том, что опыт сам по себе не делает вас лучше в чем-то. Научившись как-нибудь набирать текст, человек и через много лет будет делать это как-нибудь (не по скорости, а по эффективности работы с ним). То же самое касается использования редакторов.
Для повышения своей эффективности необходимо постоянно наблюдать за своими действиями, отслеживать те, что занимают слишком много времени, читать статьи и книги в поисках новых способов решения старых проблем. Такой подход, конечно же, важен не только при работе с вимом и даже не только в программировании, но именно в виме по-другому успеха достичь невозможно. Во время обучения нельзя себе давать слабину и действовать из принципа «сейчас сделаю хоть как-нибудь, а потом разберусь». Незаметно для вас сформируются неправильные привычки и дальнейший рост остановится. Если вы к этому не готовы, то изучение стоит отложить.
Сколько понадобится времени
Если следовать советам выше и постоянно правильно практиковать вим, то время от «любое действие занимает минуту» до «могу неспешно работать периодически подсматривая в документацию» займет около месяца. Дальше процесс пойдет легче, но останавливаться в развитии на этом этапе нельзя. Оттачивание всех необходимых навыков может занять и год. Но не стоит пугаться. В любом случае через месяц-два вы сможете вполне сносно работать.
NeoVim
Некоторое время назад был основан проект NeoVim. Это форк вима, разрабатывающийся энтузиастами. Сейчас он очень популярен и работает лучше, чем оригинальный Vim. Совместимость с плагинами почти полная, к тому же, большинство плагинов сейчас делаются с прицелом и на nvim тоже. Наша рекомендация использовать как основной редактор именно nvim.
Процесс обучения
Поставьте nvim и vim (с поддержкой python3).
Распечатайте и изучите vim cheatsheets.
Научитесь использовать возможности вашего терминала — сплиты/табы используя горячие клавиши.
Измените маппинги клавиш как описано выше.
Научитесь работать с пакетным менеджером plug. С него начинается вход в vim.
Изучите набор плагинов, подходящих под ваш стек, и установите их. В интернете много статей для настройки практически любого стека разработки. Единственная рекомендация, смотрите плагины основанные на lsp
Полезные ссылки
Плагины
Самый удобный способ искать плагины для vim — vimawesome.com.
Ниже список основных плагинов, без которых вим не вим:
Главный плагин с которого все начинается — vim-plug — пакетный менеджер, управляющий всеми зависимостями.
Кроме них понадобится и множество других. Например, под каждый язык есть свой собственный набор плагинов, информацию о которых можно почерпнуть гуглением либо просмотром содержимого репозитория https://github.com/sheerun/vim-polyglot.
Советы
Хотя вим и позволяет практически любую модификацию произвести чуть ли не в одну составную команду, злоупотреблять таким подходом не стоит. Например, задача «удалить три слова» уже требует умственного напряжения, если делать её одной командой. Гораздо проще вызвать удаление слова руками три раза. Баланс между одной сложной и набором простых команд придется искать самостоятельно. Важно дойти до уровня, когда вам не нужно задумываться над тем, «а что мне сейчас набрать, чтобы выполнить эту задачу?».
Периодически просто открывайте документацию установленных плагинов и читайте её. Каждый раз вы будете находить что-нибудь новое и полезное.
Забудьте про свой редактор. Используйте Vim
Получайте удовольствие от процесса редактирования текста.
Вступление
Здравствуй, дорогой читатель! Данная статья не является ни руководством, ни учебником. В этой статье я лишь хочу рассказать Вам, что существует более эффективный инструмент для работы с текстовыми файлами. Этой статьёй я хочу вдохновить Вас на то, чтобы, поборов глубоко вросшие в Вас привычки, Вы попробовали совершенно другой, не похожий ни на что, метод работы с текстом.
Здесь я обойдусь и без истории возникновения Vim. Скажу лишь, что главный разработчик этого замечательного редактора — Брам Мооленаар, а произошёл он от стандартного редактора Unix — Vi, автором которого был Билл Джой.
Vi был создан в далёком 1976 году. Тогда же и был придуман его необычный интерфейс, основанный на разделении режимов работы на: нормальный, режим вставки и режим командной строки. Пусть многие спорят, что такой подход возник лишь вследствие ограничений техники тех времён, но я утверждаю, что этот метод работы эффективнее всего того, что предлагают нам другие редакторы.
Истинную мощь Vim демонстрирует при работе с текстами имеющими некоторую структуру, т.е. он незаменим для программистов и верстальщиков, но многие его возможности очень помогут и при работе с простым текстом.
Я также предполагаю, что Вы умеете или учитесь печатать вслепую и не сомневаетесь в том, что этот навык чрезвычайно полезен. Если же у Вас есть сомнения на этот счёт, то предлагаю прочесть небольшое отступление.
Печатайте вслепую!
Почему просто необходимо печатать вслепую?
Вспомните, как вы учились кататься на велосипеде! Сначала вы мучились, пытаясь понять, как же это делают остальные, не могли проехать и двух метров. Но вы старались! Вы пробовали ещё и ещё. Может быть час, день или даже несколько дней. Пока не почувствовали.
Помните, насколько приятным было то ощущение, когда вы впервые почувствовали, что нужно делать, и будто стали с велосипедом одним целым? А потом вы к этому быстро привыкли и забыли, что бывает иначе…
Если Вы не помните, как учились ездить на велосипеде, вспомните, как учились плавать или кататься на коньках, вспомните любое своё умение!
Так раз уж если Вам приходится пользоваться компьютером — получайте удовольствие от общения с клавиатурой, вместо того, чтобы постоянно ощущать этот ужасный 100-кнопочный барьер (с двухкнопочным в придачу) между вами и компьютером (и теми, с кем вы посредством компьютера общаетесь).
Печатайте мысли, а не буквы и слова!
Vim — редактируйте вслепую!
То же славное ощущение, про которое я говорил выше, появляется и в Vim’е.
Если вы просто печатаете вслепую, ты вы с удовольствием вводите текст, не задумываясь на процессом.
Ценой такого удовольствия является, как говорят, высокий барьер вхождения, т.е. сложный и небыстрый период освоения. Но это тот самый случай, когда единственной возможностью повысить качество работы является вложение времени в обучение.
Вы готовы меняться?
Итак, если Вас не пугают трудности на пути освоения совершенно другого инструмента, если Вас привлекают те перспективы, о которых я рассказал, я могу предложить Вам материалы, используя которые Вы покорите этот редактор.
Как освоить Vim?
Осваивать Vim — это, пожалуй, страшно. Или, точнее, очень страшно. Речь идёт об изучении совершенно необычного подхода к редактированию кода, не говоря уже о работе с простым текстом. Многие несправедливо обвиняют тех, кто выбирает Vim, в том, что они впустую тратят время.
Я со всей уверенностью могу заявить о том, что Vim позволил мне повысить эффективность в деле написания программ. Работать стало удобнее (ниже я расскажу об этом более подробно). Я никому не хочу навязывать Vim, но очень рекомендую освоить этот редактор всем, кто занимается программированием, работает в сфере Data Science, в общем — тем, кто так или иначе пишет и редактирует некий код.
Если вам очень хочется узнать о том, стоит ли вам использовать Vim, и о том, кто и для чего им реально пользуется — взгляните на этот материал (кстати, не позвольте его названию, «Не пользуйтесь Vim», ввести себя в заблуждение). Ещё можете посмотреть это видео, которое, кстати, подготовил сам Люк Смит.
А теперь, учитывая всё вышесказанное, предлагаю поговорить о том, что такое, на самом деле, Vim!
Что такое Vim?
Отвечая на этот вопрос, я хочу ещё раз повторить то, что было сказано в самом начале статьи: «Vim — это редактор, реализующий совершенно необычный подход к редактированию кода, не говоря уже о работе с простым текстом».
В Vim имеется несколько «режимов работы», переключение между ними приводит к изменению функционала клавиатурных клавиш (например, клавиша W в режиме вставки, что неудивительно, позволяет ввести букву w, а вот в нормальном режиме она позволяет перемещать курсор вперёд на одно слово). При таком подходе клавиатура используется и для ввода символов, и для перемещения по тексту. Другими словами — при работе в Vim не нужна мышь.
Это очень хорошо в тех случаях, когда нужно постоянно «переключаться» между редактированием и просмотром кода. Обычно программисты именно так и работают. Если вы раньше никогда не пользовались Vim для работы с программным кодом, то вы даже не замечаете того, как много времени тратится на то, чтобы снять руку с клавиатуры и потянуться к мыши (или к трекпаду), затем — на то, чтобы переместить курсор туда, куда нужно, и наконец на то, чтобы вернуть руку на клавиатуру и приступить к вводу текста (в общем — тратится очень много времени).
Конечно, на то, чтобы привыкнуть к Vim, нужно некоторое время. И это — не прямая замена какой-нибудь IDE или редактора вроде VS Code. Но можно сказать, что Vim позволяет тому, кто умеет им пользоваться, значительно ускорить работу с кодом. Кроме того, интересно то, что его более простым аналогом является Vi — стандартный текстовый редактор большинства Unix-подобных систем, работающий в терминале.
Как научиться работать в Vim?
▍1. Используйте vimtutor
▍2. Постоянно пользуйтесь Vim
Используйте Vim как можно чаще. Нужно просмотреть текстовый файл? Запустите Vim. Хотите что-то по-быстрому изменить в Python-скрипте? Примените Vim. Делаете какие-то заметки? Делайте их с помощью Vim. В общем, полагаю, вы меня поняли. И каждый раз, когда работаете в Vim, всегда задавайтесь вопросом о том, какова наиболее эффективная последовательность нажатий на клавиши (то есть — наиболее короткая последовательность), позволяющая решить текущую задачу.
И попутно постарайтесь сократить использование мыши.
▍3. Интегрируйте с Vim всё что сможете
Используйте клавиатурные привязки Vim везде, где это возможно. Начните делать всё, что сможете, «в стиле Vim». Например, если вы пользуетесь браузером, основанным на Chromium (Chrome, Brave, Edge), или браузером Firefox, подумайте об установке расширения Vimium, которое позволяет пользоваться в браузере клавиатурными сокращениями Vim, отвечающими за перемещение по документу (H, J, K, L и так далее).
Если вы пользуетесь для работы с кодом некоей IDE — найдите плагин или расширение для добавления Vim-привязок в соответствующую среду. Например, пользователи PyCharm (или любой IDE от JetBrains) могут воспользоваться ideavim. А пользователи VS Code (в 2021 году этот инструмент уже ближе к IDE, чем к обычным текстовым редакторам) могут прибегнуть к расширению VSCodeVim.
В Jupyterlab можно включить привязки Vim для встроенного текстового редактора путём установки jupyterlab-vim, что позволит полностью эмулировать Vim в ячейках блокнотов.
Постарайтесь органично интегрировать Vim в свою рабочую среду и несколько недель поработайте по-новому. Я могу говорить о том, что после нескольких VSCode-сессий в стиле Vim мне стало гораздо удобнее пользоваться этим редактором. А ещё — я очень рад избавлению от мыши!
▍4. Перенастройте клавишу Caps Lock (но это необязательно)
Самая бесполезная клавиша, расположенная в самом лучшем месте клавиатуры. Именно так можно охарактеризовать клавишу Caps Lock. Поэтому советую превратить Caps Lock в Escape. Если вы интересуетесь Vim, то уже должны знать о том, что клавиша Escape используется в Vim для переключения режимов. Я очень советую тем, кто стремится к максимальной эффективности, воспользоваться вышеописанной модификацией.
Пользователи Windows и WSL могут использовать uncap — программу, которая превращает клавишу Caps Lock в Escape.
Пользователям macOS в плане переназначения клавиш повезло — они могут решить эту задачу, прибегнув к системным настройкам.
▍5. Глубже изучите Vim
После того, как вы привыкнете к Vim и немного его освоите, придёт время для более глубокого освоения этого редактора ради дальнейшего повышения эффективности своего труда. Ниже я, основываясь на собственном опыте, привожу список самых полезных (и, пожалуй, уникальных для Vim) команд, применимых в нормальном режиме работы:
Итоги
Вероятно, сейчас вы уже достаточно хорошо освоили Vim и значительно повысили свою скорость работы с кодом. И вы наконец сможете похвастаться перед пользователями Reddit или перед коллегами своими отточенными навыками редактирования текстов, когда в ходе работы вам не приходится убирать руки с основной части клавиатуры. Когда вы достигнете подобного уровня, вы можете развиваться в сфере Vim и дальше. Например — в следующих направлениях: