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

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

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

Что такое Vim?

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

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

Интерфейс Vim

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

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

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

Чем хорош 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 на команду 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 – это отличный редактор, который заставит вас полностью переосмыслить то, как вы обычно работаете с кодом. Да, изучать его сложно, но если вы потратите на это время и силы, то будете вознаграждены.

источник

Related Posts
AllEscortAllEscort