Ceci est un document que je remplis au fur et à mesure afin de conserver et mieux retenir les différentes actions dans Vim.
- Navigation
- Marqueurs
- Propriétés du fichier
- Opérations
- Édition
- Fenêtres
- Buffers
- Commandes
- vimgrep
- .vimrc
- Netrw
- Plugins
gg: Première ligneG: Dernière ligne0: Début de ligne^: Premier caractère visible de la ligne courante+: Premier caractère visible de la ligne suivante-: Premier caractère visible de la ligne précédente$: Fin de lignew: Début de mot suivantb: Début de mot précédente: Fin de mot suivantge: Fin de mot précédentH: Délacer le curseur en haut de l’écranM: Délacer le curseur au milieu de l’écranL: Délacer le curseur en bas de l’écran<C-e>: Défiler vers le bas<C-y>: Défiler vers le haut<C-d>: Défiler une ½ page vers le bas<C-u>: Défiler une ½ page vers le haut<C-f>: Défiler une page vers le haut<C-b>: Défiler une page vers le haut//?: Recherche de mot vers le bas / le haut*/$: Recherche le mot sous le curseur vers le bas / le haut<C-o>: Naviguer en arrière dans l’historique d’édition<C-i>: Naviguer en avant dans l’historique d’éditionz.: Centre la vue sur le curseurz<CR>: Déplace la vue pour mettre le curseur en hautz-: Déplace la vue pour mettre le curseur en basv: Passer en mode VisuelV: Passer en mode Visuel par ligne<C-q>: Passer en mode Visuel par blocQ: Passer en mode Ex
On peut enregistrer une position pour y revenir plus tard ou pour l’utiliser dans une commande.
m[a-z]: Enregistre un marqueur avec une lettre (de a à z)m[A-Z]: Enregistre un marqueur global avec une lettre majuscule (de A à Z), accessible depuis n’importe quel fichier`[a-z]: Déplace le curseur sur le marqueur'[a-z]: Déplace le curseur sur la ligne du marqueur
Les marqueurs peuvent êtres aussi utilisés dans les commandes ou les portées.
<C-g>: Afficher les infos du fichierg<C-g>: Afficher les infos de quantité du fichier (nombre de lignes, mots, caractères)
<C-a>: Ajouter 1 au nombre sous le curseur. Prend en compte la base du nombre en fonction de son préfixe (0b: binaire,0x: hexadécimal,0: octal)12<C-a>: Ajouter 12 au nombre sous le curseur<C-x>: Retirer 1 au nombre sous le curseur
On peut définir ce qui est reconnu comme un nombre :
nrformats+=octal
nf-=binalpha: Une lettre seule, pour les index de titles etcoctal: Un nombre préfixé avec un 0 sera reconnu comme étant en base 8hex: Un nombre préfixé avec 0x sera reconnu comme étant en base 16bin: Un nombre préfixé avec 0b sera reconnu comme étant en base 2unsigned: Le tiret devant un nombre est ignoré et est reconnu comme étant un nombre positif
a: Rentre en mode édition au caractère suivanti: Rentre en mode édition sous le curseurA: Rentre en mode édition à la fin de la ligneI: Rentre en mode édition devant le premier caractère visible de la ligneR: Rentre em mode remplacement sous le curseur
Les registres sont des tampons mémoire qui servent à enregistrer du texte pour un usage ultérieur. Ils sont nommés avec les lettres de l’alphabet et certains registres sont prédéfinis avec un comportement particulier.
a-z: Les registres d’utilisation générale que l’on peut invoquer à souhaits0-9: Historique de registres quand on copie une ligne,0étant le registre le plus récent": Registre temporaire, utilisé quand on fait une suppression notamment=: Registre d’expression, permet de saisir une expression qui sera évaluée et utilisée en tant que texte
dl: Supprimer un caractèredd: Supprimer une ligned4d: Supprimer 4 lignesdi(: Supprimer à l’intérieur des parenthèsesdib: Supprimer à l’intérieur du bloc (parenthèses)da(: Supprimer les parenthèses et son contenudgn: Supprimer la prochaine occurrence de la recherchedn: Supprimer jusqu’à la prochaine occurrence de la recherche
Il y a aussi d’autres objets que l’on peut utiliser pour la suppression ou d’autres action
e: jusqu’à la fin du motw: jusqu’au début du mot suivantE: Avant le prochain espaceW: Après le prochain espacet: Supprimer le contenu d’un tag XMLs: Supprimer la phrasep: Supprimer le paragraphe
Pendant le mode d’édition, certains raccourcis changent :
- : Passer en mode Commande pour la prochaine frappe
- : Indenter la ligne
- : Désintenter la ligne
- : Insérer le caractère tabulation
- : Insérer le caractère retour chariot
- <C-[> : Insérer le caractère échap
- : Insérer le caractère retour (backspace)
:setlocal spell spelllang=fr: Active la correction orthographique et définit le dictionnaire sur Françaisz=: Affiche une liste de suggestion de correction du mot sous le curseur (correction orthographique en anglais par défaut)zg: Ajouter le mot sous le curseur au dictionnairezw: Retirer le mot sous le curseur du dictionnaire
En mode insertion, on peut également taper s pour afficher la liste de suggestion
On peut réduire certaines portions de code pour les masquer et parcourir le code plus vite. On peut les ouvrir et les fermer, les inclure dans d’autres replis et les supprimer.
zf[unité]: Créer un replis. On peut utiliser différentes unités, comme4jpour les 4 lignes suivantes, ou%pour tout ce contenu de la parenthèse, crochet ou accolade.zo: Ouvre un replis fermé.zO: Ouvre tous les replis sous le curseur.zc: Ferme un replis ouvert.zM: Ferme tous les replis du document.zd: Supprime le repli sous le curseur.zE: Supprime tous les replis du document.zj: Déplace le curseur au prochain repli.zk: Déplace le curseur au prédédent repli.zm: Augmente le niveau du repli.zr: Réduit le niveau du repli.[z: Déplace le curseur au début du replis.]z: Déplace le curseur à la fin du replis.
<C-w>s: Split horizontal<C-w><C-w>: Focus fenêtre suivante<C-w><C-W>: Focus fenêtre précédente<C-w>r: Faire défiler les fenêtres horizontalement (comme dans un carousel)<C-w>R: Faire défiler les fenêtres verticalement<C-w>L: Déplace la fenêtre complètement à droite<C-w>H: Déplace la fenêtre complètement à gauche<C-w>K: Déplace la fenêtre tout en haut<C-w>J: Déplace la fenêtre tout en bas<C-w>T: Déplacer la fenêtre dans un nouvel onglet:sb#: Ouvrir le buffer # dans une nouvelle vue splitée horizontalement:vert sb#: Ouvrir le buffer # dans une nouvelle vue splitée verticalementgt: Naviger à l’onglet suivantgT: Naviger à l’onglet précédent:resize 20: Redimensionner la fenêtre courante à 20 caractère de haut:vertical resize +8: Redimensionner la fenêtre courante de 8 caractères de plus en largeur:tabnew [fichier]: Ouvre le [fichier] dans un nouvel onglet:tabm 0: Déplacer l’onglet à la position 0:tabm: Déplace l’onglet à la fin de la liste
Les buffers servent à gérer les différents fichiers ouverts, ils sont identifiés par leur nom ou un identifiant unique.
:ls: Liste les fichiers ouvert:badd: Ouvrir un fichier sans l’afficher:bdelete file1: Retire le fichierfile1du buffer (Fermer un fichier):bdelete 2: Retire le buffer numéro 2 de la liste:3,5bdelete: Retire les fichiers 3, 4 et 5 du buffer:bwipeout: Similaire àbdeletemais retire réellement la référence de la liste:bn: Afficher le buffer suivant:bp: Afficher le buffer précédent:b#: Afficher le buffer ouvert précédement<C-6>: Raccourci pour ouvrir le buffer précédement affiché
:tag [mot]: Déplace le curseur à la déclaration du symbolemot, change de fichier si nécessaire:tselect [mot]: Affiche la liste des déclarations du symbolemot, pratique pour différencier les homonymes
:set hls: Surligne les résultats de recherche:set number|nu: Affiche les numéros de ligne:set relativenumber|rnu: Affiche le nombre relatif de ligne par rapport au curseur:set modifiable: Permet la modification du document (activé par défaut)
Peuvent êtres désactivés en ajoutant no en suffixe de l’option
:m20: Déplace la ligne courante à la ligne 20:m+20: Déplace la ligne courante de 20 lignes vers le bas:m'ma: Déplace la ligne courante à la ligne du marqueura
:a[ppend]: Passe en mode ajout de texte dans la ligne de commande, jusqu’à ce qu’un point (.) seul sur une ligne termine la commande, alors le texte est ajouté après le curseur.:i[nsert]: Passe en mode insertion de texte dans la ligne de commande, jusqu’à ce qu’un point (.) seul sur une ligne termine la commande, alors le texte est ajouté sous le curseur.
:changes: Affiche la liste des changements du buffer actuel. On peut utiliserg,etg;pour naviguer en avant/arrière aux positions des derniers changements. La liste est persistante au fil des sessions.
La commande :norm effectue les frappes suivantes comme si elles étaient effectuées en mode normal. Pratique pour transformer des séries de touches en commandes.
:norm 5j: Déplace le curseur de 5 lignes vers le bas.
La commande :g effectue une commande Ex par ligne de manière globale.
:g/<pattern>/: Affiche toutes les lignes qui comportent le pattern (par défaut, utilisemcomme commande):g/<pattern>/d: Supprime toutes les lignes qui comportent le pattern:10,20g/<pattern>/d: Supprime toutes les lignes qui comportent le pattern de la ligne 10 à 20
:s/mot/word: Remplace le premiermotparworddans la ligne:s/mot/word/g: Remplace toutes les occurrences demotparworddans la ligne:%s/mot/word/g: Remplace toutes les occurrences demotparworddans tout le document:%s/mot/word/gc: Remplace toutes les occurrences demotparworddans tout le document en demandant confirmation à chaque occurrence:<10,17>s/mot/word/gc: Remplace toutes les occurrences demotparwordde la ligne 10 à 17 en demandant confirmation à chaque occurrence
Fonctionne avec le mode Visuel.
On peut tout à fait remplacer le / par un autre délimiteur (comme %, $ ou #).
_apiService.GetShopDetails(_decodeJwt.data.id_org_internal);
La commande :vimgrep permet de chercher du texte dans l’ensemble des fichiers du dossier et sous-dossiers. Il suffit de l’invoquer comme ci-dessous:
:vimgrep "text" **/*.java: Cherche le mot "text" dans tous les fichiers java du projet:cw,:copen: Ouvrir le panneau des correspondances:cclose,:ccl: Ferme le panneau des correspondances:cnext,:cn: Affiche la prochaine occurrence dans le fichier à la ligne correspondante:cprev,:cp: Affiche la précédente occurrence dans le fichier à la ligne correspondante
Le gestionnaire de fichier intégré à Vim. Plusieurs manières pour l’invoquer :
:Explore[!]: explore en full screen, Hsplit si fichier non enregistré, Vsplit si!:Hexplore[!]: explore en Hsplit en bas, en haut si!:Vexplore[!]: explore en Vsplit à gauche, à droite si!:Sexplore[!]: explore en Hsplit en haut, en Vsplit à gauche si!:Texplore: explore dans un nouvel onglet:Lexplore: tout commeVexploremais ouvre le fichier dans la fenêtre invocatrice
On peut ajouter le chemin racine en premier paramètre.
Une fois dedans :
u: Revenir en arrière-: Parcourir le dossier parentp: Ouvre un aperçu<C-w>z: Ferme l’aperçugh: Bascule la visibilité des fichiers cachésR: Renommer un fichier%: Créer un nouveau fichier dans Vimmt: Définit le dossier cible (pour la prochaine opération)mf: Marque un fichier/dossier (pour la prochaine opération)mc: Copier les éléments marquésmm: Déplacer les éléments marquésd: Créer un dossierD: Supprimer un fichier/dossier
Ressources:
Rechercher dans des fichiers. S’utilise comme ça : [L]Ack [fichier] [pattern]
Permet aux pluging de pouvoir être répétées avec .. (github)
Entoure les mots/objets avec des guillemets, parenthèses, balises html… (github)
Ajoute les parenthèses, crochets et accolades correspondantes automatiquement. (LunarWatcher/auto-pairs)