Update nvim readme

This commit is contained in:
Buliway 2026-01-19 05:13:50 +03:00
parent ad2e06c07b
commit cec561fe0d
2 changed files with 34 additions and 32 deletions

View file

@ -1,17 +1,25 @@
## Установка
На новом пк руками делаю симлинк в `~/.config/nvim`.
```sh
ln -s ~/nixos-private-dots/nvim ~/.config/nvim
```
## Описание
[kickstart.nvim](https://github.com/nvim-lua/kickstart.nvim) fork
> ⚠️ **Warning**: 27.04.2025 произошли большие изменения в конфиге, которые мне очень лень описывать в ридми. Документировать изменения сложнее, чем эти самые изменения вносить. Проще по коммитам ориентироваться. Поменялось много биндов и кор плагинов. Адаптировано для работы на neovim 0.11.
> ⚠️ **Warning**: Конфиг переписан под Neovim 0.11, но Readme файл написан под старый Neovim 0.10. Я постарался актуализировать этот файл, но мб что-то упустил. Поддерживать Readme файл в актуальном состоянии для меня оказалось очень сложно.
Тут будет лежать мой конфиг nvim. Я хочу, чтоб он был отдельно от nix конфигов, чтоб не надо было ничего ребилдить.
Первый запуск конфига может быть долгим. Не прерывай этот процесс, пока не появится меню плагин манагера
Первый запуск конфига может быть долгим. Не прерывай этот процесс, пока не появится меню плагин манагера.
Для выбора варианта из автокомплита надо жать ctrl+y, а не enter. Это можно исправить в конфиге, но я решил оставить так, как советует разраб kickstart.nvim, потому что я часто был в ситуации, когда готовая ide даёт мне вариант, но он мне не нужен, я уже написал свой, и мне надо перейти на новую строку, я жму enter и получаю комплит, который мне не нужен, мне новая строка нужна была.
Для выбора варианта из автокомплита надо жать ctrl+y или ctrl+tab, а не enter. Это можно исправить в конфиге, но я решил оставить так, как советует разраб kickstart.nvim, потому что я часто был в ситуации, когда готовая ide даёт мне вариант, но он мне не нужен, я уже написал свой, и мне надо перейти на новую строку, я жму enter и получаю комплит, который мне не нужен, мне новая строка нужна была.
Вкладки как в vscode я решил не делать, тут есть более удобный инструмент для этого. Например два раза нажать пробел в нормал моде, откроется меню буферов, тоесть файлов, которые в данный момент открыты. Отображаются они в порядке последнего открытия. Ныне открытый файл там не отображается. Это аналог ctrl+tab в vscode. Можно легко и быстро переключаться между "вкладками". Если надо искать что-то среди файлов проекта, то можно нажать пробел sf, от слов search files. В целом пробел+s это поиск чего-то. Подсказки на экране скажут поиск чего будет происходить. Grep поиск это поиск по содержимому всех файлов проекта.
Вкладки как в vscode я решил не делать, тут есть более удобный инструмент для этого. Например два раза нажать пробел в нормал моде, откроется меню буферов, то есть файлов, которые в данный момент открыты. Отображаются они в порядке последнего открытия. Ныне открытый файл там не отображается. Это аналог ctrl+tab в vscode. Можно легко и быстро переключаться между "вкладками". Если надо искать что-то среди файлов проекта, то можно нажать пробел sf, от слов search files. В целом пробел+s это поиск чего-то. Подсказки на экране скажут поиск чего будет происходить. Grep поиск это поиск по содержимому всех файлов проекта.
https://medium.com/@jogarcia/you-dont-need-tabs-in-neovim-c6ba5ee44e3e
Если будут проблемы с сессиями, то можно написать `:SessionDelete`. Для выхода из проекта лучше использовать `:qa`, а не `:q`, чтоб закрыть все буферы и не ломать сессии
Если будут проблемы с сессиями, то можно нажать Space S d, чтоб удалить сессию. Для выхода из проекта лучше использовать `:qa`, а не `:q`, чтоб закрыть все буферы и не ломать сессии
Конфиг сделан для NixOS. Я не знаю работает ли он в других дистрибутивах.
@ -23,14 +31,8 @@ LSP list - https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.txt
> ⚠️ **Warning**: Некоторых lsp в mason не существует и их надо качать отдельно. Или они не работают в NixOS, если их качать через mason. Такие lsp я настроил отдельно и скачал как пакет. Из конфига mason я их удалил. **Не скачай случайно эти lsp через mason руками, когда они уже настроены как отдельный пакет**. Это же касается форматтеров и линтеров. Их я стараюсь качать как системный пакет, а не через mason.
> ⚠️ **Warning**: Я вообще перестал качать что либо через mason, используя его только как поиск разных инструментов для нужного мне языка. Так что лучше ничего не качать через него.
> ⚠️ **Warning**: Я вообще перестал качать что либо через mason, использую его только как поиск разных инструментов для нужного мне языка. Так что лучше ничего не качать через него.
## Установка
На новом пк руками делаю симлинк в `~/.config/nvim`.
```sh
ln -s ~/nixos-private-dots/nvim ~/.config/nvim
```
### Зависимости
Для работы этого конфига надо установить некоторые пакеты в систему. Часть из них я напишу ниже, часть находится в `packages.nix` в категории `программирование`
@ -46,7 +48,7 @@ ln -s ~/nixos-private-dots/nvim ~/.config/nvim
- `ueberzugpp`
- Любой nerd font
Пакеты для разных языков могут часть меняться, так что ищем в `packages.nix`
Пакеты для разных языков могут часто меняться, так что ищем в `packages.nix`
Чтоб понять есть ли проблемы с конфигом, может какие-то пакеты отсутствуют, можно запустить `:checkhealth`.
@ -79,6 +81,8 @@ Per project можно использовать `.editorconfig` файл в ко
Все бинды можно искать прям в neovim, если нажать `Space s k`, тоесть `S`earch `K`eymaps
А ещё ты можешь нажать `ctrl + q`, находясь в grep поиске (`space s g`), чтоб заменить одно слово на другое во всей выдаче грепа. Но будь осторожен, если сидишь в zellij, там `ctrl + q` это выход из zellij сессии. Надо жать `ctrl + g` перед этим, чтоб залочить бинды самого zellij.
Я не помню откуда эти бинды, может они есть в стоке, а может нет, но они полезные.
| Bind | Description |
@ -87,6 +91,7 @@ Per project можно использовать `.editorconfig` файл в ко
| `ctrl+o` | Go back |
| `ctrl+i` | Go forward (if you went backwards) |
| `p` | Paste from nvim register |
| `space p` | Paste from nvim register without loss of content |
| `ctrl+shift+v` | Paste from system clipboard |
| `y` | Yank(copy) to nvim register |
| `space y` | Yank(copy) to system clipboard |
@ -107,30 +112,28 @@ Per project можно использовать `.editorconfig` файл в ко
| `esc esc` | Exit terminal mode (Or use `<C-\><C-n>` to exit terminal mode) | settings.lua |
| `esc` | Creal highlights on search when pressing Esc in normal mode | settings.lua |
| `gp` | `G`oto context (`p`arent) | treesitter.lua |
| `gd` | `G`oto `D`efinition | lsp.lua |
| `gr` | `G`oto `R`eferences | lsp.lua |
| `gI` | `G`oto `I`mplementation | lsp.lua |
| `gD` | `G`oto `D`eclaration. This is not Goto Definition, this is Goto Declaration. For example, in C this would take you to the header | lsp.lua |
| `grd` | `G`o `R`efactor `D`efinition | lsp.lua |
| `grn` | `G`o `R`e`n`ame. Rename the variable under your cursor. Most Language Servers support renaming across files, etc. | lsp.lua |
| `grr` | `G`o `R`efactor `R`eferences | lsp.lua |
| `grI` | `G`o `R`efactor `I`mplementation | lsp.lua |
| `grD` | `G`o `R`efactor `D`eclaration. This is not Goto Definition, this is Goto Declaration. For example, in C this would take you to the header | lsp.lua |
| `gc` | Toggle Comment from mini-comment plugin | - |
| `\` | Toggle file tree | file-tree.lua |
| `gO` | Document Symbols. Fuzzy find all the symbols in your current document. Symbols are things like variables, funckions, types, etc. | lsp.lua |
| `gW` | Workspace Symbols. Fuzzy find all the symbols in your currend workspace. Similar to document symbols, except searches over you entire project | lsp.lua |
Перед каждым из биндов в нижней таблице надо нажать `leader`, что есть `space`, пробел.
| Bind | Description | File |
|---------|---------------------------------------------------------------------------------------------------------------------------------------------------|----------------|
| `tt` | `T`oggle `T`erminal | terminal.lua |
| `gta` | `G`o `T`ag `A`dd. Add json tags for struct | golang.lua |
| `gtr` | `G`o `T`ag `R`emove. Remove json tags for struct | golang.lua |
| `gs` | `G`o fill `S`truct | golang.lua |
| `gc` | `G`o fill Switch `C`ase | golang.lua |
| `gp` | `G`o fix `P`lurals (change func foo(b int, a int, r int) -> func foo(b, a, r int)) | golang.lua |
| `ge` | `G`o if `E`rr | golang.lua |
| `gi` | `G`o `I`mports | golang.lua |
| `D` | Type `D`efinition. Jump to the typo of the word under your cursor. | lsp.lua |
| | Useful when you're not sure what type a variable is and you want to see the definition of its *type*, not where it was *defined*. | |
| `ds` | `D`ocument `S`ymbols. Fuzzy find all the symbols in your current document. Symbols are things like variables, funckions, types, etc. | lsp.lua |
| `ws` | `W`orkspace `S`ymbols. Fuzzy find all the symbols in your currend workspace. Similar to document symbols, except searches over you entire project | lsp.lua |
| `rn` | `R`e`n`ame. Rename the variable under your cursor. Most Language Servers support renaming across files, etc. | lsp.lua |
| `gta` | `G`olang `T`ag `A`dd. Add json tags for struct | golang.lua |
| `gtr` | `G`olang `T`ag `R`emove. Remove json tags for struct | golang.lua |
| `gs` | `G`olang fill `S`truct | golang.lua |
| `gc` | `G`olang fill Switch `C`ase | golang.lua |
| `gp` | `G`olang fix `P`lurals (change func foo(b int, a int, r int) -> func foo(b, a, r int)) | golang.lua |
| `ge` | `G`olang if `E`rr | golang.lua |
| `gi` | `G`olang `I`mports | golang.lua |
| `ca` | `C`ode `A`ction. Execute a code action, usually your cursor needs to be on top of an error or a suggestion from your LSP for this to activate | lsp.lua |
| `ss` | `S`earch Document `S`ymbols | lsp.lua |
| `sS` | `S`earch `S`elect Telescope | health.lua |
@ -151,7 +154,6 @@ Per project можно использовать `.editorconfig` файл в ко
| `f` | `F`ormat buffer | autoformat.lua |
| `Sd` | `S`ession `D`elete | session.lua |
| `Sc` | `S`ession `C`reate | session.lua |
| `Backspace` | Session restore | session.lua |
### Git

View file

@ -6,4 +6,4 @@
## Применение скрипта
Когда система готова и все симлинки отправлены куда надо, этот скрипт именно скопирует нужные файлы в нужные каталоги. В теории, тогда программы не будут перезаписывать, а будут дополнять этот файл. Но это не точно. Разрабы далбаёбы
Когда система готова и все симлинки отправлены куда надо, этот скрипт именно скопирует нужные файлы в нужные каталоги. В теории, тогда программы не будут перезаписывать, а будут дополнять этот файл. Но это не точно