From cec561fe0d57bbc511cfa87d1ae310828f1c43ad Mon Sep 17 00:00:00 2001 From: Buliway Date: Mon, 19 Jan 2026 05:13:50 +0300 Subject: [PATCH] Update nvim readme --- nvim/README.md | 64 ++++++++++++++++++++++++++------------------------ shit/README.md | 2 +- 2 files changed, 34 insertions(+), 32 deletions(-) diff --git a/nvim/README.md b/nvim/README.md index 2c2f434..bb00276 100644 --- a/nvim/README.md +++ b/nvim/README.md @@ -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 конфигов, чтоб не надо было ничего ребилдить. +Тут будет лежать мой конфиг 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 `` 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 diff --git a/shit/README.md b/shit/README.md index caed1fc..c762645 100644 --- a/shit/README.md +++ b/shit/README.md @@ -6,4 +6,4 @@ ## Применение скрипта -Когда система готова и все симлинки отправлены куда надо, этот скрипт именно скопирует нужные файлы в нужные каталоги. В теории, тогда программы не будут перезаписывать, а будут дополнять этот файл. Но это не точно. Разрабы далбаёбы +Когда система готова и все симлинки отправлены куда надо, этот скрипт именно скопирует нужные файлы в нужные каталоги. В теории, тогда программы не будут перезаписывать, а будут дополнять этот файл. Но это не точно