Cheatsheet
Tous les raccourcis ajoutés au-dessus de ceux configurés par Lazyvim sont annotés par Ajout.
Basiques
- Ouvrir Neovim:
nvim(ou aliasn) - Ouvrir un fichier avec neovim:
nvim fichier.md - Quitter Neovim:
<Esc>:q=Esc(revenir en mode normal) puis:(mode commande) puisq(commequit) -><Ctrl-s>en plus simple - Quitter Neovim en sauvant ses modifications:
<Esc>:wq-> write quit - Sauver un fichier dans Neovim:
<Esc>:w= write -><Ctrl-s>en plus simple - Quitter Neovim en annulant les modifications:
<Esc>:cq-> cancel quit - Ouvrir un fichier dans Neovim depuis Yazi: sélectionner le fichier avec
jetkpour se déplacer puisEnter, cela utilise$EDITOR. - 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 viawhich-keyen tapant juste l'espace une fois en mode Normal.
Modes
n: Normal - mode lancé par défaut, est le plus utiliséi: Insertion - mode où les touches du clavier ont leur usage "naturel" d'insertion de caractèresv: Visuel - similaire à un curseur qui reste appuyé sur le texte, où les mouvements permettent de définir une sélection du textev-line: Visual Line - accessible enV- comme le mode visuel, mais avec une sélection entière des lignes.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
- Copier une ligne:
yy(yank par défaut) - Couper une ligne:
dd(delete par défaut) - Changer toute une ligne:
cc(change par défaut, équivalent deddO) - Changer un mot:
cw(change word) - Couper un mot:
dw(delete word) - Coller ce qui a été copié ou coupé:
p(paste) - Bouger une ligne vers le bas:
ddp(delete par défaut puis recolle la ligne donc arrive en dessous) - Bouger une ligne vers le haut:
ddkP(delete la ligne, monte un cran, colle au dessus avec P majuscule) - Sélectionner 3 lignes:
<Ctrl-v>jjj(Aller en mode visuel et se déplacer de ligne) - Supprimer 3 lignes:
3dd(3 fois delete ligne) - Supprimer 4 mots:
dw...ou mieux4dw - Changer à l'intérieur des parenthèses:
ci((change inside parenthèse) - Changer le texte jusqu'au point:
ct.(change until dot) - très utile pour changer toute une phrase. - Changer jusqu'à la fin de la ligne:
C(équivalent dec$) - Supprimer jusqu'à la fin de la ligne:
D(équivalent ded$) - Supprimer jusqu'à un certain caractère (non inclus):
dtx(delete until x) - 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
- 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. - 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. - 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 packlang.ansible.
TODO: comprendre et documenter plus de comment gérer des snippets Lua trouvé dans des README de plugins...