Зачем нужен vim на ubuntu

Обновлено: 30.06.2024

Данное руководство охватывает установку и базовое использование Vim.

Установка vim

Благодаря широкому использованию vim в командной строке Linux он доступен в репозитории по умолчанию почти каждого дистрибутива.

Для установки редактора на Ubuntu и Debian используйте команду apt-get:

sudo apt-get install vim

Чтобы установить vim на Fedora и CentOS, используйте yum:

sudo yum install vim

На Arch Linux vim можно установить с помощью pacman:

sudo pacman -S vim

Итак, теперь Vim установлен.

Начало работы c Vim

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

Тем не менее, сейчас запускать vim с чистого документа не нужно. Чтобы продемонстрировать возможности vim, можно создать новый документ под названием «newfile»

echo "This is a new file.
Here is the second line
And here is the third line.
Some more text is on this line. We will edit this file in vim.
It will be great fun." >> newfile

Теперь откройте только что созданный файл.

Модальное редактирование

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

Обычный режим

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

Vim выполняет редактирование в «обычном» режиме. В данном режиме редактор находится при запуске. Этот режим используется для быстрого перемещения и редактирования текстового документа. Он не используется для ввода текста.

  • [esc] – чтобы перейти в обычный режим, нажмите клавишу «escape».

Режим вставки

Используется для ввода текста. Данный режим можно установить несколькими способами.

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

Визуальный режим

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

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

  • v – устанавливает обычный визуальный режим. Выбор осуществляется путем перемещения курсора вверх, вниз, влево и вправо.
  • V – устанавливает режим визуальной строки. Выбираются целые строки, от первого до последнего символа, путем перемещения вверх и вниз.
  • [ctrl]-v – Переход в режим визуального блока. Блок для выбора можно расширить и сузить. С помощью этого метода можно выбрать отдельные части нескольких строк.

Командный режим

Используется для выполнения команд. Для активации этого режима используется двоеточие.

Дополнительный режим, который необходим для сложного редактирования, изменения настроек и для управления vim, называется командным. Данный режим используется для сохранения документов, завершения работы программ, выполнения сложного поиска, и т.п.

Перемещение по тексту в редакторе vim

Основы перемещения

Перемещаться по тексту всегда можно при помощи клавиш со стрелками, но Vim предоставляет и более быстрые способы перемещения по документу. В обычном режиме можно использовать клавиши h, j, k и l для передвижения влево, вниз, вверх и вправо соответственно.

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

Расширенное перемещение

Существуют также другие горячие клавиши перемещения. Ниже приведены самые полезные их них.

Редактирование

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

Важно понимать, что команды редактирования в Vim очень мощны в сочетании с операторами движения. Все опции, описанные в главе о перемещении, могут быть использованы в качестве направления. К примеру, команду редактирования слова можно выполнить при помощи внесения флага «w».

Ниже приведены несколько действий, которые можно использовать:

Удаление текста

  • x – удаляет символ под курсором.
  • d – удаляет символ в направлении, указанном после ввода команды. Например, «dl» удаляет символ справа.
  • dd – удаляет строку.
  • D – удаляет текст от текущей позиции курсора до конца строки.

Изменение текста

  • r – заменяет символ под курсором. Укажите символ, который нужно заменить, в конце команды.
  • c – изменяет текст в указанном направлении. К примеру, «cw» изменяет текущее слово. После выполнения этой команды vim переходит в режим вставки, так что можно ввести текст для замены.
  • C – изменяет текст до конца строки. Данная команда также переводит vim в режим вставки.

Копирование и вставка

Прочее редактирование

  • u – отменить последнее действие.
  • <ctrl>-r – повторить последнее действие.
  • J – соединить текущую строку со следующей.

Управление документами

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

  • :q – выйти из vim. Если изменения не были сохранены, это не удастся.
  • :q! – выйти из vim, не учитывая все несохраненные изменения.
  • :w – сохранить изменения. Нажмите пробел и введите имя файла, чтобы сохранить документ в другое место; если это первое сохранение, укажите место для сохранения.
  • :e – отредактировать следующий файл.
  • :bn – отредактировать следующий открытый в vim файл.
  • :bp – отредактировать предыдущий открытый в vim файл.

Итоги

Как уже упоминалось ранее, мощность Vim состоит в возможности объединять различные команды в цепи. Самый простой способ понять эту концепцию – рассматривать команды vim как английский язык. То есть, клавиши в обычном режиме могут представлять прилагательные, глаголы и существительные.

К примеру, чтобы скопировать (yank) 4 слова (words), просто переведите эту фразу на понятный vim язык. В данном случае получится:

Чтобы удалить (delete) текст с текущей строки и до конца файла, введите:

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

Заглавная версия команды редактирования чаще всего нацелена от текущей позиции курсора до конца строки. К примеру, чтобы изменить текст от текущей позиции курсора до конца строки, используйте:

Чтобы выполнить эту же команду на несколько строк, просто добавьте к команде числовой префикс. Это изменит текст от текущей позиции курсора до конца следующей строки:

Существует целое множество мощных техник использования vim, не вошедших в данное руководство. Чтобы получить больше информации, используйте встроенный в vim мануал. Он не охватывает сложных тем, но дает представление о том, как работать и выполнять базовое редактирование с Vim. Для запуска учебника используйте:


На первый взгляд Vim выглядит очень и очень странно. Знакомство с ним сопровождается страшными мучениями, когда ты просто не можешь понять, что происходит. Редактор либо вообще не реагирует на нажатия клавиш, либо ведет себя крайне неадекватно. Ты пишешь слово door, а вместо этого Vim переходит на новую строку и вставляет or. Ты стираешь эту галиматью и снова пробуешь что-то написать — и, о чудо, на экране действительно появляется текст.

А потом его опять начинает глючить.

Спустя несколько попыток разобраться, как это работает, и бесчисленное множество матерных слов ты идешь в интернет и узнаешь, что Vim — двухрежимный редактор. Писать текст здесь можно только в режиме ввода (INSERT), для перехода в который следует нажать кнопку i или Insert.

Основной же режим, для выхода в который используется Esc, здесь предназначен для ввода, как тебе на первый взгляд кажется, хоткеев. Причем состоять они могут всего из одной клавиши: w — передвигает курсор к следующему слову, 0 — в начало строки, $ — в конец строки, A переводит курсор в конец строки и переключает редактор в режим ввода, u — аналог Ctrl-Z в нормальных редакторах.

Погуглив еще немного, ты обнаруживаешь, что есть также «хоткеи» из двух и более последовательных нажатий. Такие, как, например, dd, который удаляет всю строку, и dw, удаляющий слово, gg и GG, которые перемещают курсор в начало и конец документа.

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

— Зачем здесь эти режимы?!

«Хоткеи» Vim действительно удобны благодаря своей лаконичности, но разве необходимость переключаться между режимами не убивает все их удобство? Разве не проще нажимать пусть и требующие больше движений горячие клавиши в нормальных редакторах, чем мотаться взад-вперед между режимами? Да, может быть, сорок лет назад, когда на клавиатурах не было Ctrl и Alt, это и было оправданно, но сейчас-то зачем?

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

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

Философия Vim

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

Истина первая. Разделение режимов Vim имеет абсолютно логичный утилитарный характер. В одном режиме ты пишешь текст, во втором редактируешь. В современных редакторах эти границы размыты, мы привыкли писать и тут же редактировать, стирать, снова писать. В режиме ввода Vim позволяет это делать, но в очень ограниченных пределах: написал не ту букву — стер, написал другую. Все остальное — в режиме редактирования (основной режим).

Истина вторая. «Хоткеи», доступные в режиме редактирования, — это вовсе не хоткеи, а мощная система команд с аргументами, циклами и регистрами. При использовании Vim ты ни в коем случае не должен мыслить стандартным образом: сейчас я тыкну мышкой на том слове, потом нажму Backspace столько раз, сколько потребуется, чтобы его стереть, напишу другое слово, а потом перемещу курсор обратно. Вместо этого ты должен отдать редактору команду: замени вон то слово на это и верни меня обратно.

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

