VIM-HOWTO Et n'oubliez pas: "As you go through this tutor, do not try to memorize, learn by usage." TODO: - explication des modes - import des infos de vimtutor - combinaisons des commandes (exemple: y356p, ou maNmb:'ad'b) => DUR DUR - execution de commandes, make - insertion de resultat d'execution de commandes, de fichiers, ... - "mode hexadecimal" I Fonctionnement 1°) Modes d'utilisation - commande Mode initial, on y accède par la touche . Ce mode permet de modifier le comportement de VIM. - édition Matérialisé par "-- INSERT --", ou "-- REPLACE --", ce mode permet l'insertion au clavier de données. On y accède ainsi, à partir du mode commande: a - insertion à partir de la position suivant le curseur i - insertion à partir de l'emplacement du curseur o - ajout d'une ligne en-dessous du curseur, et insertion à partir d'elle +a - insertion à partir de la fin de la ligne +i - insertion à partir du début de la ligne +o - ajout d'une ligne au-dessus du curseur, et insertion à partir d'elle +r - remplacement à partir de l'emplacement du curseur - "visual" Il permet de sélectionner du texte à l'aide des flèches. On y accède ainsi, à partir du mode commande: v - passage en mode "visual" 2°) Variables d'environnement Il est possible de définir ou modifier des variables d'environnement, affectant le comportement de VIM. Certaines peuvent prendre une valeur, d'autres juste être présentes ou non. En mode commande: :set - liste et valeur des variables en cours :set - initialiser la variable "nom" :set = - affecter une valeur à une variable :set ! - retirer la variable "nom" La complétion automatique est supportée, à l'aide de la touche . En voici une liste, non exhaustive, regroupée par thème (quand elles nécessitent une valeur, le signe '=' y a été ajouté): - méta information * hlsearch mettre en valeur les chaînes correspondant à la dernière recherche * ruler afficher en bas de l'écran la position du curseur * showcmd afficher les commandes au cours de la frappe - mise en page * tabstop taille des tabulations * textwidth largeur du texte - coloration syntaxique * background= schéma de couleurs à utiliser suivant le fond { "", "dark" } * syntax= nom de la coloration syntaxique à utiliser (maniaque, j'utilise parfois le mode "whitespace") - indentation * autoindent calée sur les espaces de début de ligne * cindent appliquée suivant la sémantique du C * cinoptions= affinage du comportement avec "cindent" activée 3°) Combinaison de commandes VIM est capable de combiner à volonté la quasi-totalité des commandes présentées ici. Par exemple, pour répéter 10 fois l'effet d'une commande, il suffit de la préfixer par '10'. Il est également possible, si approprié, d'expliciter un déplacement pour l'effet d'une commande, à l'aide de 'm' puis ''', ou d'un nombre de déplacements suivi du sens. II Meta Information 1°) Affichage principal VIM affiche en continu en bas une ligne d'information. On y trouve typiquement les informations suivantes: [] , +g - affiche des informations sur le fichier en cours 2°) Affichage du texte VIM dispose de capacités avancées de coloration syntaxique. Elle est définie grâce aux variables citées ci-dessus. Il est également possible de forcer juste l'affichage, ou aussi le fichier, à passer à la ligne. Je ne connais pas encore le fonctionnement exact, mais je vous invite à consulter les pages suivantes: :help wrap :help textwidth III Placement En mode insertion, on peut se déplacer avec les flèches. Mais parfois le clavier n'en dispose pas, ou leur comportement est bizarre. On peut aussi les considérer trop loin de la position habituelle des mains sur le clavier ;-). Ainsi afin de se positionner à un emplacement précis, on pourra utiliser le mode commande. 1°) Déplacement du curseur Il est possible de se servir des flèches, mais les touches suivantes en font autant: h - caractère précédent (jusqu'à fin de ligne) j - ligne suivante k - ligne précédente l - caractère suivant (jusqu'à fin de ligne) - caractère précédent - caractère suivant ^ - début de la ligne - début de la ligne $ - fin de la ligne - fin de la ligne - début de la ligne suivante +m - début de la ligne suivante 2°) Déplacement avancé On peut également se déplacer de mot en mot: b - début du mot précédent w - début du mot suivant e - fin du mot suivant Et encore: % - sur "()[]{}" va à la correspondance 3°) Ancres On peut également poser une ancre, puis y retourner: m - assigner une ancre à la lettre ' - se positionner à l'ancre de la lettre 4°) Recherche / - rechercher la prochaine occurence du texte / - rechercher la prochaine occurence du dernier texte cherché ? - rechercher l'occurence précédente du texte ? - rechercher l'occurence précédente du dernier texte cherché n - rechercher la prochaine occurence du sens voulu N - rechercher l'occurence précédente du sens voulu Ces variables influent sur le déroulement de la recherche: ignorecase - si définie, la recherche est insensible à la casse NOTE: il est possible de consulter et utiliser les dernières chaînes recherchées avec ou , dans le menu '/' ou '?'. IV Edition 1°) Couper d - couper jusqu'à l'emplacement désiré dd - couper la ligne entière 2°) Copier y - copier jusqu'à l'emplacement désiré yy - copier la ligne entière 3°) Coller p - coller après la position du curseur P - coller à la position du curseur 4°) Remplacer En mode commande: s// - remplacer la première occurence de "a" par "b" sur la ligne s///g - remplacer toute occurence de "a" par "b" sur la ligne ,s///g - remplacer "a" par "b" entre les lignes l1 et l2 %s///g - remplacer "a" par "b" dans tout le fichier En ajoutant 'c' après le troisième '/' une confirmation est demandée à chaque fois. 5°) Annuler/Répéter u - annuler la dernière action +r - refaire la dernière action annulée 6°) Réindenter >> - réindenter vers la droite << - réindenter vers la gauche == - réindenter automatiquement