Реклама ООО Таймвэб
Реклама ООО Таймвэб
Реклама ООО Таймвэб

Редактор кода Vim: чем он так хорош и пользуются ли им в 2022 году?

1 комментарий
Редактор кода Vim: чем он так хорош и пользуются ли им в 2022 году?

Поговорим о самом противоречивом редакторе текста с 50-летней историей. 

Что такое Vim?

Vim – это древняя модификация текстового редактора Vi, созданного Биллом Джоем в 1976 году. Vim, в свою очередь, появился спустя 15 лет и стал одним из наиболее значимых приложений в истории компьютеров. 

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

Интерфейс Vim

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

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

Давайте же подробнее разберемся в том, чем примечателен Vim и стоит ли вообще его пробовать.

Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей
Подписаться

Чем хорош Vim?

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

Эффективность

Мы еще поговорим об основных концепциях Vim, когда затронем его философию, но главная причина любви к Vim – его эффективность.

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

Вездедоступность

Вы учите Vim один раз и пользуетесь им везде. Независимо от выбранной ОС, у вас всегда будет доступ к Vim, и он будет таким же, как Vim в любой другой системе (если, конечно, вы не обвешаете редактор на своем ПК плагинами и темами). 

А чем плох?

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

Vim, без преувеличения, сложен в освоении. Даже заставить человека отказаться от использования стрелок и перейти на так называемый home-блок клавиш – тот еще квест.

Клавиатура с Home-блоком

Так выглядели клавиатуры раньше. Здесь есть только home-блок

Чтобы освоить Vim и получить от него пользу (и удовольствие, конечно же), надо этого захотеть. А захотят ли этого разработчики? Только энтузиасты, которым не сидится на месте ровно и хочется что-нибудь понастраивать и поломать. А работяги в энтерпрайзе, привыкшие ко всем благам IntelliSense и безумного рефактор-тула от JetBrains, вряд ли поверят, что тратить время на изучение архаичного редактора – хорошая идея. 

Философия Vim

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

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

Никаких мышей

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

Управление осуществлялось с помощью специальных текстовых команд и сочетаний клавиш. 

Модифицированный интерфейс Vim

Современный Vim полностью наследует эту особенность и возвращает нынешних программистов в прошлое, позволяя отказаться и от мыши, и от необходимости покидать home-блок клавиатуры (ряд клавиш, до которых дотягиваются пальцы при их размещении на специальных бугорках-навигаторах для слепой печати). 

Модальность

Одна из вещей, которая с ходу ставит в ступор большинство новичков, решивших начать изучение Vim – это перемещение по тексту с помощью клавиш H,J,K,L. То есть нельзя сразу открыть редактор и начать менять в нем текст. Для этого нужно зайти в специальный режим. 

В Vim есть несколько режимов. Два основных:

  • COMMAND – в нем нельзя менять текст (только удалять отдельные знаки), потому что он создан для управления программой и ее интерфейсом – для перемещения по коду, деления экрана на несколько частей, открытия новых документов и прочих утилитарных задач.

  • INSERT – этот режим позволяет редактировать текст, как в любом другом редакторе. То есть вы пишите что-то, а контент тут же отображается. 

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

Также есть отдельный режим для копирования текста и его вставки. 

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

Vim и священные войны

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

Поэтому в сети найдется по меньшей мере пара сотен форумных веток, в которых фанаты Vim ругаются с адептами Emacs или Nano. Уровень адекватности там на минимуме.

Vim – действительно отличное приложение с целой философией, но все же не божество какое-то. Это редактор, такой же, как все остальные, и строить вокруг него культ нелепо. Так что, освоив Vim, не начинайте развязывать холивары на просторах сети. 

Как установить Vim и начать им пользоваться?

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

Для этого:

Запускаем терминал в Linux и macOS или программу PowerShell в Windows. Вводим команду:

cd \[путь/до/папки/с/файлом]

Затем запускаем редактор с помощью команды: 

vi \[путь/до/файла/название-файла.js]

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

На этом моменте и начинается знакомство с Vim.

Базовые клавиши для управления

Для начала нужно освоиться в управлении и понять, что можно делать в Vim, а чего нельзя. Чтобы перемещаться по тексту, используем клавиши H (влево), J (вниз), K (наверх), и L (вправо). 

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

Чтобы удалить текст, мы используем клавишу X. Для выделения текста нужно перейти в визуальный режим при помощи клавиши V. 

Плагины в конфигурационном файле Vim

А чтобы ввести текст, переходим в режим INSERT. Это можно сделать несколькими способами, но вот два основных:

  • Нажатие на клавишу I, чтобы начать ввод текста прямо на месте курсора. 

  • Нажатие на клавишу O, чтобы начать ввод на новой линии. 

Для выхода из режима INSERT, нажимаем на кнопку Esc или комбинацию клавиш Ctrl + {.

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

Чтобы скопировать текст, используем клавишу Y, а чтобы вставить – P. 

Модификаторы команд

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

Например, если ввести в это поле dd, то Vim удалит строку, на которой расположен курсор. Если ввести gg, то курсор перескочит в начало файла и т.п. К командам можно добавлять цифры, тогда она будет применяться несколько раз. 5dd – удалить не одну линию, а сразу 5. 

Чтобы закрыть Vim, нужно ввести команду :wq. Она запишет внесенные изменения и вернет вас в терминал. Чтобы изменения не сохранялись, надо ввести :q!.

Краткий референсный список команд 

  • 7j – сместит курсор на 7 строк вниз.
  • w – сместит курсор на одно слово вперед.
  • G – сместит курсор в конец документа.
  • dw – удалит одно слово.
  • dt< – удалит текст вплоть до символа <.
  • cc – удалит весь контент со строки и переведет редактор в режим INSERT.
  • . – повторно активирует последнюю выполненную команду.
  • /function – найдет в тексте слово function (все его повторения).

С полным списком можно ознакомиться во встроенном обучающем приложении или в документации к Vim. 

Управление интерфейсом 

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

  • :split – поделить редактор на два окна. Такой режим можно использовать как для просмотра одного документа в двух разных местах, так и для параллельного редактирования нескольких документов.

  • :edit – позволяет выбрать файл, который мы будем редактировать. 

Базовая конфигурация

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

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

  • Открываем конфигурационный файл при помощи команды:

vi ~/vim/.vimrc
  • Внутри прописываем текст inoremap jj <ESC>. Эта директива заменит нажатие ESC на команду jj. Это более естественный и удобный способ выхода из INSERT-режима. 

  • Так как мы часто используем клавишу Ctrl внутри Vim, надо переназначить ее на что-то близкое к home-блоку клавиатуры, например на Caps Lock. 

  • Затем меняем базовый список директив для отображения количества линий, включения отображения подсветки синтаксиса и т.п. 
syntax on # highlight syntax
set number # show line numbers
set noswapfile # disable the swapfile
set hlsearch # highlight all results
set ignorecase # ignore case in search
set incsearch # show search results as you type

Может ли Vim заменить современные редакторы?

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

Фактически его можно превратить в полноценную IDE. Для этого нужно только найти подходящие плагины. С авдополнением кода и подсветкой синтаксиса проблем не будет. Установить ESLint и Prettier тоже можно. Даже поддержка TypeScript не станет проблемой. Свежие языки в духе Rust будут работать. 

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

Vim актуален в 2022 году. Для него создают плагины, его поддерживают и обновляют.

Neovim

Neovim – это попытка сохранить все лучшее, что есть в Vim, и при этом убрать все недочеты, коих не так мало в связи с возрастом редактора.

Интерфейс Neovim с плагинами

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

В Neovim можно добавить функцию Fuzzy Search, боковую панель для быстрого поиска файлов в проекте, вкладки, интеграцию с GitHub и даже дебаггер. 

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

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

Другие редакторы, поддерживающие идею Vim

Концепция Vim близка не только создателям самого редактора в его современной итерации. Подобную модель управления можно встретить в других редакторах и добавить в другие приложения (даже не связанные с разработкой ПО). 

Редакторы с управлением, как в Vim

  • OniVim 2 – это комбинация сразу трех редакторов: Sublime Text, Vim и VSCode. Красивый редактор с высокой производительностью, поддержкой плагинов для VSCode и управлением, как в Vim.

  • LunarVim – еще одна полноценная IDE на базе Neovim. 

Другие Vim-подобные расширения и приложения

  • Vimium – это дополнение для Google Chrome, позволяющее перенести управление браузером с мыши на клавиатуру. Полностью.

  • Vimac – то же, что и Vimium, только в масштабах операционной системы (утилита для macOS). 

  • VSCodeVim – расширение для VSCode, заменяющее стандартную модель управления на ту, что принята в Vim.

Конкуренты Vim

Фанатам Vim ведь нужно с кем-то ругаться на форумах. Для этого нужны редакторы с иной идеологией, и таких хватает. Причем речь идет не о современных решениях вроде WebStorm. Речь о таких же консольных редакторах, но с иным управлением. 

  • nano – очень популярный редактор. Известен почти так же, как и Vim, потому что доступен почти на всех операционных системах, включая macOS. 

  • Emacs – в ранних итерациях запускался в консоли и был одним из первых с ныне привычной системой управления.

  • slap – что-то среднее между nano и vim. С полноценной поддержкой мыши для тех, кто все же не может отказаться от нее и не готов учиться работать только с клавиатурой. 

Как выучить Vim?

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

Статья Дэниеля Мислера – пожалуй, лучший ликбез по Vim. Расписано все – от базовой конфигурации до самых труднообъяснимых концепций. Достаточно прочитать этот материал, и вы будете отлично ладить с Vim и сможете настроить его под свои нужды.

Интерфейс Neovim с дополнениями Официальная документация Neovim – отлично скомпонованная вики-подобная коллекция статей про Vim, помогающая быстро понять, что к чему. Материалы удобно категоризованы, поэтому к ним легко возвращаться по мере необходимости, чтобы подтянуть конкретные знания. 

Вместе с Vim в комплекте идет утилита под названием Vimtutor. Это интерактивная школа по обучению азам Vi. Можно начать свое знакомство с редактором именно с Vimtutor, но я бы все же советовал два вышепредложенных варианта. 

Вместо заключения

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

Hello World! Гайды и обзоры для девелоперов разных мастей.

Комментарии

Гамлиэль Фишкин +106
31 марта в 08:12
Уважаю людей, использующих Vim. Я отнюдь не мышезависимый, но попытаться освоить Vi или Vim пока что не решился.

Странно сравнивать Vi/Vim и nano. У nano совершенно явная ниша: он очень лёгок в освоении (разумеется, не для мышезависимых) и работает где угодно, но для серьёзного редактирования он недостаточно функционален. Для серьёзного редактирования лично я использую Geany; у него есть один недостаток: он не работает вне графической оболочки.

Редакторы Vi и Vim работают где угодно и достоточно функциональны для серьёзного редактирования, но я не чувствую себя настолько умным, чтобы использовать их.
С помощью соцсетей
У меня нет аккаунта Зарегистрироваться
С помощью соцсетей
У меня уже есть аккаунт Войти
Инструкции по восстановлению пароля высланы на Ваш адрес электронной почты.
Пожалуйста, укажите email вашего аккаунта
Ваш баланс 10 ТК
1 ТК = 1 ₽
О том, как заработать и потратить Таймкарму, читайте в этой статье
Чтобы потратить Таймкарму, зарегистрируйтесь на нашем сайте