
Des règles telles que celles qui précèdent peuvent s'appliquer en général aux objets texte :
Ces choses peuvent de ce fait être utilisées de manière semblable à
|
|
/foobar n va vers le prochain résultat N va vers le précédent résultat # recherche vers l'arrière le mot sous le curseur * recherche vers l'avant le mot sous le curseur |
La commende remplacer est lègérement plus compliquée. Cependant, dans des mains adroites, elle peut s'avérer sans égale. La syntaxe de la commande remplacer est la suivante :
:[range]s[ubstitute]/pattern/string/[options]
La plage est un argument très interessant à manier. Ici nous observons la commande :help range de vim pour voir ce qu'on peut faire.
|
Range Ce que cela signifie ------ -------------- {number} un nombre de ligne absolu . la ligne courante $ la dernière ligne du fichier % égal à 1,$ (le fichier entier) * égal à '<,'> (l'aire de vision) 't la position du marqueur mark t (en minuscule) /{pattern}[/] la ligne suivante où (le motif) correspond ?{pattern}[?] la ligne précèdente où (le motif) correspond \/ la ligne suivante où le motif de recherche précèdemment utilisé correspond \? la ligne précèdente où le motif de recherche précèdemment utilisé correspond \& la ligne suivante où le motif de remplacement précèdemment utilisé correspond |
La plupart des commandes de remplacement dans vim sont souvent écrites de telle sorte :%s/old_string/new_string, pour des raisons évidentes.
Examinons de nouveau l'aide de vim pour obtenir les options (en bref) :
|
Option What it means ------ -------------- c Interroge avant le remplacement. (Vérifie) e N'affiche pas de messages d'erreur si un tel modèle n'est pas trouvé. g Global (remplace toutes les occurrences dans la ligne). i Ignore la casse. I N'ignore pas la casse. n Ne remplace pas. Renvoie seulement le nombre de correspondances réussies. |
Pour, par exemple, un remplacement de ce modèle
:1,'b/dog/cat/ceg
remplacera dog avec cat après avoir vérifié avec vous, pour toutes les occurences de cette ligne, depuis la ligne 1 vers la ligne où le marqueur est défini en tant que b. Aucune erreur ne sera affichée si dog n'est pas trouvé.
Réfèrez-vous à la section "Prise en charge de répertoires multiples" pour remplacer et rechercher parmis plusieurs fichiers
Pensez à la puissance des frappes tels que les combos dans un jeu de combattants de style arcade. Cela vous aide à faire plusieurs tâches triviales et répétitives avec deux touches combinées. La signification de chacune des touches est déjà connue, juste comme celle des frappes légères et des coups de pied violents. Les placer ensemble de façon spécifique produit plusieurs résultats souhaitables. On illustre quelques uns d'entre-eux de la manière suivante.
|
xp - intervertit le caractère courant et le suivant ddp - intervertit la ligne courante et la suivante A; - ajoute un point virgule à la fin de la ligne. >> - augmente l'indentation de la ligne courante. << - diminue l'augmentation de la ligne courante. |
Souvent, les programmeurs ou les développeurs ont plusieurs fichiers dans leurs mémoires tampon. Je suppose que vous savez comment dédoubler des fenêtres ainsi que tout ce qui s'ensuit. Sinon, vous pouvez lire le tutorial Vim :help vsplit
À partir de vim 7.0, les onglets sont pris en charge. Les onglets peuvent être ouverts avec
:tabnew file.txt
Pour parcourir les onglets, on pourrait utiliser tabnext (:tabn) et :tabprevious (:tabp). On peut par défaut, également se diriger vers l'onglet précèdent ou prochain en employant Control+PgUp et Control+PgDwn à condition naturellement qu'il n'y ait pas d'autres programmes ouverts sur cette application. (Gnome-terminal est un programme commun avec plusieurs onglets.)
Une autre manière d'ouvrir et d'éditer plusieurs fichiers est la mémoire tampon. N'importe quel fichier que vous ouvrez est dans votre mémoire tampon jusqu'à ce que vous le fermiez. Pour ouvrir un fichier dans une mémoire tampon, employez simplement la commande d'édition usuelle
:e foo.txt
Pour prendre en charge la mémoire tampon, on peut trouver utile les commandes suivantes :
|
:bfirst change pour la première mémoire tampon :bn change pour la prochaine mémoire tampon :bp change pour la précèdente mémoire tampon :blast change pour la dernière mémoire tampon :ls liste toutes les mémoires tampon actuellement ouvertes :buf foo.txt change pour foo.txt dans la mémoire tampon |
La puissance principale des mémoires tampon apparait lors de leur prise en charge dans un batch
Vim intègre la commande bufdo, qui vous permet d'exécuter une commande pour tous les fichiers de votre mémoire tampon
:bufdo {cmd}
En citant le manuel de vim,
Ce qu'il fait fondamentalement est
:bfirst
:{cmd}
:bnext
:{cmd}
etc ...
Quand le fichier courant ne peut être abandonné et que [!] n'est pas prèsent, la commande échoue. Quand une erreur est détectée sur une mémoire tampon, d'autres mémoires ne seront pas parcourues. Les mémoires non listées sont ignorées. La dernière mémoire (ou quand une erreur survient) devient la mémoire courante. {cmd} peut contenir | pour enchaîner plusieurs commandes. {cmd} ne doit pas supprimer des mémoires tampon ou ajouter des mémoires dans la liste des mémoires.
Pour chercher dans plusieurs fichiers, on fera simplement
:bufdo /searchstring/
Pour chercher et remplacer par exemple, on pourrait faire
:bufdo %s/oldtext/newtext/ge
Il existe d'autres choses intèressantes que l'on peut faire avec la mémoire tampon. On peut sauvegarder son projet entier dans une archive en faisant quelque chose de semblable à
:silent bufdo !tar -rvf backup.tar %
Naturellement, les fichiers ne doivent pas être ouverts dans vim, vous pourriez définir la variable args dans vim, et employer semblablement argdo.
Par exemple, pour indenter tous les fichiers dans foobar/, on pourrait faire
:args foobar/*
:argdo !indent % | update
update écrit seulement dans le fichier si des modifications sont faîtes
Vim gère à présent l'omni-completion de même que la complétion intelligente de la mémoire tampon. Les commandes suivantes pourraient résumer cela :
Avec Vim 7.0, ce dernier prend en charge le contrôle orthographique intégré. Pour l'activer, saisissez simplment
Cette section énumère quelques commandes diverses qui ne conviendraient nulle par ailleurs dans ce document.
Vim peut aussi incrémenter et décrémenter des nombres pour vous. C'est extrêmement utile lors de l'écriture de macros gènériques plus grandes. Comme d'habitude, des nombres précédés par un 0 sont considérés comme octaux ; des nombres précédés par un 0x sont considérés comme hexadécimaux. Les nombres ne commençant pas par zéro sont décimaux
Associer des commandes et leurs abbréviations est une partie essentielle de la ligne de survie du programmeur dans vim
Des commandes peuvent être associées de la façon suivante :
:map
Cela associera la commande sous deux modes. Employez nmap, si vous souhaitez associer une commande en mode normal seulement et imap en mode insertion.
Par exemple, on pourrait considérer
:nmap \cc !gcc\ -g\ %
Cela signifierai que saisir \cc (rapidement) en mode normal exécuterait la compilation via gcc sur le programme courant en permettant le débogage
Les abréviations sont réellement des choses utiles à avoir dans son arsenal. Elles vous permettent de remplacer un grand mot par un plus petit ou de réparer vos erreurs de saisie communes. Un exemple pourra établir ceci assez clairement :
:iab cs Computer Science.
:iab mroe more
Cela remplacera cs (suivi par un espace) par Computer Science chaque fois que je le saisis et remplacera mroe par more. Le i représente le mode insertion et le ab abbréviation. On pourrait saisir :ab aussi bien, bien que cela ne soit pas recommandé. (cela remplacerai une de nos commandes \cs par \Computer Science.)
Pour supprimer l'association ou l'abbreviation ci-dessus, saisissez simplement
:unmap \cc or
:unab cs
respectivement
Si vous souhaitez que ces abbreviations où ces associations perdurent parmi les diverses utilisations de vim, placez-les simplement dans votre ~/.vimrc
Comme exemple final, prenons l'association de Y vers une manière plus intuitive de l'utiliser. On pourrait faire
:map Y y$
pour cette session et pour l'enregistrer de façon permanente, ajoutez
map Y y$
à votre ~/.vimrc
Complétion
Ctrl-n - compléte (une petite fenêtre devrait apparaître). Vous pouvez l'examiner avec
Ctrl-n et Ctrl-p. Continuer simplement à saisir quand vous avez fini.
Ctrl-x f - compléte ce nom de fichier.
Ctrl-x i - compléte depuis les fichiers inclus.
Correction orthographique
:set spell
et pour le désactiver
:set nospell
Vous pouvez parcourir le fichier à la recherche d'erreurs orthographiques en utilisant ]s et [s . Vous pouvez les corriger en saisissant z= . Cela affichera une liste des possibilités dans laquelle vous pourrez choisir.
Commandes diverses
Shift+j (ou J) - Cela ajoutera la ligne précèdente à la fin de la ligne courante. Apprenez à l'utiliser convenablement. C'est ce que des utilisateurs d'autres éditeurs exécuteraient avec
<End><>. Une mnémonique pour Joindre la précèdente ligne avec la ligne courante.
Shift+k (ou K) - Affiche la page de manuel pour le mot sous le curseur
~ - Modifie la casse du caractère sous le curseur et se déplace vers le prochain caractère.
. - répète la dernière commande, quelle qu'elle soit. (La commande peut être l'insertion d'une phrase ou même d'une macro). Ce que nombre d'éditeurs appeleraient répétition
.
Control+A - Incrémente le nombre sous le curseur
Control+X - Décrémente le nombre sous le curseur