Cheatsheet

Tous les raccourcis ajoutés au-dessus de ceux configurés par Lazyvim sont annotés par Ajout.

Basiques

  1. Ouvrir Neovim: nvim (ou alias n)
  2. Ouvrir un fichier avec neovim: nvim fichier.md
  3. Quitter Neovim: <Esc>:q = Esc(revenir en mode normal) puis : (mode commande) puis q (comme quit) -> <Ctrl-s> en plus simple
  4. Quitter Neovim en sauvant ses modifications: <Esc>:wq -> write quit
  5. Sauver un fichier dans Neovim: <Esc>:w = write -> <Ctrl-s> en plus simple
  6. Quitter Neovim en annulant les modifications: <Esc>:cq -> cancel quit
  7. Ouvrir un fichier dans Neovim depuis Yazi: sélectionner le fichier avec j et k pour se déplacer puis Enter, cela utilise $EDITOR.
  8. La touche <leader> est une sorte de touche Ctrl qui peut être posée où on veut sur le clavier, elle est posée par défaut sur l'espace, elle donne accès à beaucoup de raccourcis de touches successives, visible via which-key en tapant juste l'espace une fois en mode Normal.

Modes

  1. n: Normal - mode lancé par défaut, est le plus utilisé
  2. i: Insertion - mode où les touches du clavier ont leur usage "naturel" d'insertion de caractères
  3. v: Visuel - similaire à un curseur qui reste appuyé sur le texte, où les mouvements permettent de définir une sélection du texte
  4. v-line: Visual Line - accessible en V - comme le mode visuel, mais avec une sélection entière des lignes.
  5. v-block: Visual Block - accessible en <Ctrl-v> - mode visuel par block, permet de faire des sélections de rectangles verticaux au milieu du texte.

Mouvements basique tirés de vim

Raccourci Mode But
j n Aller vers le bas
k n Aller vers le haut
h n Aller à gauche
l n Aller à droite
w n Sauter au prochain mot
e n Sauter à la fin du mot
b n Reculer d'un mot
0 n Aller au début de la ligne actuel
$ n Aller à la fin de la ligne actuel
<Ctrl-d> n Aller une demi-page vers le bas (d = down)
<Ctrl-u> n Aller une demi-page vers le haut (u = up)

Editions basiques tirés de vim

Raccourci Mode But
i n Entrer en mode insertion (gauche du curseur)
a n Entrer en mode insertion mais à droite du curseur
I n Entrer en mode insertion au tout début de la ligne (même direction que le i), équivalent à 0i
A n Entrer en mode insertion à la fin de la ligne (même direction que le a), équivalent à $a
v n Entrer en mode visuel
<Esc> i Sortir du mode insertion et revenir en mode normal
<Esc> v Sortir du mode visuel (perdre la sélection) et revenir en mode normal
rx n Remplacer le caractère sous le curseur par x ()
. n Répéter la dernière action
u n Annuler l'action
<Ctrl-r> n Rétablir la dernière action annulée
J n Joindre la ligne suivante à la ligne actuelle (remplacer le retour à la ligne entre deux avec un espace)
<Ctrl-a> ou <Ctrl-x> n Incrémente ou décrémente le compteur sur la ligne actuel
u ou U v Mettre la sélection en minuscule ou majuscule

Manipulations basiques de textes

  1. Copier une ligne: yy (yank par défaut)
  2. Couper une ligne: dd (delete par défaut)
  3. Changer toute une ligne: cc (change par défaut, équivalent de ddO)
  4. Changer un mot: cw (change word)
  5. Couper un mot: dw (delete word)
  6. Coller ce qui a été copié ou coupé: p (paste)
  7. Bouger une ligne vers le bas: ddp (delete par défaut puis recolle la ligne donc arrive en dessous)
  8. Bouger une ligne vers le haut: ddkP (delete la ligne, monte un cran, colle au dessus avec P majuscule)
  9. Sélectionner 3 lignes: <Ctrl-v>jjj (Aller en mode visuel et se déplacer de ligne)
  10. Supprimer 3 lignes: 3dd (3 fois delete ligne)
  11. Supprimer 4 mots: dw... ou mieux 4dw
  12. Changer à l'intérieur des parenthèses: ci( (change inside parenthèse)
  13. Changer le texte jusqu'au point: ct. (change until dot) - très utile pour changer toute une phrase.
  14. Changer jusqu'à la fin de la ligne: C (équivalent de c$)
  15. Supprimer jusqu'à la fin de la ligne: D (équivalent de d$)
  16. Supprimer jusqu'à un certain caractère (non inclus): dtx (delete until x)
  17. Supprimer jusqu'après avoir trouvé un certain caractère (inclus): dfx (delete find x)

Gérer les fichiers ouverts

Raccourci Mode But
<leader><space> n Cherche un fichier à ouvrir dans Telescope, taper pour filtrer, enter pour valider.
<leader>ss n Ouvre une liste de symboles dans Telescope
(en Markdown ce sera la liste de tous les titres)
<Ctrl-s> n Sauvegarde le fichier (équivalent de :w)
<Ctrl-q> n (Ajout) Ferme Neovim (équivalent de :q). TODO: pourquoi ça crash parfois.

Gérer les buffers

Buffer = les zones de texte ouvertes, chaque fichier ouvert sera un nouveau buffer avec un onglet.

Raccourci Mode But
H n Switche au buffer à gauche (inspirée du mouvement vim h)
L n Switche au buffer à droite (inspirée du mouvement vim l)
<leader>bb n Switche au buffer précédent
<leader>bo n Ferme tous les autres buffers (buffer others)

Gérer les fenêtres

Fenêtre = les panneaux ouverts à l'intérieur de Neovim permettant de voir plusieurs fichiers à la fois

Raccourci Mode But
<leader>| n Split verticallement la fenêtre vers la droite et réouvre le même buffer (note: | = pipe = AltGr+7)
<leader>- n Split horizontalement la fenêtre vers la droite
<Ctrl-h>, <Ctrl-j>, <Ctrl-k>, <Ctrl-l> n Aller à la fenêtre à gauche/en haut/en bas/à droite de la fenêtre actuelle

Rédiger du Markdown

Raccourci Mode But
b+enter (Snippet bold) i Insérer une partie en gras
i+enter (Snippet italic) i Insérer une partie en italique
co+enter (Snippet code) i Insérer une partie de code inline
cb+enter (Snippet codeblock) i Insérer une partie de code block avec un language (choisir language puis tab)
l+enter (Snippet link) i Insérer un lien
h1+enter (Snippet h1) i Insérer un titre de niveau 1 (heading 1). Marche également de h1 à h6.
ta+enter (Snippet table) i Insérer un tableau taille par défaut (2 lignes et 3 colonnes)
32ta+enter (Snippet 3x2table) i Insérer un tableau de 3 lignes et 2 colonnes (pareil pour xyta où x et y valent de 1 à 5 !)
<leader>cp n Ouvrir l'aperçu Markdown dans le navigateur, via le plugin markdown-preview

Code snippet to have a better output as PDF printing.

.markdown-body pre {
  font-size: 75%;
  padding: 6px;
}

code {
  white-space: pre-wrap !important;
}

@media print {
    .markdown-body {
        padding: 26px;
    }
    #page-ctn {
        max-width: none !important;
    }
    #page-header {
            display: none;
    }
}

Raccourcis leader importants

Raccourci Mode But
<leader>l n Ouvrir lazy.nvim, le gestionnaire de plugins
<leader>ca n Ouvrir les Code Actions -> les propositions du language server
<leader>sk n Chercher des keymaps (Search for Keymaps)
<leader>/ n Rechercher globalement un pattern via Telescope (inspiré de / dans un fichier)

todo: how to access help

Gérer des plugins

  1. Language server: Une partie des plugins sont des LS (Language Server) pour supporter des nouveaux languages, il est possible de les gérer via Mason, pour y accéder il suffit de <leader>cm. Les binaires des LS sont automatiquement installés. Ils ne sont par contre lancé que cela fait sens, c'est à dire que si le type de fichier est lié à ce que fait le LS.
  2. Plein d'extensions sont prêtes à être activées via Lazy.nvim (le gestionnaire de plugins, pas la distribution), on y accède à la liste via <leader>l.
  3. Il existe des moyens aussi faciles pour supporter d'autres languages, via les lazy extras (accessible via :LazyExtras), par ex. un groupe de plugin utiles pour Ansible se trouve sur le pack lang.ansible.

TODO: comprendre et documenter plus de comment gérer des snippets Lua trouvé dans des README de plugins...