*usr_20.txt* Pour Vim version 6.1. Dernière modification: 30 Avril 2003
Manuel de l'utilisateur VIM - par Bram Moolenaar
Saisir rapidement des commandes
Certains fonctionnalités de Vim permettent de saisir plus rapidement des comman-
des. Les commandes précédées d'un deux-points ":" peuvent être abbrégées, édi-
tées et répetées. Le complétement est disponible à peu près partout.
|20.1| Edition en mode ligne de commande
|20.2| Abbréviations en mode ligne de commande
|20.3| Complètement en mode ligne de commande
|20.4| Historique de la ligne de commande
|20.5| Fenêtre de la ligne de commande
Chapitre suivant: |usr_21.txt| Sortir et revenir
Chapitre précédent: |usr_12.txt| Trucs et astuces
Table des matières: |usr_toc.txt|
==============================================================================
*20.1* Edition en mode ligne de commande:
Lorsque vous utilisez une commande précédée d'un ":" ou que vous recherchez une
chaîne de caractère avec / ou ?, Vim positionne le curseur en bas de l'écran.
Là, vous tapez la commande ou le motif de recherche. Il s'agit du "mode ligne
de commande".
La façon la plus évidente de modifier la commande que vous êtes en train de
taper est d'utiliser la touche <---, qui efface le caractère avant le curseur.
Pour effacer un autre caractère, déplacez au préalable le curseur sur le
caractère visé.
Par exemple, vous avez tapé:Avant de tapez <Entree>, vous remarquez que "mache" devrait être "vache". Pour
corriger cela, vous tapez <FlecheGauche> 12 fois. Le curseur est maintenant
juste après le "m" de mache. Tapez <--- et "v" pour corriger:Maintenant, vous pouvez taper <Entree>. Vous n'avez pas besoin de ramener le
curseur à la fin de la ligne avant d'exécuter la commande.
Les touches les plus utilisées en mode ligne de commande sont:
<FlecheGauche> déplacement d'un caractère à gauche
<FlecheDroite> déplacement d'un caractère à droite
<SHIFT-FlecheGauche> ou
<CTRL-FlecheGauche> déplacement d'un mot à gauche
<SHIFT-FlecheDroite> ou
<CTRL-FlecheDroite> déplacement d'un mot à droite
CTRL-B or <Home> aller au début de la ligne
CTRL-E or <End> aller à la fin de la ligne
Remarque:
<SHIFT-FlecheGauche> (flèche gauche avec la touche SHIFT enfoncée) et
<CTRL-FlecheGauche> (flèche gauche avec la touche CTRL enfoncée) ne
fonctionne pas sur tous les types de clavier. Il en est de même pour
les autres combinaisons avec SHIFT ou CTRL.
Vous pouvez aussi utiliser la souris pour déplacer le curseur.
SUPPRESSION
Comme déjà vu, la touche <--- supprime le caractère avant le curseur. Pour
supprimer un mot entier, utilisez CTRL-W.
/le joli cochon
CTRL-W
/le joli
CTRL-U supprime tout le texte, ce qui permet de recommencer l'écriture d'une
nouvelle commande.
REMPLACEMENT
La touche <Insert> permet de passer du mode d'insertion au mode de remplace-
ment. Si vous avez par exemple:
/le joli cochon
Deplacer le curseur au début de "joli" avec <SHIFT-FlecheGauche> deux fois
(ou <FlecheGauche> 11 fois, si <SHIFT-FlecheGauche> ne marche pas). Maintenant,
tapez <Insert> pour passer au mode de remplacement et tapez "grand":
/le grandcochon
Oups, nous avons perdu l'espace. Maintenant, n'utilisez pas <--- puisqu'il
supprimerait le "d" ( c'est différent dans le mode remplacement ). A la place,
tapez <Insert> pour passer du mode de remplacement au mode d'insertion, puis l'
espace:
/le grand cochon
ANNULATION
Vous pensiez exécuter une commande : ou / , mais vous vous êtes ravisé. Pour
se débarasser de ce que vous avez tapé, sans l'exécuter, tapez CTRL-C ou <Esc>.
Remarque:
<Esc> est la touche universelle pour "sortir". Malheureusement, dans
le bon vieux Vi, la touche <Esc> en mode ligne de commande exécutait la
commande! Même si on pourrait considérer cà comme un bug, Vim utilise
<Esc> pour annuler la commande.
Cependant, avec l'option 'cpoptions', Vim peut être compatible avec Vi.
Si vous utilisez une correspondance ( qui a peut-être été écrit pour
Vi ), <Esc> marche aussi comme dans Vi. En conclusion, l'utilisation
de CTRL-C marchera toujours.
Si vous êtes au début de la ligne de commande, et que vous tapez <---, la
commande est annulée. C'est la même chose si vous supprimez le ":" ou le "/"
du début de la commande.
==============================================================================
*20.2* Abbréviations en mode ligne de commande
Certaines commandes ":" sont vraiment longues à écrire. Nous avons déjà vu que
":substitute" pouvait être abbrégée en ":s". Il s'agit d'un méchanisme général,
car toutes les commandes ":" peuvent être abbrégées.
Comment les noms de commandes sont abbrégées ? Il y a 26 lettres, mais beaucoup
plus de commandes. Par exemple, ":set" commence aussi avec ":s", mais ":s" ne
sera pas l'abbréviation d'une commande ":set". Par contre, ":set" peut être
abbrégée en ":se".
Lorsque la forme courte d'une commande peut être utilisée pour deux commandes,
seule l'une d'entre elles est correcte. Il n'y a pas de logique pour reconnaître
les formes courtes, mais ces formes courtes sont mentionnées dans les fichiers
d'aide comme par exemple :Cela signigie que la forme abbrégée de ":substitute" est ":s". Les caractères
entre crochets sont optionnels. En effet, ":su" et ":sub" marcheront
aussi.
Dans le manuel utilisateur, nous utilisons soit le nom complet de la commande,
soit une version abbrégée qui reste néanmoins lisible. Par exemple, ":function"
peut être abbrégée en ":fu". Mais, comme la plupart des gens ne comprendront pas
cette forme abbrégée, nous utilisons ":fun". ( Vim n'a pas de commande ":funny",
sinon ":fun" aurait été ambigüe. )
Il est recommandé d'écrire dans les scripts Vim le nom complet de la commande.
Cela améliore sa compréhension lorsque vous y reviendrez plus tard pour le
modifier. Sauf peut-être pour quelques commandes très courantes comme ":w"
(":write") et ":r" (":read").
Une commande particulièrement dangereuse est la commande ":end", qui peut être
la forme abbrégée de ":endif", ":endwhile" ou ":endfunction". Donc, utilisez
toujours le nom complet.
NOMS COURTS DES OPTIONS
Dans le manuel utilisateur, le nom des options est toujours la version longue,
même si beaucoup d'options ont des formes abbrégées. Cependant, contrairement
aux commandes ":", il n'y a qu'une seule forme abbrégée valide par nom d'option.
Par exemple, la forme abbrégée de 'autoindent' est 'ai'. Ces deux commandes
sont donc équivalentes:Vous pouvez trouver la liste complète des noms d'options à cette page:
|option-list|.
==============================================================================
*20.3* Complètement en mode ligne de commande
Il s'agit de l'une des fonctionnalités de Vim qui est à elle seule une raison
de passer de Vi à Vim. Une fois que vous l'avez utilisé, vous ne pourrez plus
vous en passer.
Si vous avez par exemple un répertoire qui contient les fichiers :
info.txt
intro.txt
corpsdudocument.txt
Pour éditer le dernier fichier, vous utilisez la commande:Il est facile de se tromper. Une façon plus rapide est:Qui va réaliser la même commande. Qu'est-ce qui s'est passé ? La touche <Tab>
réalise un complètement automatique du mot avant le curseur, dans notre cas
"c". Vim regarde dans le répertoire et trouve un seul fichier qui commence par
un "c". Cela doit être celui que l'utilisateur recherche, et Vim complète donc
le nom du fichier pour vous.
Maintenant, tapez:Vim produit un "bip", et vous donne:Le bip signifie que Vim a trouvé plus d'un fichier qui correspond à votre
critère. Il utilise pour compléter la ligne de commande la première correspon-
dance trouvée, classée par ordre alphabétique. Si vous tapez <Tab> une nouvelle
fois, vous obtiendrez:Donc, si le premier <Tab> ne vous donne pas le fichier que vous désirez,
renouvelez cette opération. S'il y a encore d'autres correspondances, elles
sont toutes affichées, une par une. Si vous tapez <Tab> sur la dernière
correspondance, vous reviendrez sur ce que vous aviez initialement tapé:Ensuite, la liste reprend de nouveau. Vim parcourt donc des cycles sur la liste
des correspondances. Utilisez CTRL-P si vous désirez parcourir ce cycle en sens
inverse:
<------------------- <Tab> -------------------------+
|
<Tab> --> <Tab> -->
:edit i :edit info.txt :edit intro.txt
<-- CTRL-P <-- CTRL-P
|
+---------------------- CTRL-P ------------------------>
CONTEXTE
Lorsque vous tapez ":set i" à la place de ":edit i" et tapez <Tab> vous obtenez:
:set icon
Pourquoi n'obtenez vous pas ":set info.txt" ? C'est parce que Vim dispose d'un
complètement automatique en fonction du contexte. Le type de mots que Vim va
rechercher dépend de la commande tapée sur la ligne de commande. Vim sait que
vous ne pouvez pas utiliser un nom de fichier juste après une commande ":set",
mais que vous pouvez utiliser un nom d'option.
De même si vous tapez une nouvelle fois <Tab>, Vim va parcourir un cycle sur
toutes les correspondances.
Il y en a beaucoup, il aurait été préférable de taper plus de caractères pour
affiner le complètement :Donne:Maintenant, tapez "=" puis <Tab>:Que s'est-il passé ? Vim a utilisé pour le complètement la dernière valeur de
l'option. Maintenant, vous pouvez l'éditer.
Ce qui est complété avec <Tab> est ce que Vim attend à l'endroit du curseur.
Essayez juste de regarder pour voir comment cela marche. Dans certains cas, vous
n'obtiendrez pas ce que vous voulez, soit parce que Vim ne comprend pas ce que
vous voulez, soit parce que le complètement n'est pas implémenté pour le
contexte dans lequel vous êtes. Quand cela est le cas, vous obtiendrez l'inser-
tion du <Tab> (affichée comme ^I).
LISTE DES CORRESPONDANCES
Lorsque vous avez beaucoup de correspondances, vous aimeriez avoir une vue d'
ensemble. Il suffit de tapez CTRL-D. Par exemple, CTRL-D après:retourne:Vim retourne la liste des correspondances, et revient alors avec le texte que
vous avez tapé. Vous pouvez maintenant vérifier dans la liste si l'élément que
vous recherchez est présent. S'il n'est pas présent, vous pouvez utiliser la
touche <--- pour corriger le mot. S'il a beaucoup de correspondances, tapez
plus de caractères avant de presser la touche <Tab> pour compléter votre
recherche.
Si vous avez regardez attentivement la liste ci-dessus, vous aurez noté que
"incsearch" ne commence pas par "is". Par contre, "is" est le nom court de
"incsearch". (Beaucoup d'options ont un nom court et un nom long). Vim est assez
intelligent pour deviner que vous avez peut-être voulu utiliser le nom long de
cette option à la place de son nom court.
ENCORE PLUS FORT
La commande CTRL-L complète le mot vers la chaîne non-ambigüe la plus longue
possible. Si vous tapez ":edit i" et qu'il existe deux fichiers "info.txt" et
"info_backup.txt" vous obtiendrez ":edit info".
L'option 'wildmode' peut être utilisée pour changer la façon dont fonctionne le
complètement.
L'option 'wildmenu' peut être utilisée pour obtenir la liste des correspondances
sous la forme d'un menu.
Utilisez l'option 'suffixes' pour indiquer les fichiers les moins importants qui
doivent apparaître en bas des listes de fichiers.
L'option 'wildignore' indique les fichiers qui ne doivent pas être utilisés pour
le complètement.
Plus d'informations peuvent être trouvées à la page : |cmdline-completion|
==============================================================================
*20.4* Historique de la ligne de commande
Dans le chapitre 3, nous avons vu rapidement l'historique. Vous pouvez utiliser
la touche <FlecheHaut> pour rappeler une ancienne commande. <FlecheBas> vous
ramène aux commandes les plus récentes.
Il y a en fait quatre types d'historiques. Ceux que nous détaillons ici sont
celui des commandes ":" et celui des commandes de recherche "/" et "?". Les
commandes "/" et "?" utilisent le même historique, parce qu'il s'agit de deux
commandes de recherches. Les deux autres historiques sont ceux des expresssions
et de la ligne d'entrée de la commande input(). Voir |cmdline-history|
Si vous avez par exemple écrit une commande ":set", tapé dix commandes ":" puis
que vous voulez de nouveau exécuter la commande ":set". Vous pouvez presser ":"
puis dix fois la touche <FlecheHaut>. Il y a une façon plus rapide:Vim revient maintenant sur la première commande qui commence par "se". Il y a
de bonnes chances qu'il s'agira de la commande ":set" que vous recherchiez. Vous
ne devriez pas avoir à taper beaucoup de touches <FlecheHaut> (à moins que vous
n'ayez fait que des commandes ":set" ).
La touche <FlecheHaut> va utiliser le texte que vous avez déjà tapé pour filtrer
les lignes de l'historique. Seules les lignes qui correspondront seront utili-
sées.
si vous ne retrouvez pas la ligne que vous recherchiez, utilisez <FlecheBas>
pour revenir à ce que que vous aviez tapé, puis corrigez-le. Ou utilisez CTRL-U
pour tout redémarrer.
Pour voir toutes les lignes de l'historique :Il s'agit de l'historique des commandes ":". L'historique des recherches est
affiché avec cette commande :CTRL-P agira comme <FlecheHaut>, sauf qu'il ignorera ce que vous avez déjà tapé.
De la même manière, CTRL-N agira comme <FlecheBas>. CTRL-P est une abbréviation
de "previous" ( précédent ), CTRL-N est une abbréviation de "next" ( suivant ).
==============================================================================
*20.5* Fenêtre la ligne de commande
La saisie du texte sur la ligne de commande ne fonctionne pas de la même manière
que la saisie de texte en mode Insertion. Vous ne disposez pas de beaucoup de
commandes pour modifier le texte. Pour la plupart de commandes, cela ne posera
pas de problèmes, mais vous avez de temps en temps besoin de taper des lignes
de commandes plus compliquées. C'est dans ce cas que la fenêtre de la ligne de
commande peut se révéler utile.
Ovrez la fenêtre de la ligne de commande avec :Vim ouvre alors une (petite) fenêtre en bas de l'écran. Elle contient l'histo-
rique de la ligne de commande, ainsi qu'une dernière ligne vide.
+-------------------------------------+
|une autre fenêtre |
|~ |
|file.txt=============================|
|:e c |
|:e config.h.in |
|:set path=.,/usr/include,, |
|:set iskeyword=@,48-57,_,192-255 |
|:set is |
|:q |
|: |
|command-line=========================|
| |
+-------------------------------------+
Vous êtes maintenant dans le mode normal. Vous pouvez utiliser les touches
"hjkl" pour vous déplacer. Par exemple, utilisez "5k" pour vous positionner sur
la ligne ":e config.h.in". Taper "$h" pour aller sur le "i" de "in" et tapez
"cwout". Vous avez alors changé la ligne en :
:e config.h.out
Pressez alors <Entree> et cette commande va être exécutée. La fenêtre de la
ligne de commande se ferme.
La commande <Entree> exécute la commande située sur la ligne du curseur. Elle ne
tient pas compte du mode ( normal ou insertion ) dans lequel Vim est. Les modi-
fications faites dans la fenêtre de la ligne de commande sont perdues. Elles ne
seront pas modifiées dans l'historique, sauf que la commande que vous venez d'
exécuter vient d'être rajoutée à la fin de l'historique, comme toutes les com-
mandes exécutées.
La fenêtre de la ligne de commande est très utile lorsque vous voulez avoir une
vue d'ensemble de l'historique, vérifier une commande similaire, la modifier et
la rééxécuter. Une commande de recherche peut être utilisée pour retrouver un
motif.
Dans l'exemple précédent, la commande de recherche "?config" aurait pu être
utilisée pour retrouver la commande précédente qui contenait "config". C'est un
peu étrange, parce que vous utilisez une ligne de commande pour rechercher dans
la fenêtre de la ligne de commande. En tapant cette commande de recherche, vous
ne pourrez pas ouvrir une autre fenêtre de la ligne de commande, car il ne peut
y en avoir qu'une.
==============================================================================
Chapitre suivant: |usr_21.txt| Sortir puis revenir
Copyright: voir |manual-copyright| vim:tw=78:ts=8:ft=help:norl: