> Tutoriel temporaire et minimal
# Neovim does everything 
Neovim est un outil très utile pour coder (et faire globalement tout) sans quitter le clavier (pas besoin de souris). Cela prend un certain temps d'adaptation, mais pour un gain de vitesse et de confort non négligeable en définitive. Se référer à internet qui explique très bien les déplacements de base (il existe même des minjeux type snake pour s'entraîner).

Avec Arch, installer neovim se fait avec pacman, et demandera un terminal (kitty par exemple). Pour les plugins utilisés ici, il faudra aussi installer :
- zathura (lecteur de pdf)
- tree-sitter-cli
- texlive (ATTENTION, configurer neovim puis faire pacman -Syyyu, pour une installation correcte de biber)
- imagemagick
- luarocks

Il faudra aussi entrer :setlocal spelllang=fr pour activer la correction de la langue (voir autocorrection sur le wiki neovim)

>[!WARNING]
> Aller voir ce [lien](https://github.com/neovim/neovim/issues/2102) (et faire nvim -u NORC pour télécharger le langage)
> Sinon directement télécharger fr.utf-8.spl [ici](https://ftp.nluug.nl/pub/vim/runtime/spell/)

Neovim est hautement personnalisable, notamment avec une quantité assez impressionnante de plugins communautaires disponibles sur github. Ici, j'utilise le package manager interne à neovim édité par M.Folke, "LazyVim", qui fonctionne très bien. On recopiera la structure de dossier de la partie suivante, et on pourra ajouter des plugins en ajoutant des fichiers (un par plugin). Sur github, en général, le tutoriel d'installation est expliqué, et propose "Pour Lazy". Comme on sépare les fichiers ici, il faudra noter :
```lua
return {
-- copier coller ce qui est demandé entre {}
}
```

Le wiki est bon mais demande un temps d'adaptation (finalement une part de la philosophie neovim).
## Architecture
```
nvim
init.lua
lazy-lock.json (generated)
- after
- lua
    - neoconf
        autocmd.lua
        init.Lua
        lazy_init.lua
        lsp-config.lua
        remap.lua
        settings.lua
        - lazy
            FICHIERS DE PLUGINS (ajouter return{} autour de ce qui est recommandé sur github pour Lazy)
        - snippets
            latex.lua
```
## In settings
Appel de tous les fichiers de paramètres :
> lazy_init
> Appelle et installe le package manager lazy-folke (cf [wiki](https://lazy.folke.io/))
> Définition du dossier de plugin (dans neoconf ici)

> settings
> Paramètres de base de neovim (cf [wiki](https://neovim.io/doc/user/options.html))

> remap
> Définition et redéfinition de raccourcis clavier

> autocmd
> Définition des autocommands (voir [wiki](https://neovim.io/doc/user/autocmd.html))

> lsp-config
> Bon ça je sais plus mais je supprimerai pas par peur de casser

Et définit le leader (`space` dans cette config)
## Plugins
- Affichage entrée dans neovim [Alpha nvim](https://github.com/goolord/alpha-nvim)
- Formatage (deux nécessaires)
    - [LSP](https://github.com/neovim/nvim-lspconfig) + [Mason](https://github.com/mason-org/mason.nvim)
    > Il faut lancer :Mason pour installer les formatters, ou les annoncer directement dans le fichier plugin
    - [Treesitter](https://github.com/nvim-treesitter/nvim-treesitter)
    > Annoncer les langages voulus dans le fichier plugin + autocmd pour le lancer automatiquement

- Affichage des autocomplétions ([Blink](https://github.com/Saghen/blink.cmp))
> `ctrl n` (next) `ctrl p` (previous) `ctrl y` valider
> [!TODO] Snippet (autocomplétion, pas encore paramétré) ([Luasnip](https://github.com/L3MON4D3/LuaSnip))
- Gestionnaire de fichiers ([Oil](https://github.com/stevearc/oil.nvim))
> `<space>n`
- Recherches rapides ([Telescope](https://github.com/nvim-telescope/telescope.nvim))

- Oblige à utiliser correctement les déplacements [Hardtime](https://github.com/m4xshen/hardtime.nvim)
- Thèmes (Tokionight, Nightfox)
- Ligne inférieure ([Lualine](https://github.com/nvim-lualine/lualine.nvim/tree/master))
- Affichage un peu cool ([Noice](https://github.com/folke/noice.nvim))
- Donne des indication sur les raccourcis dispo ([Whichkey](https://github.com/folke/which-key.nvim))

> [!TODO] Gestion des images ([Image](https://github.com/3rd/image.nvim))
- Gestion des csv ([CSV view](https://github.com/hat0uma/csvview.nvim)) 
> Raccourcis (définis dans les mappings nvim) : `<space>cv` (ATTENTION il faut que le delimiter soit ";", peut être paramétré autrement dans les mappings cependant)
- Gestion markdown ([Render markdown](https://github.com/MeanderingProgrammer/render-markdown.nvim))
- Gestion latex ([Vimtex](https://github.com/lervag/vimtex))
> Taper `<space>` et les différentes commandes dispo seront affichées par whichkey ATTENTION il faut installer zathura et ses plugins de pdf !!!
