- Лицензия
- Apache License 2.0
- Сайт проекта
- neovim.io
- Сообщить о проблеме
- github.com
Neovim
Neovim — текстовый редактор с TUI интерфейсом, основанный на Vim. По сравнению с ним была улучшена кодовая база, добавлена поддержка ЯП Lua для настройки, программа стала удобнее "из коробки" и это ещё далеко не все! Neovim стал настолько успешным, что многие редакторы, например Helix, стали им вдохновляться.
Важно
Рассматриваемая программа не подходит тем, кто не готов разбираться в тонкостях её конфигурирования! Здесь придётся делать все вручную при помощи различных инструкций. Также стоит отметить, что в Neovim сильно отличается взаимодействие как с текстом, так и с самим редактором.
Установка из репозитория
Neovim можно установить при помощи терминала:
su -
apt-get update
apt-get install neovim
Настройка
Для того, чтобы иметь возможность конфигурирования Neovim, нужно создать ему соответствующую директорию следующим образом:
cd ~/.config
mkdir nvim
После этого нужно зайти во внутрь и создать там файл init.vim или init.lua. Так как мы используем Neovim, рекомендуется использовать второй вариант с применением ЯП Lua. Однако никто не запрещает вам воспользоваться первым вариантом с применением ЯП Vimscript.
Для этого можно воспользоваться следующими командами:
cd nvim
touch init.lua
Теперь вам нужно открыть этот файл, например, при помощи Neovim:
nvim init.lua
Теперь вы можете прописывать определённые параметры внутри открытого файла для изменения функционала рассматриваемой программы. В зависимости от созданного вами файла параметры будут отличаться. В качестве примера рассмотрим параметр для добавления нумерации строк, которой нет по умолчанию:
vim.opt.number = true
Информация
Возможно, вам покажется, что вариант с использованием Vimscript (init.vim) более простой, чем его аналог на Lua (init.lua). Однако первое впечатление зачастую обманчиво, и это тому пример. Параметр на Vimscript, возможно, и легче, но как только у вас появятся плагины, вы поймёте, что сильно ошибались. К тому же, разработчики расширений, как правило, теперь используют Lua, ведь он проще и быстрее. Поэтому у вас могут возникнуть проблемы с Vimscript, если он понадобится вам для чего-то большего, чем просто параметры Neovim.
Как видите, настройка Neovim не сильно сложная, но хранение всего конфига в одном файле очень быстро станет неудобным. Для того, чтобы решить эту проблему, можно создать специальную структуру каталогов с разбиением конфигурации на любое количество каталогов и файлов. Посмотреть подобную реализацию, а также узнать о многих полезных параметрах на ЯП Lua с объяснением на русском языке можно в сборке под названием FixVim.
Дистрибутивы и сборки Neovim
Если вы не хотите настраивать Neovim с нуля, то для вас есть несколько решений: различные дистрибутивы и сборки. В любом случае полностью избежать настройки и изучения программы не выйдет, но это может существенно упростить данные процессы. Для начала стоит разобраться, в чем между ними разница и что вам больше подходит.
Информация
Сборки Neovim - как правило, это чей-то собственный конфиг, в который может входить инструкция по её установке/удалению, а также некоторые пояснения.
В основном их не используют как готовое решение, так как оно делалось исключительно под нужды конкретного человека. Однако в ней зачастую можно найти интересные решения для своей сборки. В качестве примера можно посмотреть на такие сборки, как My Nvim и It-Thoughts-neovim. Кстати, FixVim, о котором было сказано ранее, тоже можно отнести к сборкам.
Информация
Дистрибутивы Neovim - это сборки, которые поддерживаются опытными пользователями, ориентируясь на общие потребности. Также дистрибутивы зачастую упрощают настройку программы за счёт создания некой прослойки. Ещё одним отличием от обычных сборок является то, что в дистрибутивах, как правило, реализован механизм обновления сборки.
Примерами дистрибутивов могут послужить крайне известные LunarVim, AstroNvim и NvChad. Все представленные сборки и дистрибутивы используют Lua, а не Vimscript, что ещё раз подтверждает мои высказывания в их сторону.
Сочетания клавиш в Neovim
Как уже было сказано в начале страницы, рассматриваемый текстовый редактор имеет специфичную модель взаимодействия с текстом и самим редактором. Привычные сочетания клавиш здесь применить не получится. Например, для копирования вместо Ctrl+c
нужно использовать просто английскую букву y
. Для вставки нужно использовать английскую букву p
вместо привычного Ctrl+v
. При этом по умолчанию отсутствует возможность использования глобального буфера обмена для копирования/вставки чего-либо извне. Поэтому данный функционал ещё требуется настроить. Узнать подробнее про сочетания клавиш в Neovim можно в этой статье.
Информация
Не забывайте, что по умолчанию русская раскладка не поддерживается для горячих клавиш и применима только для набора текста. Один из вариантов решения проблемы показан в сборке FixVim.
Режимы Neovim
Данный текстовый редактор также отличается и в разграничении возможностей. Например, в VS Code можно перемещаться по тексту при помощи мыши и стрелок на клавиатуре. По большому счету, это все, на что он способен. Однако Neovim и тут смог выделиться в лучшую сторону. У него существует множество различных режимов, каждый из которых выполняет свою узконаправленную роль.
Normal Mode
Нормальный режим является режимом по умолчанию. В нем можно использовать горячие клавиши и стрелки на клавиатуре. Редактировать текст нельзя. Для перемещения используются клавиши h, j, k и l.
Insert Mode
В данном режиме можно изменять текст. Для перемещения можно использовать только стрелки на клавиатуре. Существует несколько способов войти в него. Разница заключается лишь в расположении курсора после входа.
Visual Mode
Визуальный режим позволяет выделять текст тремя различными способами: построчно, блоком и хаотично.
Command Mode
В этом режиме можно выполнять команды NeoVim. Например, этот режим используется для вызова установленных плагинов. Ещё одна особенность данного режима заключается в том, что он использует Vimscript для написания команд. Поэтому в нем можно применять параметры NeoVim, написанные на нем.
Replace Mode
В данном режиме можно изменять текст не при помощи удаления и написания нового, а при помощи написания нового сразу поверх старого.