diff --git a/nvim/README.md b/nvim/README.md index be5c6a4..4620e6b 100644 --- a/nvim/README.md +++ b/nvim/README.md @@ -2,6 +2,13 @@ Тут будет лежать мой конфиг nvim. Я хочу, чтоб он был отдельно от nix конфигов, чтоб не надо было ничего ребилдить. +Для выбора варианта из автокомплита надо жать ctrl+y, а не enter. Это можно исправить в конфиге, но я решил оставить так, как советует разраб kickstart.nvim, потому что я часто был в ситуации, когда готовая ide даёт мне вариант, но он мне не нужен, я уже написал свой, и мне надо перейти на новую строку, я жму enter и получаю комплит, который мне не нужен, мне новая строка нужна была. + +Вкладки как в vscode я решил не делать, тут есть более удобный инструмент для этого. Например два раза нажать пробел в нормал моде, откроется меню буферов, тоесть файлов, которые в данный момент открыты. Отображаются они в порядке последнего открытия. Ныне открытый файл там не отображается. Это аналог ctrl+tab в vscode. Можно легко и быстро переключаться между "вкладками". Если надо искать что-то среди файлов проекта, то можно нажать пробел sf, от слов search files. В целом пробел+s это поиск чего-то. Подсказки на экране скажут поиск чего будет происходить. Grep поиск это поиск по содержимому всех файлов проекта. +https://medium.com/@jogarcia/you-dont-need-tabs-in-neovim-c6ba5ee44e3e + +Если будут проблемы с сессиями, то можно написать `:SessionDelete`. Для выхода из проекта лучше использовать `:qa`, а не `:q`, чтоб закрыть все буферы и не ломать сессии + Конфиг сделан для NixOS. Я не знаю работает ли он в других дистрибутивах. Сайт с топами плагинов и тем - https://dotfyle.com/neovim/colorscheme/top @@ -12,7 +19,7 @@ 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`. @@ -68,15 +75,119 @@ ln -s ~/nixos-private-dots/nvim ~/.config/nvim ### Мои бинды -|Бинд|Действие| -|-|-| -|1|2| +Все бинды можно искать прям в neovim, если нажать `Space s k`, тоесть `S`earch `K`eymaps -### Были изначально в kickstart.nvim +Я не помню откуда эти бинды, может они есть в стоке, а может нет, но они полезные. + +| Bind | Description | +| -------------- | ---------------------------------- | +| `K` | Hover documentation | +| `ctrl+o` | Go back | +| `ctrl+i` | Go forward (if you went backwards) | +| `p` | Paste from nvim register | +| `ctrl+shift+v` | Paste from system clipboard | +| `y` | Yank(copy) to nvim register | +| `space y` | Yank(copy) to system clipboard | +| `d` | Delete(copy) to nvim register | +| `space d` | Delete(copy) to system clipboard | + +Бинды в таблице ниже нажимаются без пробела перед ними. Просто бинд + +| Bind | Description | File | +| ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | -------------- | +| `esc esc` | Exit terminal mode (This won't work in all terminal emulators/tmux/etc. Try your own mapping 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 | +| `gc` | Toggle Comment from mini-comment plugin | - | +| `\` | Toggle file tree | file-tree.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 | +| `gfs` | `G`o `F`ill `S`truct | golang.lua | +| `gfc` | `G`o `F`ill Switch `C`ase | golang.lua | +| `gie` | `G`o `I`f `E`rr | golang.lua | +| `gfp` | `G`o `F`ix `P`lurals | golang.lua | +| `D` | Type `D`efinition. Jump to the typo of the word under your cursor. 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*. | lsp.lua | +| `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 | +| `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 | +| `sh` | `S`earch `H`elp | health.lua | +| `sk` | `S`earch `K`eymaps | health.lua | +| `sf` | `S`earch `F`iles | health.lua | +| `ss` | `S`earch `S`elect Telescope | health.lua | +| `sw` | `S`earch current `W`ord | health.lua | +| `sg` | `S`earch by `G`rep | health.lua | +| `sd` | `S`earch `D`iagnostics | health.lua | +| `sr` | `S`earch `R`esume | health.lua | +| `s.` | `S`earch Recent Files ("." for repeat) | health.lua | +| `space` | Find existing buffers. Аналог перелючения между вкладками | health.lua | +| `/` | Fuzzily search in current buffer | health.lua | +| `s/` | `S`earch `/` in Open Files. Live Grep in Open Files | health.lua | +| `sn` | `S`earch `N`eovim files. Shortcut for searching your Neovim configuration files | health.lua | +| `st` | `S`earch `T`hemes | health.lua | +| `q` | Open diagnostic `Q`uicfix list | settings.lua | +| `f` | `F`ormat buffer | autoformat.lua | + + +### Git + +Бинды начинаются с буквы `h`. Типо "Git `H`unk" + +Без пробела + +| Bind | Description | File | +| ---- | ----------------------------- | ------------ | +| `]c` | Jump to next git `C`hange | gitsigns.lua | +| `[c` | Jump to previous git `C`hange | gitsigns.lua | +Visual mode. С пробелом + +| Bind | Description | File | +| ---- | ---------------- | ------------ | +| `hs` | `S`tage git hunk | gitsigns.lua | +| `hr` | `R`eset git hunk | gitsigns.lua | +Normal mode. С пробелом + +| Bind | Description | File | +| ---- | ------------------------------ | ------------ | +| `hs` | Git `S`tage hunk | gitsigns.lua | +| `hr` | Git `R`eset hunk | gitsigns.lua | +| `hS` | Git `S`tage buffer | gitsigns.lua | +| `hu` | Git `U`ndo stage hunk | gitsigns.lua | +| `hR` | Git `R`eset buffer | gitsigns.lua | +| `hp` | Git `P`review hunk | gitsigns.lua | +| `hb` | Git `B`lame line | gitsigns.lua | +| `hd` | Git `D`iff against index | gitsigns.lua | +| `hD` | Git `D`iff against last commit | gitsigns.lua | +| `td` | `T`oggle git show `B`lame line | gitsigns.lua | +| `tD` | `T`oggle git show `D`eleted | gitsigns.lua | +### Debug + +Без пробела + +| Bind | Description | File | +| ---- | ------------------------------ | --------- | +| `F5` | Debug: Start/Continue | debug.lua | +| `F1` | Debug: Step Into | debug.lua | +| `F2` | Debug: Step Over | debug.lua | +| `F3` | Debug: Step Out | debug.lua | +| `F7` | Debug: See last session rusult | debug.lua | +С пробелом + +| Bind | Description | File | +| ---- | -------------------------- | --------- | +| `b` | Debug: Toggle `B`reakpoint | debug.lua | +| `B` | Debug: Set `B`reakpoint | debug.lua | -|Бинд|Действие| -|-|-| -|1|2| ## Нюансы работы LSP/Linter/Formatter diff --git a/nvim/lazy-lock.json b/nvim/lazy-lock.json index 172c156..cefc078 100644 --- a/nvim/lazy-lock.json +++ b/nvim/lazy-lock.json @@ -1,47 +1,50 @@ { "LuaSnip": { "branch": "master", "commit": "33b06d72d220aa56a7ce80a0dd6f06c70cd82b9d" }, - "catppuccin": { "branch": "main", "commit": "faf15ab0201b564b6368ffa47b56feefc92ce3f4" }, + "auto-session": { "branch": "main", "commit": "021b64ed7d4ac68a37be3ad28d8e1cba5bec582c" }, + "catppuccin": { "branch": "main", "commit": "f67b886d65a029f12ffa298701fb8f1efd89295d" }, "cmp-nvim-lsp": { "branch": "main", "commit": "99290b3ec1322070bcfb9e846450a46f6efa50f0" }, "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, "cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" }, - "conform.nvim": { "branch": "master", "commit": "f4e8837878fc5712d053ba3091a73d27d96a09e2" }, - "edge": { "branch": "master", "commit": "5b5a0683be0d9d8023a874ebf7e230095f4e1bae" }, - "everforest": { "branch": "master", "commit": "44c2659ffb6d26a994346974b4d12e988f43e5e5" }, + "conform.nvim": { "branch": "master", "commit": "9180320205d250429f0f80e073326c674e2a7149" }, + "edge": { "branch": "master", "commit": "12ff979b43e3660053e14cd65101d5928e56f422" }, + "everforest": { "branch": "master", "commit": "730f9dd8ee698ad166d7abfca5dc06e90d4acf5b" }, "fidget.nvim": { "branch": "main", "commit": "9238947645ce17d96f30842e61ba81147185b657" }, + "friendly-snippets": { "branch": "main", "commit": "efff286dd74c22f731cdec26a70b46e5b203c619" }, "gitsigns.nvim": { "branch": "main", "commit": "5f808b5e4fef30bd8aca1b803b4e555da07fc412" }, "go.nvim": { "branch": "master", "commit": "c6d5ca26377d01c4de1f7bff1cd62c8b43baa6bc" }, - "gruvbox-material": { "branch": "master", "commit": "fca2ff9ba627bbf172548eb52fcbb03f99ba34e9" }, + "gruvbox-material": { "branch": "master", "commit": "055aefde5fd49018f3a858bca7b529bc2e08c02b" }, "guihua.lua": { "branch": "master", "commit": "d783191eaa75215beae0c80319fcce5e6b3beeda" }, - "image.nvim": { "branch": "master", "commit": "b3e1af829a56bb038e5f81bf97798a2950064b62" }, + "image.nvim": { "branch": "master", "commit": "b991fc7f845bc6ab40c6ec00b39750dcd5190010" }, "indent-blankline.nvim": { "branch": "master", "commit": "259357fa4097e232730341fa60988087d189193a" }, - "kanagawa.nvim": { "branch": "master", "commit": "ad3dddecd606746374ba4807324a08331dfca23c" }, + "kanagawa.nvim": { "branch": "master", "commit": "18ae5771b22d8f913ef541c827a8180b4cb12c8a" }, "lazy.nvim": { "branch": "main", "commit": "7e6c863bc7563efbdd757a310d17ebc95166cef3" }, - "lazydev.nvim": { "branch": "main", "commit": "f59bd14a852ca43db38e3662395354cb2a9b13e0" }, - "luvit-meta": { "branch": "main", "commit": "57d464c4acb5c2e66bd4145060f5dc9e96a7bbb7" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "8e46de9241d3997927af12196bd8faa0ed08c29a" }, + "lazydev.nvim": { "branch": "main", "commit": "8620f82ee3f59ff2187647167b6b47387a13a018" }, + "luvit-meta": { "branch": "main", "commit": "55709f183b0742a7e4f47688c284f81148ad4dc0" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "c6c686781f9841d855bf1b926e10aa5e19430a38" }, "mason-nvim-dap.nvim": { "branch": "main", "commit": "8b9363d83b5d779813cdd2819b8308651cec2a09" }, "mason-tool-installer.nvim": { "branch": "main", "commit": "c5e07b8ff54187716334d585db34282e46fa2932" }, "mason.nvim": { "branch": "main", "commit": "e2f7f9044ec30067bc11800a9e266664b88cda22" }, - "mini.nvim": { "branch": "main", "commit": "7ebfab26d77a4b9b05aaae565907e7fa4b2ee154" }, + "mini.nvim": { "branch": "main", "commit": "e91e854299429c986888711668743711acd8a14b" }, "monokai-pro.nvim": { "branch": "master", "commit": "6c15e36834a624a32f46c6db8f9fc063995b24b6" }, "neo-tree.nvim": { "branch": "main", "commit": "a77af2e764c5ed4038d27d1c463fa49cd4794e07" }, - "nightfox.nvim": { "branch": "main", "commit": "7557f26defd093c4e9bc17f28b08403f706f5a44" }, + "nightfox.nvim": { "branch": "main", "commit": "595ffb8f291fc4a9bef3201a28b7c0379a41cdee" }, "nordic.nvim": { "branch": "main", "commit": "1ee4044077059b34eacd18d93613495a602c131f" }, "nui.nvim": { "branch": "main", "commit": "53e907ffe5eedebdca1cd503b00aa8692068ca46" }, "nvim-autopairs": { "branch": "master", "commit": "b464658e9b880f463b9f7e6ccddd93fb0013f559" }, - "nvim-cmp": { "branch": "main", "commit": "3403e2e9391ed0a28c3afddd8612701b647c8e26" }, - "nvim-dap": { "branch": "master", "commit": "567da83810dd9da32f9414d941bc6848715fc102" }, + "nvim-cmp": { "branch": "main", "commit": "b555203ce4bd7ff6192e759af3362f9d217e8c89" }, + "nvim-dap": { "branch": "master", "commit": "0e673accbb512e1e191dfb4fecea89cc38c1bcdd" }, "nvim-dap-go": { "branch": "main", "commit": "6aa88167ea1224bcef578e8c7160fe8afbb44848" }, - "nvim-dap-ui": { "branch": "master", "commit": "ffa89839f97bad360e78428d5c740fdad9a0ff02" }, - "nvim-lint": { "branch": "master", "commit": "6b46370d02cd001509a765591a3ffc481b538794" }, - "nvim-lspconfig": { "branch": "master", "commit": "9f2c279cf9abe584f03bfeb37c6658d68e3ff49d" }, + "nvim-dap-ui": { "branch": "master", "commit": "e94d98649dccb6a3884b66aabc2e07beb279e535" }, + "nvim-lint": { "branch": "master", "commit": "1fea92f1d9908eaa5eb8bafe08b4293d7aadaa55" }, + "nvim-lspconfig": { "branch": "master", "commit": "8b15a1a597a59f4f5306fad9adfe99454feab743" }, "nvim-nio": { "branch": "master", "commit": "a428f309119086dc78dd4b19306d2d67be884eee" }, - "nvim-treesitter": { "branch": "master", "commit": "3b8dee4293567b0b9a87360842af14669f60dd13" }, - "nvim-web-devicons": { "branch": "master", "commit": "0eb18da56e2ba6ba24de7130a12bcc4e31ad11cb" }, + "nvim-treesitter": { "branch": "master", "commit": "5f78e989243f9fb0fb55e0cf54820920d86dfd30" }, + "nvim-treesitter-context": { "branch": "master", "commit": "2bcf700b59bc92850ca83a1c02e86ba832e0fae0" }, + "nvim-web-devicons": { "branch": "master", "commit": "4adeeaa7a32d46cf3b5833341358c797304f950a" }, "plenary.nvim": { "branch": "master", "commit": "2d9b06177a975543726ce5c73fca176cedbffe9d" }, "rose-pine": { "branch": "main", "commit": "91548dca53b36dbb9d36c10f114385f759731be1" }, - "rustaceanvim": { "branch": "master", "commit": "1933318b98940b3e98ccbcd2828ae88c1bce8494" }, - "sonokai": { "branch": "master", "commit": "fd42b20963c34dfc1744ac31f6a6efe78f4edad2" }, + "rustaceanvim": { "branch": "master", "commit": "6db1fe9e3f005b2e0921c7302d2c195eeb90a451" }, + "sonokai": { "branch": "master", "commit": "1d7ca954792dfddd9e73c53563d85adaeb8c8437" }, "telescope-fzf-native.nvim": { "branch": "main", "commit": "dae2eac9d91464448b584c7949a31df8faefec56" }, "telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" }, "telescope.nvim": { "branch": "0.1.x", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" },