{{tag>Logiciel}} ====== Mémo des commandes Vim ====== Ceci est une liste des commandes principales regroupées sur un page. Ces commandes servent tous les jours et cette page sert de pense-bête. Vim dispose de trois modes : * le mode normal ou commande (par défaut) ; * le mode insertion, signalé par -- INSERT -- en bas de la fenêtre ; * le mode visuel, signalé par -- VISUAL {,LINE,BLOCK}--. Le passage d’un mode à l’autre est résumé par : #-------------# i,I,a,A,o,O,r,R,s,S #--------------# | +---------------------->| | | Mode Normal | | Mode Insert | | |<----------------------+ | #----+--------# #--------------# | ^ | | | | | | v,V | | | | | | | | v | #--------+----# | | | Mode Visual | | | #-------------# ===== Insertion ===== Le mode insertion permet d'éditer un fichier. On sort du mode insertion en appuyant sur Esc (on revient alors en mode commande) * **i** : insère à la postion du curseur * **I** : insère au début de la ligne * **a** : insère à la position à droite du curseur * **A** : insère à la fin de la ligne * **J** : Joint la ligne suivante au bout de la ligne courante ===== Enregistrement et sortie ===== * **:w** : sauvegarde le fichier * **:w** nomfich : sauvegarde le fichier sous le nom nomfich (ATTENTION APRES ON N'EDITE PAS nomfich !!! ON CONTINUE AVEC L'ANCIEN !!) * **:q** quitte sans sauver (signale si fichier modifié avant de quitter) * **:q!** quitte sans sauver et sans signalement de fichier modifié * **:x** ou **:wq** : sauve et quitte ===== Définition du type de fichier ===== Ceci redéfinit le type de fichier si nécessaire * **:set fileformat=unix** * **:set fileformat=dos** ===== Déplacement ===== * **/mot** : Cherche le mot "mot" * **:20** : Va à la ligne numéro 20 * **20|** : Va à la 20è colonne sur la ligne * **k** : Déplace le curseur vers le haut (ou utiliser les flèches si elles fonctionnent) * **l** : Déplace le curseur vers la droite (ou utiliser les flèches si elles fonctionnent) * **j** : Déplace le curseur vers le bas (ou utiliser les flèches si elles fonctionnent) * **h** : Déplace le curseur vers la gauche (ou utiliser les flèches si elles fonctionnent) * **G** : Déplace le curseur à la fin du fichier * **'.** : Retourne à la dernière ligne modifiée * **`.** ou **g**; : Retourne au dernier caractère modifié ===== Définition des variables set ===== * **:set {no}qqchose** : définit (ou annule) une fonctionnalité de vim * **:set ic** : Rend les recherches insensibles à la casse ===== Alignement ===== * **:set textwidth=80** : Largeur d'une ligne du fichier (si la ligne est trop longue, vim renvoie a la ligne automatiquement EN MODE INSERTION !!) * **:{range}center [width]** : aligne au centre selon la range choisie et width indique la largeur de la page. * **:center** : aligne le texte tape au centre. * **:right** : aligne le texte à droite * **:left** : aligne le texte à gauche ===== Indentation ===== * **:set nocindent** : Enlève l'indentation pour les programmes en C (Utile avant un copie/colle avec la souris) * **:set noautoindent** : Enlève l'indentation pour les programmes en C (Utile avant un copie/colle souris) * **:set nopaste** : Enlève l'indentation pour les programmes en C (Utile avant un copie/colle souris) * **:set autoindent** : Indentation automatique * **:set shiftwidth=4** : Largeur de l'indent (8 car. par défaut) * **:set softtabstop=4** : Largeur de l'indent quand on pose un TAB * **:set tabstop=3** * **:retab 8** Réaligne un code en tabulation a la valeur 3 a la place de la valeur 8 * **/* vim: set ts=4 sw=4: */** : Placé dans un fichier PHP, il est recallé avec 4 cars. par TAB!!! * **1GVG=** : indente le code du fichier complet ===== Remplacement ===== * **:[range]s/from/to/[flags]** : * flags intéressants : * **g** : pour toutes les occurrences sur la ligne * **c** : demande la validation de la modification * **from** : pattern * **:s/^the/these/** : recherche en début de ligne * range : * **:1,5s/this/that/g** : change sur les lignes 1 a 5 * **:.,$s/yes/no/** : change depuis la ligne courante jusqu'à la fin du fichier * définir des marques : * **mt** : mark top (marque le sommet du bloc) * **mb** : mark bottom (marque la fin du bloc) * **:'t,'b** : range inclus dans les marques ===== Effacement ===== * **dd** : efface (delete) ligne * **dw** : efface mot (delete word) * **d$** : efface jusqu'a la fin de la ligne * **d^** : efface jusqu'au debut de la ligne * **x** : effacement du caractère sous le curseur * **X** : effacement du caractère à gauche du curseur ===== Copie / Colle ===== * **yy** : Sélectionne ligne * **yw** : Sélectionne word * **y$** : Sélectionne jusqu'à la fin de la ligne * **y^** : Sélectionne jusqu'au début de la ligne * **p** : colle le contenu de la copie ou de l'effacement en dessous du curseur * **P** : colle le contenu de la copie ou de l'effacement au dessus du curseur ===== Remplacement ===== * **cd** : Change ligne * **cw** : Change word * **c$** : Change jusqu'à la fin de la ligne * **c^** : Changement jusqu'au début de la ligne ===== Mode Visuel ===== * **v** : Passe en mode visuel (par mot) * **V** : Passe en mode visuel (par ligne) * Ctrl+V : Passe en mode visuel (par bloc)\\ Sélectionne les lignes a partir du curseur\\ Taper ensuite la touche selon l'action que vous souhaitez faire de la sélection. Ex. : d pour effacer, y pour copier ... ===== Répétition ===== * **.(point)** : Répète la dernière action ===== Affichage des caractères tab et retour chariot ===== * **:set list** : Affiche ^I pour les tabs et $ pour les retour chariots ===== Coloration Syntaxique ===== * **:syntax enable** : active la coloration syntaxique (si possible)\\ Les diverses colorations peuvent être vues dans : /usr/share/vim/vimXX/syntax\\ Si vi ne détecte pas le type automatiquement faire : * **:set filetype=fortran** : si le type est fortran ===== 80 Caractères par ligne dans le HTML ===== Mettre ces deux lignes quelque part. Attention, garder sur deux lignes !! ===== Augmenter/Diminuer un nombre ===== Si on appuie sur CTRL+A, on incrémente le chiffre sous le curseur et CTRL-X décrémente le chiffre sous le curseur, ce en mode commande. ===== Réorganiser un paragraphe pour qu'il soit dans les 80 colonnes ===== * :set tw=80 gqapATTENTION : Il s'agit de paragraphe, les listes numériques ne sont pas considérées comme paragraphe ! ===== Split Ecran ===== * **:vsp nomfich** : Partage l'écran en deux verticalement, avec chargement de nomfich * **:hsp nomfich** : Partage l'écran en deux horizontalement, avec chargement de nomfich * [CTRL]+w : Change de split ===== Voir les différences entre deux fichiers en couleur ===== * $ vimdiff fichier1 fichier2 : il s'agit de l'appel de vimdiff dans la console, pas dans vim... ===== Édition de plusieurs fichiers ===== * **:bn** : aller sur le fichier (buffer) suivant * **:bp** : aller sur le fichier précédent ===== Développement ===== * Ctrl+N : affiche les variables déjà existantes dans le code pour une fonction * **ga** : affiche les correspondances décimale, hexadécimale, octale du caractère sous le curseur (le code hexa peut être utilisé en HTML avec ª) ===== Folding ===== Permet de faire des sections dans le code pour le plier. Une section commence par %%{{{%% et finit par %%}}}%%. En PHP, penser à mettre en commentaires avec %%/* {{{ */%% et %%/* }}} */%% * **zc** : Pour plier une section * **za** : Pour changer le pliage (de fermé à ouvert ou de ouvert à fermé) * **zo** : Pour déplier une section * **zM** : Pour tout plier * **zR** : Pour tout déplier ===== Gestion des onglets ===== * **:tabnew** : crée un onglet vide * **:tabnext** : passe à l'onglet suivant ===== B.A. BA ===== ==== Mode normal ==== === Commencer l’insertion de texte === * sur une nouvelle ligne sous la courante :o * sur une nouvelle ligne au-dessus de la courante :O === Enregistrer, quitter === * fermer tous les fichiers/fenêtres ::qa * ZZ * enregistrer et fermer tous les fichiers ::xa === Écrire dans un fichier file === * tout le fichier, puis quitter ::wq! {file} * la sélection ::{range}w {file} * ajouter la sélection au fichier ::{range}w >> file Attention, :{range}wsauvegarde l’intervalle dans le fichier courant. === Éditer un fichier === * le fichier courant (recharger) ::e * le fichier courant, sans tenir compte des modifs ::e! * le fichier file ::e {file} === Insérer === * insère le fichier file sous le curseur ::r file * insère le résultat de la commande cmd sous le curseur ::r! cmd === Ouvrir un fichier === * ouvrir file ::o file === Enregistrer dans un fichier === * :saveas file ==== Mode insertion ==== * Écrire du texte… * Quitter, repasser en mode normal :Esc * Complétion : * complète le mot avant le curseur :C-n * complète le mot après le curseur :C-p * complète la ligne :C-xC-l * Complétion à partir d’un dictionnaire :C-xC-k si :set dictionary=/usr/share/dict/french * Indentation : * indente la ligne :C-t * dédente la ligne :C-d * Suppressions * supprime le mot avant le curseur :C-w * supprime le texte de la ligne courante :C-u * Insérer une espace insécable * C-k espace espace * C-k Shift+N Shift+S * Digraphes :C-k c1 c2 * taper :digraphs pour voir la liste complète. ==== Mode visuel ==== Le mode visuel permet de sélectionner des objets. ===== Mode commande, opérateurs, actions ===== ===== Rechercher, remplacer ===== ===== Commandes externes ===== ===== Outils d’édition ===== ===== Productivité ===== ===== Voir aussi ===== * **(fr)** [[http://nmesnier.free.fr/vim.html]] * **(fr)** [[https://connaissances.fournier38.fr/entry/M%C3%A9mo%20des%20commandes%20Vim]] ---- //Basé sur << [[http://nmesnier.free.fr/vim.html|Mémo Vim]] >> par Nicolas Mesnier.//