Update nvim readme
This commit is contained in:
parent
ad2e06c07b
commit
cec561fe0d
2 changed files with 34 additions and 32 deletions
|
|
@ -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 `<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
|
||||
|
|
|
|||
|
|
@ -6,4 +6,4 @@
|
|||
|
||||
## Применение скрипта
|
||||
|
||||
Когда система готова и все симлинки отправлены куда надо, этот скрипт именно скопирует нужные файлы в нужные каталоги. В теории, тогда программы не будут перезаписывать, а будут дополнять этот файл. Но это не точно. Разрабы далбаёбы
|
||||
Когда система готова и все симлинки отправлены куда надо, этот скрипт именно скопирует нужные файлы в нужные каталоги. В теории, тогда программы не будут перезаписывать, а будут дополнять этот файл. Но это не точно
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue