master-wiki/notes/utils/Neovim.md
aleidk 49730b5f3c Update from obsidian -
Affected files:
notes/utils/Neovim.md
projects/quests.md
2023-10-28 13:09:04 -03:00

92 lines
No EOL
3.3 KiB
Markdown

## Config
### Formatters
Hay que añadirlos en `plugins/formatters.lua`, pueden ser instalados con mason.
### Linters
Hay que añadirlos en `plugins/linters.lua`, pueden ser instalados con mason.
### LSP
Hay que añadirlos en `plugins/lsp.lua`, son instalados automáticamente al ser agregados aquí con mason.
## Remember to use:
### Misc
- In visual mode, you can use `J` or `K` to move the selection
- With alt + hjkl I can resize the window, I can restore the size with `<C-w> =`
- `<Leader>r` tiene keymaps para search and replace
### LSP y code actions
- `<Leader>la` -> Code action by lsp
- `<Leader>lA` -> Node action by Treesitter
- `<Leader>lm` -> Toggle node join split (arrays, objects, etc)
- `<Leader>lr` -> rename symbol
- `<Leader>fd` -> See disagnostics in file
- `<Leader>fD` -> See disagnostics in workspace
- `gr` -> List reference of symbol in telescope
### Git
Puedo invocar comandos de git directamente desde neovim con `:Git ...`
### Harpoon
Fast navigation with `<Leader><Leader>[hjkl]`
### Buffers
Puedo hacer pin a ciertos buffers para no cerrarlos con `<Leader>bp` y cerrar todos los buffers no pineados con `<Leader>bP`
Puedo cerrar los otros buffers no activos con `<Leader>bO`
### Treesitter
TODO: Research movemet with Treesitter
### Text objects
Los text objects se utilizan en la forma de ==acción - motion==, Ej: `vi{` es `selecciona dentro de los { }`
Acciones:
- v -> visual selection
- d -> delete
- c -> change
- gc -> comment
Text objects available:
- f -> function
- t -> html tag
### Surround plugin
- Actions (all of them are dot-repeatable out of the box and respect `v:count` for searching surrounding) with configurable keymappings:
- Add surrounding with `sa` (in visual mode or on motion).
- Delete surrounding with `sd`.
- Replace surrounding with `sr`.
- Find surrounding with `sf` or `sF` (move cursor right or left).
- Highlight surrounding with `sh`.
- Change number of neighbor lines with `sn` (see |MiniSurround-algorithm|).
- Surrounding is identified by a single character as both "input" (in `delete` and `replace` start, `find`, and `highlight`) and "output" (in `add` and `replace` end):
- 'f' - function call (string of alphanumeric symbols or '_' or '.' followed by balanced '()'). In "input" finds function call, in "output" prompts user to enter function name.
- 't' - tag. In "input" finds tag with same identifier, in "output" prompts user to enter tag name.
- All symbols in brackets '()', '[]', '{}', '<>". In "input' represents balanced brackets (open - with whitespace pad, close - without), in "output" - left and right parts of brackets.
- '?' - interactive. Prompts user to enter left and right parts.
- All other alphanumeric, punctuation, or space characters represent surrounding with identical left and right parts.
### Text Object
works for:
- Comments (`gc`)
- Visual selection
### Telescope
- [Browser plugins mappigns](https://github.com/nvim-telescope/telescope-file-browser.nvim#mappings)
## Plugins compatibility errors
Lazy.nvim tiene un `lazy-lock.json`, por lo que ante cualquier problema de compatibilidad, podemos volver a versión especificada aqui con `Lazy restore`. Es importante mantener este archivo en git y solo modificarlo cuando se esté seguro que no hay problemas de compatibilidad.