- PVSM.RU - https://www.pvsm.ru -

Как Vim украл моё сердце

Думаю, видно из названия, что сегодня мы будем рассуждать о Vim! Что это такое? Зачем это нужно? Как этим пользоваться?

Как Vim украл моё сердце - 1


Многие, читавшие мою прошлую стать могли воскликнуть:

Как Vim украл моё сердце - 2

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

Как Vim украл моё сердце - 3

Возникает справедливый вопрос: «Зачем в 2018-ом пользоваться старой программой, да ещё и без графического интерфейса?» Ответ прост — он удобен. Соглашусь, так можно сказать абсолютно про любой редактор, но всё же этот случай является весьма необычным.

Начнём с того, что, нет, Vim не старый — ему всего 27 лет. Он является наследником классического редактора Vi. Он лучше адаптирован под современные системы и обладает более широким спектром возможностей. Иными словами, своё название (Vi Improved) полностью оправдывает. Хочу также отметить, что есть ещё более новая реализация тех же идей — neovim.

В чём же разница?

Как Vim украл моё сердце - 4

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

Думаю, среди вас найдутся такие люди (и кошки), которые на предложение перейти на другой редактор всегда отвечают примерно так:

Как Vim украл моё сердце - 5

Что же, neovim спешит на помощь! Благодаря ему сейчас во многих современных IDE и «программистских блокнотах» есть эмулятор функциональности Vim. Таким образом вы можете продолжать пользоваться своим любимым Sublime Text или CLion со всеми вашими плагинами, заодно заметно увеличив свою производительность в плане написания кода, и начав получать от этого больше удовольствия (об этом позднее). Также это хорошее средство для повышения ЧСВ, ведь «настоящие хакеры пользуются либо Vim, либо Emacs».

«Хорошо, я решил попробовать изучить какой-нибудь винтажный редактор, но почему именно Vim, а не хотя бы тот же Emacs?» Ну, это вопрос неоднозначный. Emacs является более мощным решением, которое может всё (в нём можно даже в змейку играть). Однако, эта его сильная сторона также является его слабостью. Он слишком обширный и комплексный, что выливается в более высокую сложность освоения и требовательность к железу. Последний аргумент может сейчас прозвучать глупо, ибо он тоже является консольным редактором, но в ряде задач (как то удалённое подключение по SSH) этот момент может оказаться критичным.

Как Vim украл моё сердце - 6
(Пользователи Emacs после этих строк)

Хорошо, мы разобрались в том, что такое Vim, но осталось понять зачем и как им пользоваться.

«Почему Vim так всем понравился, что его добавляют куда только можно и даже куда нельзя?» (Кстати, в Emacs он тоже есть. Мне всё больше кажется, что проще перечислить вещи, которых там нет, но это уже не по теме.) Ответ и на этот вопрос является несложным — его философия.

Нельзя в VIM просто взять и начать печатать текст. Для этого есть отдельный режим — «Insert mode». Вы же при запуске программы попадаете в обычный режим, в котором вам предоставляется возможность набирать команды для редактирования текста и переключаться между разными режимами работы этого редактора. «Но ведь это неудобно! Я хочу просто печатать текст!» Чисто технически, для этой задачи подойдёт и печатная машинка, но я всё же отвечу без сарказма. Если большинство редакторов делает акцент на написании кода, то Vim его смещает на редактирование текста и делает это по-своему.

Как Vim украл моё сердце - 7
(На самом деле, у этой картинки есть глубокий подтекст. Если найдётся минутка, то почитайте про серию японских РПГ Persona.)

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

Как Vim украл моё сердце - 8

Давайте рассмотрим пару примеров, но сначала держите ещё картинку (на этот раз с чем-то полезным):

Как Vim украл моё сердце - 9

1). d2w
==> Delete two words.

Как Vim украл моё сердце - 10

2). AMew<Esc>
==> Append to the end of the line «Mew» and return to the normal mode.

Как Vim украл моё сердце - 11

3). f(ci(Pakahontas<Esc>
==> Find a pair of brackets and change their inner content to «Pakahontas» and return to normal mode.

Как Vim украл моё сердце - 12

Видите? Абсолютно ничего сложного! Безусловно, такой подход требует привыкания и постоянной практики, так как просто выучить все комбинации нельзя — их надо прочувствовать. Я пишу код в Vim не потому, что он в нём быстрее набирается (я и так печатаю медленно, как вы могли заметить, и вслепую не умею), а потому что он более естественный. Вместо кучи ctrl, shift или alt (команды с ними есть, но их мало) очень понятный и, самое главное, человечный язык редактирования.

Как Vim украл моё сердце - 13
(Неожиданно, не так ли?)

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

I. Несмотря на то, что в Vim можно пользоваться стрелочками и мышкой (второе настраивается в файле "~/.vimrc"), это строго не рекомендуется. В нём есть море более интересных команд для перемещения курсора по тексту (и экрану), только они уже не такие интуитивные, как команды для редактирования и их придётся зубрить.

Как Vim украл моё сердце - 14
(It's hacking time!)

II. В Vim, как и во многих других редакторах, есть командный режим, который вызывается при нажатии на клавишу ':'. Символ '!' имеет в нём двойственное значение:

а) Если он стоит сразу после ':', то после него может следовать полноценная команда для терминала. Хотя некоторые из них дублируются в качестве команд самого редактора, это может быть полезно, например, для вызова компилятора.

б) Если он стоит после команды Vim, то он её выполнит, не сохраняя изменения в файле. С этим, кстати, связан один баг (или, если хотите, особенность) — если вы что-либо делали с текстом, то, даже если вы вернёте его в первоначальное состояние, редактор не закроется, если вы в нём не сохранитесь или не укажете '!'.

Как Vim украл моё сердце - 15
(Вы уже прочувствовали как Vim заботится о ваших данных?)

III. Разные настройки редактора и плагинов можно изменять в вышеупомянутом "~/.vimrc". Там настроек на любой вкус и цвет, только их в самом файле нет. По умолчанию там пусто. Для того, чтобы найти нужные вам параметры, воспользуйтесь командой ":help". Можете после неё добавить имя конкретного компонента или плагина, чтобы сразу перейти к интересующей вас информации. Но, конечно, интернет в этом плане поудобнее будет.

Как Vim украл моё сердце - 16

IV. Есть несколько команд в Vim (например 'q'), которые рассчитаны на определение (в "~/.vimrc") пользователем. Однако, если попробовать задать им значение напрямую, то срабатывать они будут с задержкой, так как они ожидают вторую команду после себя (именно их и стоит определять). Если вам нужна именно однокнопочная команда, я вам рекомендую использовать 's', т.к. её функционал практически от 'c' не отличается. «Substitute» можно заменить, так сказать.

Как Vim украл моё сердце - 17

V. Команда '.' обладает в это редакторе невероятной мощью. Она умеет повторять предыдущую команду (или целое предложение из них). В принципе, если вы не хотите записывать макрос, то она является прекрасным средством для заполнения кода «чебуреками»:

Как Vim украл моё сердце - 18

VI. Мне Vim чем-то напоминает старые 48-и килобайтные компьютеры ZX Spectrum. В них тоже были однокнопочные команды, но они были именно для языка программирования Basic. Таким образом разработчики попытались сократить необходимое для работы программы количество оперативной памяти.

Как Vim украл моё сердце - 19

В качестве обучающего материала, рекомендую программу vimtutor. Чисто технически, она просто открывает в Vim файлик с кратким туториалом, но такой подход позволяет практиковаться параллельно с изучением теоретической части. А дальше практика, практика и, ещё раз, практика!

Ну вот, собственно, всё, что мне хотелось о Vim сказать. Честно говоря, я нахожусь в полном восторге от этого редактора. Его философия очень заразительна и похожа на систему Unix в целом (всё просто, понятно и логично, но требует привыкания и запоминания). Поэтому если вы ищете себе хороший текстовый редактор или желаете получить редактирования текста новый опыт, то лучше места вы не найдёте.

Счастья вам, здоровья, и чтобы KDE не падали!

Источники

1) По теме:
а) Собственно, vimtutor
б) Картинка с клавиатурой была взята с сайта viemu [1]
в) Также мною был прочитан викиучебник [2] на эту тему
2) Не по теме:
а) Про серию Persona на Youtube есть множество видео с их подробным анализом. Наверное, наибольшую ценность представляют ролики с какала Filinov's Place [3], но автор пока остановился на второй второй части (это не описка).
б) Про Spectrum недавно записал хорошее видео Дмитрий Моисеев [4]
в) Автор рисунка с моей аватарки — Fluff-Kevlar

Автор: Хова Феклисова

Источник [5]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/vim/295600

Ссылки в тексте:

[1] viemu: http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html

[2] викиучебник: https://ru.wikibooks.org/wiki/Vim

[3] Filinov's Place: https://youtu.be/RPlEFryKZhY

[4] Дмитрий Моисеев: https://youtu.be/FSLKsEDC5us

[5] Источник: https://habr.com/post/426255/?utm_source=habrahabr&utm_medium=rss&utm_campaign=426255