Колдовской NeoVIM. Часть первая. «Neovim VS Ваша IDE, или долой мышей!»
Neovim (aka Nvim) — это не обычный текстовый редактор, а программа, которая позволяет вам превратить свой рабочий процесс в изящный танец или фортепианную партию.
Фишкой колдовского редактора является то, что вы общаетесь с ним не через аналоговое управление (двигаем мышкой, вводим текст), а через команды и макросы.
Зачем заморачиваться и пользоваться текстовым редактором через код?
Потому что это чертовски быстро!
Просто представьте:
В Nvim мышка включается отдельной командой в конфиге. Но обычно ее не включают — лень-матушка.
Возможно, что у повстанцев с Навуходоносора на компьютере стоял именно Nvim. Он гибкий, и позволяет редактировать не только текст, но и код Матрицы…
Документация максимально подробна и понятна.
Выйти из Nvim’а не легче, чем уйти из мафии. Новички, впервые запустившие колдовской редактор, обречены годами скитаться в поисках заветного «Exit»…
Ну что, молодые маги, добро пожаловать в Колдовской Nvim!
Почему вам стоит выбрать Neovim?
По моему мнению, у редактора 3 киллер-фичи:
Супер-Скорость
Невероятная гибкость
Nvim растет вместе с Пользователем
Супер-Скорость
Nvim молниеносно быстр. И сложен в освоении. И в этом нет ничего плохого. Например:
Представьте, что вы только сегодня познакомились с консольными командами. И вы соревнуетесь с обычным Юзером с клавомышью и GUI интерфейсом.
Вам нужно создать папку!
Юзер наводит мышку, жмет правой кнопкой, выбирает «Создать папку» — и выигрывает, пока вы копошитесь в мануале…
Реванш через месяц
Через месяц? Через месяц скорость будет примерно одинаковой — вы просто наберете «mkdir papka» и создадите папку. Юзер пожмет плечами и пойдет дальше. Он не проиграл.
Задачи посложнее
А если надо создать сразу 6 папок?
А если выбрать из папки все файлы с определенным расширением?
А если сделать скрипт, который будет разворачивать в определенном месте целое дерево папок с файлами (например исходники для проекта).
Вы и ваша консоль побеждаете, потому что обычный Юзер либо тратит очень много времени, либо попросту неспособен справиться с заданием.
Думаю, что аналогия понятна. Да, первые пару недель с Nvim будет тяжело…, а через пару месяцев вы вдруг осознаете, что обычная IDE кажется вязкой, медленной и сковывает полет ваших мыслей.
В Nvim вы нажимаете несколько клавиш и за секунды выполняете объем работы/передвижений, который бы занял минуты в обычном редакторе. А любой программист понимает, что сэкономленное время = время заработанное.
Давайте посмотрим на примере. Вот код, который вы хотите исправить:
Этот код выглядит плохо!
Обратите внимание, на каком символе находится курсор (второй символ 16й строчки). Итак, мы нашли себя вот в такой тестовой ситуации. Что мы хотим сделать?
Имя функции переписать строчными буквами.
Удалить лишние символы «kkk» на 18й строчке.
Скопировать всю функцию
big_and_ugly_name1()
и перенести ее на 21ю строчку, попутно удалив комментарий. Да, нам надо 2 одинаковых функции. И не забудем поменять постфикс!Удалить функцию
unused_function()
После этого удалить самую первую строчку, а еще 3 строчки после импорта.
Прыгнуть в самый конец, и написать на новой строке
print(”Hello World!”)
Заметим, что из всей работы созидаем мы только при написании последней строчки print(”Hello World!”)
. Все остальное — непроизводительный труд.
Вы можете попробовать самостоятельно засечь время на решение этой задачи. А можете добавить чуть-чуть колдовства… Введем в Nvim следующие команды:
guu 2jfkD yip 21G SHIFT+v jp f1CTRL+a 11Gdip ggdd jv4jd Go'Hello World!'
Бррр, абракадабра, да как такое запомнить? Но набор такой команды в разы быстрее, чем клавомышь. И мышки дорогие.
Давайте разберемся. Только что я:
guu
Превратил все символы на 16й строке в строчные (lowercase). Заметьте, что курсор находился на втором символе — мне даже не пришлось его двигать к названию функции.2jfkD
Перешел на 2 строчки ниже, прыгнул на первую букву k и удалил все оставшиеся символы.yip
Скопировал всю функцию. Обратите внимание — я скопировал ее изнутри самой функции! Мне не пришлось наводить курсор или мышь на первый-последний символ.21G SHIFT+v jp
Прыгнул на 21ю строку и вставил скопированную функцию, попутно удалив комментарий.f1 CTRL+a
Прыгнул к единичке и с помощьюCTRL+a
увеличил ее на один! Ваша IDE умеет такое?11G dip
Прыгнул на 11ю строчку, опять в середину функции, и всю ее удалил, не перемещая курсор.ggdd
Прыгнул на первую строчку, удалил её.jv4jd
Перешел на строчку ниже импорта, выделил 4 строчки и удалил их.Go"Hello World!"
Прыгнул на последнюю строчку в файле. Создал еще одну строку ниже и написал в ней «Hello World!»
При этом я ни разу не тронул мышь, ни разу не убрал руки с центра клавиатуры, не отводил глаз от экрана и контролировал каждый шаг. Вот поэтому Nvim по-колдовски быстр!
Невероятная гибкость
Nvim никак вас не ограничивает:
Используйте любой язык программирования. LSP серверы — в наборе. Все подключается за секунды.
Огромное количество плагинов на выбор. Большое комьюнити, которое пишет эти плагины.
Nvim легко взаимодействует с Github.
Подключитесь к другой машине через SSH, скачайте Nvim (20 мегабайт), вставьте свой конфиг и у вас тут же появится привычная среда разработки.
Используйте любые самописные скрипты. Например, у меня есть маленький скриптик, который обернет выделенный текст в фигурные скобки. Мелочь -, но удобная!
Редактор бесшовно переходит в консоль и обратно. Прямо из редактора доступны консольные команды и скрипты. Nvim является естественным продолжением терминала Linux и прекрасно дружит c tmux.
Nvim работает с любыми файлами. Более того, он открывает даже самые большие и тяжелые файлы!
Nvim растет вместе с Пользователем
Он как зернышко! Сначала будет небольшой росток, его надо оберегать и поливать. Потом росток станет деревцем, а затем огромной секвойей.
Nvim воплощает один из ключевых принципов мышления программиста:
Не делай ничего дважды!
Столкнулся с проблемой — реши ее так, чтобы в следующий раз у тебя было готовое автоматизированное решение. Нвимисты и нвимастера с каждым днем упрощают свою жизнь. Любые сложности и проблемы делают ваш конфиг удобнее, навыки — разнообразнее, а мышку более пыльной. Время, которое вы тратили на пустые действия, теперь вы сможете тратить на программирование. И это по-колдовски круто!
В следующей части данного руководства мы установим Nvim и познакомимся с конфигурационным файлом.