*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é:

	:s/mache/cochon/

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:

	:s/vache/cochon/

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 :

	:s[ubstitute]

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:

	:set autoindent
	:set ai

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:

	:edit corpsdudocument.txt

Il est facile de se tromper. Une façon plus rapide est:

	:edit c<Tab>

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:

	:edit i<Tab>

Vim produit un "bip", et vous donne:

	:edit info.txt

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:

	:edit intro.txt

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é:

	:edit i

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 :

	:set isk<Tab>

Donne:

	:set iskeyword

Maintenant, tapez "=" puis <Tab>:

	:set iskeyword=@,48-57,_,192-255

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:

	:set is

retourne:

	:set is
	incsearch  isfname    isident    iskeyword  isprint
	:set is

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:

	:se<Up>

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 :

	:history

Il s'agit de l'historique des commandes ":".  L'historique des recherches est 
affiché avec cette commande :

	:history /

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 :

	q:

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: