{"id":21396782,"url":"https://github.com/curs3w4ll/discover_vim","last_synced_at":"2026-05-20T03:32:13.194Z","repository":{"id":46037612,"uuid":"429147525","full_name":"Curs3W4ll/Discover_Vim","owner":"Curs3W4ll","description":"Epitech workshop to learn how to use neovim","archived":false,"fork":false,"pushed_at":"2022-10-31T16:19:00.000Z","size":5691,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-23T02:12:04.503Z","etag":null,"topics":["nvim","vim","vimrc","workshop"],"latest_commit_sha":null,"homepage":"https://neovim.io/","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Curs3W4ll.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-11-17T17:55:03.000Z","updated_at":"2023-03-08T15:10:47.000Z","dependencies_parsed_at":"2023-01-20T09:36:08.305Z","dependency_job_id":null,"html_url":"https://github.com/Curs3W4ll/Discover_Vim","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Curs3W4ll%2FDiscover_Vim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Curs3W4ll%2FDiscover_Vim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Curs3W4ll%2FDiscover_Vim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Curs3W4ll%2FDiscover_Vim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Curs3W4ll","download_url":"https://codeload.github.com/Curs3W4ll/Discover_Vim/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243885888,"owners_count":20363644,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["nvim","vim","vimrc","workshop"],"created_at":"2024-11-22T14:29:15.993Z","updated_at":"2026-05-20T03:32:13.148Z","avatar_url":"https://github.com/Curs3W4ll.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Découverte de vim (ou plutôt neovim :smirk:)\n\n## L'interface et les bases\n\n### L'interface\n\n![Neovim interface](img/interface.png)\n\n### Les bases\n\n#### La notion de modes\n\n`Normal`: Déplacements rapides, de modifications rapides...\n\n`Insertion`: Insertion de textes\n\n`Remplacement`: Remplacer du texte\n\n`Visual`: Sélection\n\n`Visual-block`: Sélection en bloc\n\n`Command`: Mode d'éxécution de commandes\n\n### Les raccourcis de base\n\nLes raccourcis sont utilisables en mode `normal`, `visual` et `visual-block`\n\n#### Le deplacement\n\nPossible de se déplacer avec les flèches\n\nCependant il est conseillé d'utiliser les raccourcis suivants:\n\n`h`: Gauche\n\n`j`: Bas\n\n`k`: Haut\n\n`l`: Droite\n\n`w`: Aller au début du prochain mot\n\n`e`: Aller à la fin du mot sur lequel est le curseur\n\n`b`: Aller au début du mot sur lequel est le curseur\n\n#### Écrire du texte\n\n`i`: Passer en mode insertion avant le curseur\n\n`a`: Passer en mode insertion après le curseur\n\n`s`: Supprimer le caractère sous le curseur et passer en mode insertion\n\n`I`: Passer en mode insertion au début de la ligne\n\n`A`: Passer en mode insertion à la fin de la ligne\n\n`S`: Supprimer la ligne actuelle et passer en mode insertion\n\n`r`: Remplacer le caractère sur lequel est positionné le curseur\n\n`R`: Passer en mode remplacement\n\n`J`: Fusionner la ligne actuelle et celle d'en dessous\n\n#### Presse-papier\n\n`yy`: Copier la ligne actuelle\n\n`dd`: Couper la ligne actuelle\n\n`p`: Coller après le curseur\n\n`P`: Coller avant le curseur\n\n`x`: Couper le caractère sous le curseur\n\n`X`: Couper le caractère avant le curseur\n\n`s` et `S` gardent les éléments supprimés dans le presse-papier\n\n#### Navigation\n\n`gg`: Aller au début du fichier\n\n`G`: Aller à la fin du fichier\n\n`H`: Aller à la première ligne affichée\n\n`L`: Aller à la dernière ligne affichée\n\n`:\u003cxx\u003e`: Aller à la ligne avec un numéro\n\n#### Recherche\n\n`/`: Rechercher une string\n\n`n`: Aller à la prochaine occurrence\n\n`N`: Aller à la précédente occurrence\n\n`f`: Rechercher dans la ligne et déplacer le curseur sur la première occurrence\n\n`t`: Rechercher dans la ligne et déplacer le curseur avant la première occurrence\n\n`*`: Rechercher le mot sur lequel est positionné le curseur\n\n#### Autre\n\n`u`: Annuler (`Ctrl + z`)\n\n`Ctrl + R`: Refaire (`Ctrl + y`)\n\n`\u003cEsc\u003e`: Passer en mode normal\n\n#### La combinaison\n\nVim propose de combiner ces raccourcis afin d'augmenter la puissance de ceux-ci\n\n`dj`: Couper la ligne actuelle et celle d'en dessous\n\nIl est possible de combiner quasiment tous les raccourcis entre eux\n\nIl est aussi possible d'utiliser des chiffres avec ces raccourcis\n\nPar exemple\n\n`\u003cnbr\u003ej`: Allez à `nbr` lignes après, de même avec h, k et l (tous les déplacements en somme)\n\nOn peut donc faire `d3j` pour couper la ligne actuelle et les trois d'en dessous\n\nEt `d3k` pour au-dessus\n\n`d3l` pour couper le caractère sous le curseur et les trois sur sa droite, pareil pour `h`\n\n`dfl`: Pour couper jusqu'au prochain `l` dans la ligne\n\nEssayer par exemple, de trouver la combinaison des raccourcis pour:\n\n\u003cdetails\u003e\n    \u003csummary\u003eSupprimer le contenu entre des guillemets \" à partir du curseur\u003c/summary\u003e\n\n    dt\"\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n    \u003csummary\u003eSupprimer de la position du curseur jusqu'à la fin du fichier\u003c/summary\u003e\n\n    dG\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n    \u003csummary\u003eCopier les trois mots après le curseur\u003c/summary\u003e\n\n    y3w\n\n\u003c/details\u003e\n\n\u003cbr/\u003e\n\nEn bref, il est possible de faire beauuuuuuuucoup de combinaisons\n\n### Les commandes de base\n\nLes commandes commencent toutes par `:` car on rentre ainsi dans le mode `commande`\n\n`:w`: Sauvegarder\n\n`:q`: Quitter\n\n`:x`: Sauvegarder et quitter\n\n`:noh`: Désactiver le 'surlignage' des recherches\n\n`:h`: Ouvrir une page d'aide sur un sujet\n\n`:vs`: Ouvrir une deuxième fenêtre\n\n`:ls`: Lister les buffers ouverts\n\n`:b`: Changer de buffer\n\n`:%s`: Rechercher et remplacer\n\n### Les macros\n\nLes macros permettent d'enregistrer une suite d'actions et de les refaires\n\nLes macros sont identifiées par une lettre\n\nPour enregistrer une macro, il suffit en mode normal, d'appuyer sur `q` puis sur la lettre correspondant à la macro\n\nEnsuite il suffit d'exécuter des actions, puis d'appuyer sur `q` pour finir l'enregistrement\n\nPour utiliser une macro, il faut utiliser un `@` puis la lettre qui correspond à la macro\n\n## La configuration\n\nVim est configurable (et heureusement, sinon ça serait bien nul)\n\nPour vim de base, le fichier de configuration est `~/.vimrc`\n\nDans notre cas, pour neovim, ce sera `~/.config/nvim/init.vim`\n\nC'est ici que l'on peut configurer vim\n\nPour plus d'informations sur ces configurations, vous avez mes [dotfiles](https://github.com/Curs3W4ll/Dotfiles) à disposition qui vous expliquent tous comme il faut\n\n## Comment faire de vim un vrai IDE en utilisant des plugins\n\nLa vraie force de vim, au-delà de ça, c'est les plugins\n\nCes plugins sont écrits en vimscript (ou lua) et sont créés par des utilisateurs\n\nPour les installer, il existe plusieurs méthodes\n\n- La plupart des plugins proposent ces méthodes d'installation sur leur github\n\n- Un plugin manager\n\nUn plugin manager est un plugin lui aussi, qu'il va falloir installer à la main (pas le choix)\n\nEt qui va permettre d'installer et de désinstaller des plugins très facilement\n\nIl existe pas mal de plugin managers: `vimplug`, `vundle`, `pathogen`\n\nMais celui que j'utilise et recommande est `vimplug`\n\nPour l'installer, il faut suivre les instructions sur [github](https://github.com/junegunn/vim-plug)\n\nIl existe deux catégories de plugins\n\n\u003cdetails\u003e\n\u003csummary\u003eLes plugins passifs, qui tournent en arrière plan\u003c/summary\u003e\n\nLa plupart du temps, ces plugins affichent des informations ou facilitent la vision de l'utilisateur\n\n\u003c/details\u003e\n\n\u003cbr/\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eLes plugins actifs, qui se lancent lors d'une action de l'utilisateur\u003c/summary\u003e\n\nCes plugins ne font des actions uniquement quand l'utilisateur le demande\n\nPour cela, les plugins actifs utilisent des commandes, par exemple :MakeHeader\n\nLe problème ici, c'est que taper des commandes, c'est long et chiant\n\nVim permet donc de faciliter l'utilisation de ces commandes\n\n\u003c/details\u003e\n\n## Comment faire ses propres raccourcis\n\nPour faire ses propres raccourcis, il faut relier une commande (`:command`) à une combinaison de touches\n\nLa syntaxe et la suivante:\n\n`\u003cmode\u003emap` `\u003ccombinaison de touches\u003e` `\u003ccommande(s)\u003e`\n\nPar exemple\n\n```vim\nnmap \u003cC-n\u003e :NERDTreeToggle\u003cCR\u003e\n```\n\n## Quelques plugins utiles\n\n### Vimplug\n\n[Github](https://github.com/junegunn/vim-plug)\n\nVimplug est le plugin qui permet de gérer facilement l'installation et la suppression d'autres plugins\n\n![Vimplug preview](img/vimplug_preview.png)\n\n### Coc\n\n[Github](https://github.com/neoclide/coc.nvim)\n\nCoc, c'est la vie, il fait beaucoup de choses, dont l'autocompletion, les snippets, les linters et les formatters\n\n![Coc preview](img/coc_preview.png)\n\n### Vim tek-header\n\n[Github](https://github.com/Nero-F/vim-tek-header)\n\nVim tek-header est un plugin qui permet de générer les headers Epitech automatiquement (une nouvelle version arrive bientôt)\n\n![Vim tek-header preview](img/vim-tek-header_preview.png)\n\n### Auto pairs\n\n[Github](https://github.com/jiangmiao/auto-pairs)\n\nAuto pairs ferme automatiquement les délimiteurs de blocs (`()`, `[]`, `\"\"`, `''`...)\n\nCe plugin facilite également leur identification\n\n![Auto pairs](img/auto-pairs_preview.png)\n\n### Vim airline\n\n[Github](https://github.com/vim-airline/vim-airline)\n\nAirline permet d'avoir plein d'informations sur le fichier facilement (et joliment surtout :))\n\n![Airline preview](img/airline_preview1.png)\n\n![Airline preview](img/airline_preview2.png)\n\n### Onedark\n\n[Github](https://github.com/joshdick/onedark.vim)\n\nOne dark est un thème de couleur\n\n![Onedark preview](img/onedark_preview.png)\n\n### Nightfox\n\n[Github](https://github.com/EdenEast/nightfox.nvim)\n\nNightfox est un autre thème de couleur\n\n![Onedark preview](img/nightfox_preview.png)\n\n### Vim surround\n\n[Github](https://github.com/tpope/vim-surround)\n\nVim surround est un plugin qui facilite l'utilisation des délimiteurs (\", ', {}, []...)\n\n### Vim smoothie\n\n[Github](https://github.com/psliwka/vim-smoothie)\n\nVim smoothie est un plugin qui rend plus fluide les déplacements dans un fichier\n\n### Git messenger\n\n[Github](https://github.com/rhysd/git-messenger.vim)\n\nGit messenger affiche l'historique des commits d'une section de code\n\n![Git messenger preview](img/git-messenger_preview.png)\n\n### Nerdtree\n\n[Github](https://github.com/preservim/nerdtree)\n\nNerdtree est un plugin qui permet d'avoir un arbre de fichiers\n\n![Nerdtree preview](img/nerdtree_preview.png)\n\n### Nerdtree git\n\n[Github](https://github.com/Xuyuanp/nerdtree-git-plugin)\n\nNerdtree-git affiche des icônes suivant le statut git des fichiers\n\n![Nerdtree-git preview](img/nerdtree-git_preview.png)\n\n### Vim arduino\n\n[Github](https://github.com/stevearc/vim-arduino)\n\nVim arduino permet d'utiliser un arduino directement avec vim\n\n### Indentline\n\n[Github](https://github.com/yggdroot/indentline)\n\nIndentline rends les tabulations plus visibles et lisibles\n\n![Indentline preview](img/indentline_preview.png)\n\n### Vim devicons\n\n[Github](https://github.com/ryanoasis/vim-devicons)\n\nVim devicons permet d'avoir de jolis icônes\n\n![Vim devicons preview](img/vim-devicons_preview.png)\n\n### Vim JSX pretty\n\n[Github](https://github.com/maxmellon/vim-jsx-pretty)\n\nCe plugin rends du code jsx joli\n\n### Vim better whitespace\n\n[Github](https://github.com/ntpeters/vim-better-whitespace)\n\nPermet d'identifier les espaces en trop\n\n![Vim better whitespace preview](img/vim-better-whitespace_preview.png)\n\n### Vim gitgutter\n\n[Github](https://github.com/airblade/vim-gitgutter)\n\nCe plugin permet d'identifier rapidement les modifications git sur un fichier\n\n![Vim git gutter](img/vim-git-gutter_preview.png)\n\n### Vim CSS color\n\n[Github](https://github.com/ap/vim-css-color)\n\nVim css color permet d'avoir un rendu en direct des couleurs\n\n![Vim CSS color preview](img/vim-css-color_preview.png)\n\n### Markdown preview\n\n[Github](https://github.com/iamcco/markdown-preview.nvim)\n\nCe plugin permet d'avoir une vue en direct d'un fichier markdown\n\n### Tabnine\n\n[Github](https://github.com/codota/tabnine-vim)\n\nTabnine est un plugin qui permet d'améliorer l'autocompletion\n\n### NerdCommenter\n\n[Github](https://github.com/preservim/nerdcommenter)\n\nNerdcommenter permet de faciliter l'utilisation des commentaires\n\n### Instant nvim\n\n[Github](https://github.com/jbyuki/instant.nvim)\n\nIntant vim est un plugin qui permet de faire de l'édition collaborative\n\n## Comment bien configurer de nouveaux plugins\n\nPour bien configurer un plugin, il est recommandé de lire entièrement leurs documentations sur leurs githubs respectifs\n\nIl est également recommandé de séparer les configurations des plugins par fichiers\n\n## Des petits tips\n\nPour faciliter le passage en mode normal, on peut 'mapper' `\u003cEsc\u003e` sur une combinaison\n\nLa plupart des gens le map sur la combinaison de lettres `jk`\n\nDès que vous pensez que quelque chose qu'il serait utile d'avoir sur vim, cherchez sur internet\n\nIl y a énormément de plugins vim, et bien souvent, le truc auquel vous pensez, bah ça existe\n\n## En bref\n\nComme vous avez pu le comprendre, vim est fait pour aller vite\n\nCependant, il est nécessaire de passer du temps sur sa configuration pour qu'il soit de plus en plus efficace\n\nSi vous voulez vous documenter un peu plus sur vim et sur les plugins que je viens de vous montrer\n\nVoici le lien de mes [Dotfiles](https://github.com/Curs3W4ll/Dotfiles) (ils contiennent de la doc sur les plugins)\n\n## Maintenant, la pratique !\n\nMaintenant que vous avez toutes ces infos, je vous laisse configurer votre vim comme vous le souhaitez\n\nServez vous des liens pour faire votre configuration\n\nJe suis là pour répondre à vos questions ou si vous avez des problèmes\n\n![](img/vim_commands.jpg)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcurs3w4ll%2Fdiscover_vim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcurs3w4ll%2Fdiscover_vim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcurs3w4ll%2Fdiscover_vim/lists"}