Trucs et astuces pour Neovim



Neovim est un éditeur dont beaucoup de programmeurs se servent. Il peut s'utiliser aussi bien en ligne de commande (CLI) que dans un environnement graphique (GUI). Dans cet article, nous ferons un tour d'horizon pour voir ce qu'il est possible de faire avec cet éditeur. Tu pourras consulter grâce à la commande :h terminal ou :h vimgrep...


Chercher une occurrence grâce à vimgrep

vimgrep est une super commande pour chercher du texte dans le fichier.

  • Chercher une occurrence dans le fichier et ouvrir le résultat de la recherche dans une nouvelle fenêtre :

  • vimgrep "occurrence" file.cpp | copen
    					
  • Si tu veux faire une recherche récursive à travers les sous-répertoires et afficher les résultats dans une nouvelle fenêtre :

  • vimgrep "sed" **/*.md | copen

  • Si tu souhaites chercher dans le chemin de ton buffer en cours :

  • vimgrep "lambda" %

  • Si tu prends des notes en Markdown, tu peux naviguer à travers les titres avec la commande suivante :

  • vimgrep /#/ % | copen

Tu trouveras toutes les informations sur comment utiliser vimgrep dans le manuel de Neovim.

Modifier plusieurs occurrences

Si tu souhaites modifier plusieurs occurrences dans ton fichier, dans cet exemple on va voir comment remplacer le mot linux par unix :

:%s/linux/unix/gc

Avec le flag g, toutes les occurrences du fichier seront concernées. Le flag c demande confirmation à chaque remplacement, tu pourras donc choisir quelles occurrences tu souhaites modifier.


Marqueur de fin de ligne

Il est pratique d'avoir un marqueur pour éviter d'avoir des lignes trop longues, surtout si tu utilises un multiplexeur de terminal. Voilà comment définir ce marqueur :

:set colorcolumn=72
hi ColorColumn

Neovim pour lire les pages man

Pour lire les pages Man avec Neovim, il te suffit de définir la variable MANPAGER dans le fichier .bashrc :

export MANPAGER="nvim +Man!"

Si tu codes et que le mot-clé dispose d'une page man, il te suffit de placer le curseur sur le mot-clé et d'appuyer sur Shift-k pour avoir accès à la page du manuel correspondante.


Commet utiliser des Notes en Markdown

J'adore utiliser des notes au format Markdown. pour y accèder directement sous Neovim, j'ai créer un alias

vim.api.nvim_create_user_command('Nt', 'tabedit /media/usb/Notes/index/md', {})
       

Dans ce fichier en Markdown, j'ai plein de liens vers les différentes notes que je prends

## [Coding]
 ### [ CPP ]  
  [C++ Programming](C++/C++.md)  
 ### [C-Language]  
  [C Programming](C.md)  
  [SDL Programming](SDL.md)
 ### [Rust]
  [Rust ](Rust/index.md)
 ### [Assembly]  
  [Assembly x86](asm.md)

J'ai juste à me rendre sur la ligne qui m'intéresse, et il me suffit de faire f( pour me rendre sur le lien qui se situe entre parenthèses et faire gf pour ouvrir le fichier.


J'utilise dans le même style un repertoire Snip, ou j'entrepose des exemples de code. C'est exectement le même alias que le précèdent

vim.api.nvim_create_user_command('Spc', 'tabedit /media/usb/Snips/c/README.md', {})
        

Les digraphes

Les digraphes sont des petits symboles un peu particuliers, mais qui ont leur utilité. Pour ma part, je me sers souvent des flèches (→ ← ↓ ↑) pour prendre des notes en Markdown. Pour voir tous les digraphes disponibles :

:digraphs

Tu as deux moyens pour insérer un digraphe :

  • En mode insertion : CTRL-v u2192 insère →

  • le code u2192 correspond au code hexadécimal du digraph, tu trouveras la liste de tous les codes dans le manuel :h digraphs.

    En voici quelques un:


  • CTRL-k -> insère →
  • CTRL-k <- insère ←
  • CTRL-k -! insère ↑
  • CTRL-k -> insère →
  • CTRL-k OK insère ✓
  • CTRL-k XX insère ✗

Terminal dans Neovim

Il est possible d'ouvrir un terminal dans Neovim :

:term        # Ouvre un terminal
:vert term   # Ouvre un terminal dans un split vertical

Pour passer en mode insertion et pouvoir saisir des commandes, utilise la touche i.


Les marques (marks)

Les marks sont utiles pour naviguer à travers le code. Elles permettent de sauvegarder une position dans le fichier, pour y revenir plus tard. Pour créer une marks, il suffit de faire m1 pour sauvegarder la position, puis '1 pour y revenir. Tu peux utiliser n'importe quel caractère à la place du 1.


Pour voir la liste des marks déjà définies, il te suffit de faire :marks.


Les pliages(folds)

Les fold sont géniaux. Ils permettent de réduire une partie du code pour avoir une meilleure visibilité.

  • Pour créer un fold, il suffit de sélectionner le texte et de faire zf.
  • Pour ouvrir un fold, tu auras juste à faire zo.
  • Pour fermer un fold, zc.
  • Pour supprimer un fold, zd.

Les buffers

Dès que tu ouvres un fichier dans Neovim, un buffer est créé. Les buffers sont très pratiques pour naviguer entre les différents fichiers.

Voici les commandes :

  • :ls ou :buffers liste tous les buffers ouverts.
  • :bnext ou :bprev permet de passer d'un buffer à l'autre.
  • :b# où # est le numéro du buffer à éditer.


Les tabs

Sous Neovim, on peut ouvrir plusieurs onglets et avoir dans chaque tab un fichier différent. Je me sert des tabs surtout pour ouvrir les pages du manuel de vim, ce qui me permet de switcher assez facilement.

  • Pour créer une nouvelle tab : :tabnew
  • Pour revenir sur la tab précédente : gT
  • Pour aller sur la tab suivante : gt
  • Pour fermer une tab : :tabc

Voilà, on a vu une bonne partie de l'éditeur. Dans l'article Neovim avancé, nous allons voir comment configurer l'éditeur pour qu'il te convienne le mieux. Nous verrons aussi comment prendre des notes au format Markdown.