Первая идея, которая придет тебе в голову, — взять мышку, выделить последнее предложение, выбрать в меню «Вырезать» или нажать Del. Звучит просто и логично, но что ты скажешь про это?

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

Что они значат? Давай разберемся:

  • > — команда перемещения, перебрасывает курсор в конец абзаца;
  • d — команда изменения, а именно удаления (d — delete);
  • ( — команда перемещения, перебрасывает курсор в начало предыдущего предложения.

Так как команды перемещения могут быть аргументами команд изменения, вся команда на человеческом языке звучит так: > — переместить курсор в конец абзаца, а затем d( — удалить все символы до начала предыдущего предложения. А если совсем просто: удалить последнее предложение текущего абзаца.

Команды можно повторять, например: 3> — переместить курсор на три абзаца вперед, >d2( — удалить два последних предложения в абзаце, 3J — объединить следующие три строки в абзац (J — Join), 3w — перейти на три слова вперед (w — word), 50G — перейти к пятидесятой строке (G — Go).

У Vim хорошая документация, просто набери :help и следуй инструкциям

У Vim хорошая документация, просто набери :help и следуй инструкциям

Другой пример: ты опять же просматриваешь готовый текст и замечаешь слово Windows, которое лучше заменить на Linux. Решение в лоб — поставить курсор перед ним, нажать клавишу Del нужное количество раз, затем написать другое. Решение в затылок — переместить курсор на слово, нажать извращенную трехпальцевую комбинацию замены слова и написать другое. Правильное решение:

  • /Win — команда перемещения с помощью поиска (в данном случае ищем Win);
  • cw — команда замены (c — change) с аргументом «слово» (w — word);
  • Linux — новое слово.

Чтобы просто удалить слово, можно использовать такую команду: /Windw (dw — delete word). Обрати внимание: в отличие от «поиска и замены» тебе не обязательно писать слово целиком. Более того, ты можешь сделать то же самое другими методами. Например, если слово Windows второе в третьем предложении, заменить его можно так: <3)wcwLinux.

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

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

Пользователь Vim сделает так:

  • gd — переходим к определению функции или метода (gd — go definition);
  • i — переключаемся в режим ввода;
  • private — слово-модификатор и пробел;
  • Esc — возвращаемся в обычный режим;
  • `` — прыгаем туда, где были до перехода (возвращаем курсор обратно).

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

Это опять же одна из стандартных функций редакторов, но Vim может сделать ее гораздо более мощной. Как ты уже должен знать, команды модификации текста принимают в качестве аргументов команды перехода, а это значит, что прыжок к метке тоже можно использовать в качестве аргумента. К примеру, удалить текст, начиная от текущего положения курсора до метки «a»: d`a.

К слову, команды удаления Vim не удаляют текст безвозвратно, а помещают его в буфер (в терминологии Vim — регистр), поэтому стандартными средствами здесь можно делать вещи, для которых в других редакторах потребовался бы отдельный хоткей. Например, менять две строки местами: ddp. Команда dd удаляет текущую строку (после чего курсор перемещается на следующую), p (paste) — вставляет текст из регистра под текущей строкой.

Вместо удаления строку можно просто скопировать с помощью yy (y — yank), а затем вставить с помощью все той же команды p. Объединим эту возможность с повторением команд и получим быстрый способ вставки множества одинаковых строк: yy10p.

Нарисовать линию ---------- можно так: вводим символ - , затем переключаемся в обычный режим с помощью Esc и вводим команду x10p (x вырезает символ под курсором, 10p вставляет его десять раз).

Команда . выполнит предыдущую команду. И да, ее тоже можно зациклить: 3. — повторить предыдущую команду три раза. Команда qa начнет запись макроса с именем «a», остановить запись можно нажатием q. Выполнить макрос: @a.

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

Командный и визуальный режимы

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

Продолжение доступно только участникам

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Вариант 2. Открой один материал

Евгений Зобнин

Редактор рубрики X-Mobile. По совместительству сисадмин. Большой фанат Linux, Plan 9, гаджетов и древних видеоигр.


Покоряя редактор Vim

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

Что такое Vim?

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

Что за зверь Neovim?

Возможно, вы слышали о Neovim'е. Это современный форк классического Vim'а, отрефакторенный, легко расширяемый. Из коробки он уже не так суров, как его предшественник, с ним вполне можно иметь дело. Подробнее о Neovim – на neovim.io.

Почему Vim?

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

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

Еще одно достоинство, которое делает Vim лучшим редактором в мире, – это адаптируемость. Его можно идеально настроить "под себя" (или под свою команду).

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

Подытожим цитатой из великолепной книги Практический Vim:

В руках эксперта Vim разрывает текст со скоростью мысли.

Пробуем Vim на вкус

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

Поставьте пальцы правой руки на hjkl . Теперь это ваша основная позиция. Эти клавиши перемещают курсор влево-вниз-вверх-вправо соответственно. Также можно перемещаться между целыми словами, используя:

  • w (word) – к началу следующего слова;
  • e (end) – к концу следующего слова;
  • b – к началу слова;
  • ge – к концу предыдущего слова.

Пользуясь этим клавишами, можно перейти к нужному месту файла и нанести удар высокой точности:

  • daw – удалилось слово (delete aword);
  • das – удалилось целое предложение (sentence);
  • dap – уничтожился абзац (paragraph)!

Вместо разрушения, можно заняться улучшением:

  • caw , cas , cap – изменят слово, предложение или абзац (change);
  • ctx – заменит все до первого символа x в текущей строке (change till x);
  • с$ – все до конца строки;
  • ci( - все между символами скобок;
  • ci" - все между двойными кавычками.

Возьмите простую строку:

и измените ее f'ci'Wat

На человеческом языке это означает: найди (find) следующий символ ', а затем замени (change) все внутри символов ' на WAT. <ESC> выходит из режима вставки в нормальный режим.

редактор Vim

Можно скопировать строку командой yy (от слова yank – vim-жаргон для копирования) и вставить ее ниже командой p (put).

Оператор yank работает точно так же, как d (delete) или c (change). Его можно использовать для копирования слов – yaw или предложений – yas . Двойные операторы ( yy , cc , dd ) действуют на целую строку.

Бессмысленный пример

Выполним уже знакомую команду f'ci'MAN :

Разгоняемся: kJ объединит две линии в одну ( k – подняться, J – объединить).

И полный восторг: c3w+ .

редактор Vim


Все это совершенно бессмысленно, но часть магии Vim мы все-таки увидели.

Для более длинных ходов можно использовать счетчики в формате , например:

  • 5j – спуститься на 5 строк;
  • d2w – удалить 2 слова;
  • c2s – изменить 2 предложения.

Есть более масштабные ходы:

  • H – перейти к верхней части видимой области в редакторе;
  • gg – перейти к верху файла;
  • L и G – нижняя часть видимой области и низ страницы соответственно;
  • < и >– перемещение вперед/назад на целый параграф;
  • % – перемещение между парными скобками.

Новую строку можно начать после текущей ( o ) или перед текущей ( O ).

Для поиска по шаблону используется команда / , а n (следующий) и N (предыдущий) позволяет перемещаться между найденными фрагментами.

  • . (точка) повторяет изменения;
  • ; – для действий, начатых с t , f , T , F ;
  • n – для повтора поиска.

Можно даже записывать наборы команд с помощью макросов.

Столько мощи, а ведь мы практически не вышли за границы нормального режима и даже не покинули учебный файл! А есть еще разделения (splits), вкладки, регулярные выражения, доступ к внешним инструментам, проверка орфографии, подсчет слов, 6 основных режимов и 6 дополнительных с бесконечными возможностями для настройки и расширения.

Путь Vim

Основа Vim – клавиатура. Все важные команды расположены продуманно и максимально эффективно:

Все операторы осмыслены и легко запоминаются, благодаря мнемоническим зацепкам:

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

Почему редактор Vim такой суровый?

Перейдем к темной стороне Vim, к крутой кривой обучения:

редактор Vim

и к недружелюбности:

редактор Vim

Несмотря на то, что эти проблемы несколько преувеличены, они все-таки существуют. Есть по крайней мере 3 вещи, которые этому способствуют:

  1. Необходимо умение печатать вслепую.
  2. Управление полностью с клавиатуры.
  3. Ужасное первое впечатление.

Слепая печать

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

Управление с клавиатуры

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

Лучший совет – начинайте с основ и постепенно расширяйте словарный запас:

  • справка – :help или просто :h ;
  • перемещение – hjkl ( :h movement или :h motion );
  • перейти в режим вставки текста – i ( :h insert );
  • вернуться в нормальный режим – <ESC> ( :h mode-switching );
  • сохранить файл – :w ( :h write );
  • выйти из редактора – :q ( :h quit );
  • открыть файл – :e ( :h edit ).

Обратите внимание на двоеточие перед большинством команд. Оно вызывает командный режим (ex mode).

Самый простой способ изучить редактор Vim – совместить его с вашим уютным редактором с помощью vim-режима. Так вы не попадете в положение Робинзона Крузо, сохраните все возможности обычного редактора и получите преимущества Vim.

Сложнее всего будет не выучить команды, а запомнить их на уровне инстинктов. Тут дело за практикой. Если вы будете регулярно практиковаться, изучая новые комбинации, то быстро станете vim-мастером. Вот вам несколько полезных ресурсов для практики:

  • vimtutor – небольшой встроенный учебник. Просто введите в терминале vimtutor (в neovim – :vimtutor ).
  • "Рогалики" – текстовые 2D RPG, в которых вы перемещаете персонажа с помощью тех же клавиш hjkl и учитесь лучше контролировать клавиатуру. – увлекательная vim-игра.

Плохое первое впечатление

Последний оплот суровости Vim – ужасное первое впечатление. Вы набираете vim (или mvim для Mac GUI, или gvim для Windows, UNIX GUI) – добро пожаловать:

редактор Vim

Вот с этого бледного экрана вы начинаете работу с лучшим в мире редактором. Откройте файл – нет подсветки синтаксиса:

редактор Vim

Очень неуютно, на этом моменте многие в ужасе убегают.

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

Если вы не чувствуете в себе сил покорять редактор 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), вы будете редактировать текст быстрее, чем при использовании мыши.

Посмотрите, как удаляет строку среднестатистический пользователь:

  1. Он отрывает одну руку от клавиатуры.
  2. Берётся за мышку.
  3. Выделяет мышкой ненужную строку.
  4. Нажимает свободной рукой клавишу удаления.
  5. Возвращает обе руки в исходное положение на клавиатуру.

А так это же действие выполнит пользователь Vim:

  1. Он жмёт «esc», чтобы перейти в режим команд.
  2. C помощью навигационных клавиш j и k находит нужную строку.
  3. Пишет команду dd — удаление строки.
  4. Жмёт i, чтобы вернуться к редактированию текста.

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

После привыкания работа в Vim сравнима с игрой на гитаре: вы управляете текстом, будто он продолжение вашей руки. Фильмы про хакеров видели? Вот такой эффект.

Кому подходит

Vim считается нестандартным инструментом со множеством недостатков:

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

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

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

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

Комментарий типичного вимера

Комментарий типичного вимера. Если узнали себя — однозначно стоит попробовать. Источник

Как установить

После установки перейдите в раздел «Справка» и выберите вкладу «Учебник 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

Расширение vscodevim.vim для VS Code

Как стать продвинутым вимером

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

2. Прочтите список рекомендованной литературы. Во время чтения помните, что лучше всего материал усваивается в том случае, если подкрепить его практикой.

3. Выберите плагины для индивидуальной настройки редактора. Это для тех, кому десктопная версия Vim понравилась больше плагина в VS Code.

Читайте также: