Хабрахабр

[Из песочницы] Как Vim украл моё сердце

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

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

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

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

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

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

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

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

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

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


(Пользователи Emacs после этих строк)

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

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

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

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

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

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

d2w
==> Delete two words. 1).

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

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

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


(Неожиданно, не так ли?)

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

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


(It's hacking time!)

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

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

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


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

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

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

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

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

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

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

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

Источники

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

Показать больше

Похожие публикации

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»