Skip to content

Commit

Permalink
Обновлено: страница Neovim
Browse files Browse the repository at this point in the history
  • Loading branch information
Krator3 committed May 8, 2024
1 parent 29ed6cc commit 17aae2b
Show file tree
Hide file tree
Showing 2 changed files with 163 additions and 9 deletions.
170 changes: 162 additions & 8 deletions docs/system/neovim.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,23 +20,177 @@ appstream:
donation: https://github.com/sponsors/neovim
---



# Neovim

Neovim — форк Vim, направленный на улучшение кодовой базы, упрощающий реализацию API, улучшающий пользовательский интерфейс и реализацию плагинов. Редакторы, подобные Helix, вдохновлялись Neovim.
Neovim — текстовый редактор с TUI интерфейсом, основанный на Vim.
По сравнению с ним была улучшена кодовая база, добавлена поддержка ЯП Lua для настройки, программа стала удобнее "из коробки" и это еще далеко не все!
Neovim стал настолько успешным, что многие редакторы, например Helix, стали им вдохновляться.

## Установка из репозитория
:::danger Важно
Рассматриваемая программа не подходит тем, кто не готов разбираться в тонкостях ее конфигурирования!
Здесь придется делать все вручную при помощи различных инструкций.
Также стоит отметить, что в Neovim сильно отличается взаимодействие как с текстом, так и с самим редактором.
:::

**Neovim** можно установить через терминал:
::: code-group
## Установка из репозитория

```shell[apt-get]
**Neovim** можно установить при помощи терминала:
::: tabs
== apt-get
```shell
su -
apt-get update
apt-get install neovim
```
```shell[epm]

==epm
```shell
epm -i neovim
```
:::

## Настройка

Для того чтобы иметь возможность конфигурирования Neovim, нужно создать ему соответствующую директорию следующим образом:
```shell
cd ~/.config
mkdir nvim
```
После этого нужно зайти во внутрь и создать там файл init.vim или init.lua.
Так как мы используем Neovim, рекомендуется использовать второй вариант с применением ЯП Lua.
Однако никто не запрещает вам воспользоваться первым вариантом с применением ЯП VimScript.

Для этого можно воспользоваться следующими командами:

::: tabs
== init.lua

```shell
cd nvim
touch init.lua
```

== init.vim
```shell
cd nvim
touch init.vim
```
:::

Теперь вам нужно открыть этот файл, например, при помощи Neovim:
::: tabs
== init.lua

```shell
nvim init.lua
```

== init.vim
```shell
nvim init.vim
```
:::

Теперь вы можете прописывать определенные параметры внутри открытого файла для изменения функционала рассматриваемой программы.
В зависимости от созданного вами файла параметры будут отличаться.
В качестве примера рассмотрим параметр для добавления нумерации строк, которой нет по умолчанию:
::: tabs
== init.lua

```shell
vim.opt.number = true
```

== init.vim
```shell
:set number
```
:::

:::info
Возможно, вам покажется, что вариант с использованием Vimscript (init.vim) более простой, чем его аналог на Lua (init.lua).
Однако первое впечатление зачастую обманчиво, и это тому пример.
Параметр на VimScript, возможно, и легче, но как только у вас появятся плагины, вы поймете, что сильно ошибались.
К тому же разработчики расширений, как правило, теперь используют Lua, ведь он проще и быстрее.
Поэтому у вас могут возникнуть проблемы с VimScript, если он понадобится вам для чего-то большего, чем просто параметры Neovim.
:::

Как видите, настройка Neovim не сильно сложная, но хранение всего конфига в одном файле очень быстро станет не удобным.
Дабы решить эту проблему, можно создать специальную структуру каталогов с разбиением конфигурации на любое количество каталогов и файлов.
Посмотреть подобную реализацию, а также узнать о многих полезных параметрах на ЯП Lua с объяснением на русском языке можно в сборке под названием [FixVim](https://github.com/Krator3/FixVim).

## Дистрибутивы и сборки Neovim

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

:::info
Сборки Neovim - как правило, это чей-то собственный конфиг, в который может входить инструкция по ее установке/удалению, а также некоторые пояснения.
:::

В основном их не используют как готовое решение, так как оно делалось исключительно под нужды конкретного человека.
Однако в ней зачастую можно найти интересные решения для своей сборки.
В качестве примера можно посмотреть на такие сборки, как [Mynvim](https://github.com/SHTRAMPANTUNC/MyNvim) и [It-Thougts-neovim](https://github.com/Dev-cmyser/It-Thougts-neovim).
Кстати, [FixVim](https://github.com/Krator3/FixVim), о котором было сказано ранее, тоже можно отнести к сборкам.

:::info
Дистрибутивы Neovim - это сборки, которые поддерживаются опытными пользователями, ориентируясь на общие потребности.
Также дистрибутивы зачастую упрощают настройку программы за счет создания некой прослойки.
Еще одним отличием от обычных сборок является то, что в дистрибутивах, как правило, реализован механизм обновления сборки.
:::

Примерами дистрибутивов могут послужить крайне известные [LunarVim](https://www.lunarvim.org/), [AstroNvim](https://astronvim.com/) и [NvChad](https://nvchad.com/).
Все представленные сборки и дистрибутивы используют Lua, а не Vimscript, что еще раз подтверждает мои высказывания в их сторону.

## Сочетания клавиш в Neovim

Как уже было сказано в начале страницы, рассматриваемый текстовый редактор имеет специфичную модель взаимодействия с текстом и самим редактором.
Привычные сочетания клавиш здесь применить не получится.
Например, для копирования вместо `Ctrl+c` нужно использовать просто английскую букву `y`.
Для вставки нужно использовать английскую букву `p` вместо привычного `Ctrl+v`.
При этом по умолчанию отсутствует возможность использования глобального буфера обмена для копирования/вставки чего-либо из вне.
Поэтому данный функционал еще требуется настроить.
Узнать подробнее про сочетания клавиш в Neovim можно в [этой](https://dzen.ru/a/ZCGS9VfkKlg3Zz1E) статье.

:::info
Не забывайте, что по умолчанию русская раскладка не поддерживается для горячих клавиш и применима только для набора текста.
Один из вариантов решения проблемы показан в сборке [FixVim](https://github.com/Krator3/FixVim/blob/main/lua/core/ru_mappings.lua).
:::

## Режимы Neovim

Данный текстовый редактор также отличается и в разграничении возможностей.
Например, в VS Code можно перемещаться по тексту при помощи мыши и стрелок на клавиатуре.
По большому счету, это все, на что он способен.
Однако Neovim и тут смог выделиться в лучшую сторону.
У него существует множество различных режимов, каждый из которых выполняет свою узконаправленную роль.

### Normal Mode

Нормальный режим является режимом по умолчанию.
В нем можно использовать горячие клавиши и стрелки на клавиатуре.
Редактировать текст нельзя.
Для перемещения используются клавиши hjkl.

### Insert Mode

В данном режиме можно изменять текст.
Для перемещения можно использовать только стрелки на клавиатуре.
Существует несколько способов войти в него.
Разница заключается лишь в расположении курсора после входа.

### Visual Mode

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

### Command Mode

В этом режиме можно выполнять команды NeoVim.
Например, этот режим используется для вызова установленных плагинов.
Еще одна особенность данного режима заключается в том, что он использует VimScript для написания команд.
Поэтому в нем можно применять параметры NeoVim, написанные на нем.

### Replace Mode

В данном режиме можно изменять текст не при помощи удаления и написания нового, а при помощи написания нового сразу поверх старого.
2 changes: 1 addition & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 17aae2b

Please sign in to comment.