*intro.txt* Pour Vim version 6.2.
MANUEL de RÉFÉRENCE VIM - par Bram Moolenaar
Introduction à Vim *ref* *reference*
1. Introduction |intro|
2. Vim sur Internet |internet|
3. Contributeurs |credits|
4. Notations |notation|
5. Introduction aux modes d'édition |vim-modes-intro|
6. Passer d'un mode à un autre |mode-switching|
7. Contenu d'une fenêtre |window-contents|
8. Définitions |definitions|
==============================================================================
1. Introduction *intro*
VIM est l'acronyme de « VI aMélioré » ["Vi IMproved"]. Ce fut d'abord « Vi
IMité » ["Vi IMitation"], mais il apporte tellement d'améliorations qu'un
changement de nom a paru approprié. Vim est un éditeur de texte qui reconnaît
presque toutes les commandes du programme Unix `vi` et en apporte de
(nombreuses) nouvelles. Il se révèle particulièrement efficace pour l'édition
de programmes et autres fichiers texte.
Toutes les commandes passent par le clavier. Cela a l'avantage de vous
permettre de conserver les mains dessus et de garder les yeux sur l'écran.
Pour ceux qui le souhaitent, il existe un support de la souris ainsi qu'une
version IHM graphique (interface graphique), pourvue de menus et d'ascenseurs
(voir |gui.txt|).
Vous trouverez un sommaire de ce manuel dans le fichier "help.txt", |help.txt|.
On peut y accéder à partir de Vim grâce aux touches <Aide> ou <F1>, ou par la
commande |:help| (tapez simplement ":help", sans barres ni apostrophes).
L'option 'helpfile' peut être fixée pour définir le nom du sommaire de
l'aide, au cas où il ne serait pas situé à son emplacement par défaut. Vous
pouvez sauter vers chaque sujet comme avec des marqueurs : utilisez CTRL-]
pour vous rendre au sujet sous le curseur, et CTRL-T pour revenir en arrière.
Tout au long de ce manuel, les différences entre Vi et Vim sont mentionnées
entre accolades, de cette manière : {Vi n'a pas d'aide en ligne}. Se reporter
à |vi_diff.txt| pour un résumé des différences entre Vim et Vi.
Ce manuel couvre les implantations de Vim sur différentes machines. Il peut y
avoir de légères différences d'un ordinateur (ou d'un terminal) à un autre. En
plus des remarques soulevées dans la suite de ce fichier, il existe un
document séparé pour chaque système supporté, voir |sys-file-list|.
Ce manuel est une référence pour toutes les commandes et options de Vim. Ce
n'est pas une introduction à l'utilisation de Vi ou Vim, certains passages se
révélant ardus. Pour les débutants, il existe un |tutor|iel pour s'initier par
la pratique. Pour apprendre à utiliser Vim, lisez le Manuel de l'utilisateur
|usr_toc.txt|.
Il existe de nombreux livres sur Vi qui consacrent une section aux débutants.
En voici deux que je recommande :
« Vim -- Vi Improved » par Steve Oualline
Il s'agit du tout premier livre entièrement dédié à Vim. Il conviendra
parfaitement aux débutants. Les commandes les plus fréquemment utilisées sont
décrites avec des illustrations et des exemples. Les moins fréquentes sont
également détaillées et les fonctionnalités les plus pointues sont résumées.
Il comporte un index détaillé et une référence abrégée. Certaines parties de
ce livre ont été incluses dans le Manuel de l'utilisateur |frombook|.
Publié chez New Riders Publishing. ISBN : 0735710015.
Pour plus d'informations, vous pouvez consulter :
http://vim.iccf-holland.org/
http://www.vim.org/iccf/click5.html
« Learning the Vi editor » par Linda Lamb et Arnold Robbins
C'est un livre sur Vi qui consacre un chapitre à Vim (dans sa sixième
édition). Les premiers pas dans Vi sont très bien expliqués. Les commandes
spécifiques à Vim sont seulement mentionnées brièvement. Une traduction
allemande est disponible. [N.D.T. : Pas de traduction française, hélas ! ni
pour l'ouvrage précédent.]
Publié chez O'Reilly. ISBN : 1-56592-426-6.
==============================================================================
2. Vim sur Internet *internet*
[N.D.T. : Dans toute cette section, et sauf indication contraire explicite,
les sites, forums, listes de diffusion et adresses électroniques sont à usage
anglophone exclusivement.]
SUR LA TOILE *www* *faq* *FAQ* *distribution* *download*
Le site de Vim apporte les informations les plus récentes. On y trouve aussi
des liens vers la dernière version de Vim disponible. La FAQ est une « Foire
Aux Questions », à consulter en cas de problèmes.
Page d'accueil de Vim : http://vim.sf.net/
Site de Sven sur Vim : http://www.vim.org/
Dernières nouvelles : http://www.vim.org/news.html
FAQ de Vim : http://www.vim.org/faq/
Téléchargement : ftp://ftp.vim.org/pub/vim/MIRRORS
SUR LES FORUMS *news* *usenet*
Il existe un forum de discussion où il est question de Vim :
comp.editors
Consultez "http://www.vim.org/usenet.html". Ce groupe est aussi utilisé pour
d'autres éditeurs. Si vous postez au sujet de Vim, n'oubliez pas de le
mentionner.
SUR LES LISTES DE DIFFUSION *mail-list* *maillist*
Il existe plusieurs listes de diffusion traitant de Vim :
<vim@vim.org>
Discussions sur l'utilisation des versions existantes : mappages
utiles, questions, réponses, où trouver une version spécifique, etc.
<vim-dev@vim.org> *vim-dev* *vimdev*
Discussions sur les changements à apporter : nouvelles
fonctionnalités, portages, rustines, versions béta-test, etc.
<vim-announce@vim.org> *vim-announce*
Annonces des nouvelles moutures de Vim, ainsi que des versions
béta-test et des portages vers différents systèmes.
<vim-multibyte@vim.org> *vim-multibyte*
Discussions sur l'utilisation et les améliorations à apporter pour
l'édition de texte multi-octets avec Vim.
<vim-mac@vim.org> *vim-mac*
Discussions sur l'utilisation et les améliorations à apporter à la
version Macintosh de Vim.
Consultez "http://www.vim.org/mail.html".
NOTES :
- Vous ne pouvez poster dans ces listes que si vous y êtes abonné !
- Vous devez envoyer vos messages avec l'adresse depuis laquelle vous vous
êtes abonné (pour éviter le pollupostage).
- La taille des messages est limitée à 40000 caractères.
*subscribe-maillist*
Si vous désirez vous abonner, envoyez un message à :
<vim-help@vim.org>
Assurez-vous que le champ "From:" de votre courrier est correct. Ensuite, le
serveur contacté vous donnera l'aide nécessaire pour vous abonner.
Ce même serveur vous permet de récupérer les anciens messages, ainsi qu'un
index des messages. Interrogez vim-help pour le mode d'emploi.
Les archives sont conservées sur : *maillist-archive*
http://groups.yahoo.com/group/vim/
http://groups.yahoo.com/group/vimdev/
http://groups.yahoo.com/group/vimannounce/
http://groups.yahoo.com/group/vim-multibyte/
http://groups.yahoo.com/group/vim-mac/
Une autre archive est disponible sur "http://www.somelist.com/", dans la
section « Éditeurs » (le site est en français, les messages en anglais).
Listes de diffusion supplémentaires :
<vim-fr@club.voila.fr> *french-maillist* *vim-fr*
Liste sur Vim en français ! Abonnez-vous en envoyant un message à :
<vim-fr-subscribe@club.voila.fr>
Ou allez sur "http://groups.yahoo.com/group/vim-fr/".
RAPPORTS DE BOGUES *bugs* *bug-reports* *bugreport.vim*
Envoyez vos rapports de bogues à : Vim bugs <bugs@vim.org>.
Il ne s'agit pas d'une liste de diffusion, mais le message est redirigé
vers le responsable de Vim. Soyez concis S.V.P. ; le temps passé à répondre au
courriel ampute d'autant celui consacré à l'amélioration de Vim. Donnez
toujours un exemple reproductible et tentez de déterminer quels agents ou
paramètres ont une influence sur l'apparition du problème. Essayez sur
différentes machines si possible et... envoyez-moi des rustines si vous
pouvez !
En cas de doute, lancez :Ceci créera un fichier "bugreport.txt" dans le répertoire courant, regroupant
de nombreuses informations sur votre environnement. Assurez-vous qu'il ne
contienne aucune donnée confidentielle avant de l'envoyer !
*debug-vim*
Lorsque Vim plante dans l'un des fichiers de test, et que vous utilisez le
compilateur GCC, voilà ce que vous pouvez faire pour déterminer l'endroit
exact du plantage :
1° Compilez Vim avec l'option "-g" (il y a une ligne dans le fichier Makefile
pour cela, que vous pouvez décommentez).
2° Exécutez ces commandes (remplacez "11" par le test ayant échoué) :3° Repérez l'endroit du plantage (`gdb` devrait émettre un message).
4° Demandez une trace de la pile avec `gdb` par cette commande : Vous pouvez examiner les différents endroits de la trace de la pile avec : Remplacez "3" par un des nombres dans la trace de la pile.
*year-2000* *Y2K*
Comme Vim n'utilise pas de date en interne pour l'édition, aucun problème lié
au bogue de l'an 2000 n'est à craindre. Vim utilise les dates sous forme de
secondes écoulées depuis le 1er janvier 1970 : elles servent au contrôle de
l'horodatage du fichier édité et du fichier d'échange, ce qui n'est pas
critique et devrait seulement produire quelques messages.
Il se peut qu'il y ait un problème en l'an 2038, lorsque les secondes
dépasseront les capacités d'un entier 32 bits. Cela dépend du compilateur, des
bibliothèques et du système d'exploitation. En particulier, time_t et la
fonction ctime() sont utilisés. Et time_t est enregistré sur quatre octets
dans le fichier d'échange. Mais cela sert uniquement à afficher une date/heure
pour le recouvrement, et n'affecte pas l'édition normale.
La fonction Vim strftime() utilise directement la fonction système strftime().
localtime() utilise la fonction système time(). getftime() utilise le temps
retourné par la fonction système stat(). Si les bibliothèques de votre système
supportent le passage à l'an 2000, alors Vim aussi.
L'utilisateur peut créer des scripts Vim qui utilisent des commandes externes.
Ces commandes pourraient alors introduire des problèmes liés à l'an 2000, mais
qui ne proviendraient pas réellement de Vim.
==============================================================================
3. Contributeurs *credits* *author*
La plus grande partie de Vim a été écrite par Bram Moolenaar <Bram@vim.org>.
La documentation dérive partiellement de plusieurs manuels sur Vi écrits par :
W. N. Joy
Alan P. W. Hewett
Mark Horton
L'éditeur Vim est basé sur Stevie et inclut (des idées) d'autres logiciels,
grâce au travail des personnes ci-mentionnées. D'autres personnes ont apporté
de l'aide en m'envoyant des rustines, des suggestions, ou en donnant leur avis
sur ce qu'ils trouvaient bien et moins bien dans Vim.
Vim ne serait jamais devenu ce qu'il est aujourd'hui sans l'aide de tous ces
gens !
Ron Aaron changements pour l'IHM graphique Win32
Zoltan Arpadffy travail sur le portage VMS
Tony Andrews Stevie
Gert van Antwerpen changements pour DJGPP sur MS-DOS
Berkeley DB(3) idées pour la mise en oeuvre des fichiers
d'échange
Keith Bostic Nvi
Walter Briscoe mises à jour des Makefile, diverses rustines
Ralf Brown bibliothèque SPAWNO pour MS-DOS
Robert Colon nombreuses remarques utiles
Marcin Dalecki portage de l'IHM graphique GTK+, icônes de la
barre d'outils, gettext()
Kayhan Demirel envoi de nouvelles de l'Ouganda
Chris et John Downey Xvi (idées pour le multi-fenêtrage)
Henk Elbers premier portage VMS
Eric Fischer portage Mac, 'cindent' et autres améliorations
Benji Fisher réponses à de nombreuses questions
d'utilisateurs
Bill Foster portage de l'IHM graphique Athena
Loic Grenie Xvi (idées pour le multi-fenêtrage)
Sven Guckes maintenance des pages WWW sur Vim
Darren Hiebert programme "Exuberant ctags"
Bruce Hunsaker amélioration du portage VMS
Andy Kahn support cscope, portage de l'IHM graphique GTK+
Oezguer Kesim maintenance des listes de diffusion sur Vim
Axel Kielhorn travail sur le portage Macintosh
Steve Kirkendall Elvis
Roger Knobbe premier portage Windows NT
Sergey Laskavy aide pour Vim en provenance de Moscou
Felix von Leitner maintenance des listes de diffusion sur Vim
David Leonard portage des extensions Python pour Unix
Avner Lottem édition de droite à gauche
Flemming Madsen client/serveur X11, diverses rustines et
fonctionnalités
MicroSoft don d'une copie de DevStudio pour compiler Vim
Paul Moore extensions de l'interface Python, nombreuses
rustines
Katsuhito Nagano travail sur les versions muti-octets
Sung-Hyun Nam travail sur les versions muti-octets
Vince Negri améliorations pour Win32 (IHM graphique et
console)
Steve Oualline auteur du premier livre sur Vim |frombook|
George V. Reilly portage Win32, bases de l'IHM graphique Win32
Stephen Riehm collectionneur de bogues
Stefan Roemer diverses rustines, aide aux utilisateurs
Ralf Schandl portage IBM OS/390
Olaf Seibert versions DICE et BeBox, amélioration des exprat
Mortaza Shiran rustines farsi
Peter da Silva termlib
Paul Slootman portage OS/2
Henry Spencer expressions rationnelles
Dany St-Amant portage Macintosh
Tim Thompson Stevie
G. R. (Fred) Walter Stevie
Sven Verdoolaege interface Perl
Mike Williams impression PostScript
Robert Webb complètement de la ligne de commande, versions
IHM graphiques, nombreuses rustines
Ingo Wilken interface Tcl
Juergen Weigert version Lattice, améliorations AUX, portages
UNIX et MS-DOS, autoconf
Stefan « Sec » Zehl maintenance de vim.org
Je tiens également à remercier tous ceux qui m'ont envoyé des rapports de
bogues et suggestions. La liste est trop longue pour les mentionner tous ici.
Mais Vim n'eût jamais été le même sans leurs idées : ils le font vivre !
Cette documentation contient plusieurs références à d'autres versions de Vi :
*Vi*
Vi « L'original ». Sans plus de détails, c'est la version de Vi qui
est apparue dans Sun OS 4.x. ":version" renvoie "Version 3.7, 6/7/85".
D'autres versions sont parfois mentionnées. Existe seulement sous
Unix. Le code source n'est disponible qu'avec une licence. Pour plus
d'informations sur Vi, consultez :
http://vi-editor.org/
*Posix*
Posix Provient de l'« IEEE standard 1003.2, Part 2: Shell and utilities ».
Communément appelé « Posix ». C'est une description textuelle du
comportement auquel Vi est censé se conformer.
La version utilisée est une pré-version de début 1996, ainsi toutes
les remarques sont « supposées conformes à » Posix. Certains détails
pourraient cependant s'en écarter...
*Nvi*
Nvi Le « Nouveau » Vi. Clone de Vi distribué avec BSD 4.4 et FreeBSD. Très
bonne compatibilité avec le Vi original, avec quelques extensions. La
version utilisée est 1.79. ":version" renvoie "Version 1.79
(10/23/96)". Il n'y a pas eu de version sortie ces dernières années,
bien qu'il existe une version de développement (1.81).
Le code source est librement disponible.
*Elvis*
Elvis Un autre clone de Vi, réalisé par Steve Kirkendall. Très compact, mais
pas aussi souple que Vim. La version utilisée est la 2.1. Son
développement se poursuit.
Le code source est librement disponible.
==============================================================================
4. Notations *notation*
Si la coloration syntaxique est active lorsque vous lisez ce manuel, le texte
non littéral est en général mis en surbrillance selon le groupe Special. Ceci
concerne les éléments entre [], {} et <>, et du type CTRL-X.
NOTE : Vim utilise tous les caractères disponibles pour les commandes.
Parfois, [], {} et <> feront partie de ce que vous devez tapez, mais parfois
pas, le contexte devrait écarter toute ambiguïté.
[] Les caractères entre crochets sont optionnels.
*count* *[count]* *[quant]* *E489*
[quant] « Quantificateur » : un nombre optionnel qui peut précéder une
commande afin d'en multiplier ou itérer les effets. Si aucun
nombre n'est donné, c'est 1 qui est utilisé par défaut, sauf
indication contraire. NOTE : Dans ce manuel, [quant]
n'apparaît pas dans la description, mais dans l'explication
d'une commande, afin de faciliter une recherche rapide. Si
l'option 'showcmd' est activée, la saisie (partielle) d'un
quantificateur est affichée au bas de l'écran. Vous pouvez
utiliser <Suppr> pour effacer le dernier chiffre (|N<Del>|).
*[quotex]*
["x] Désigne un registre optionnel où le texte est mémorisé. Voir
|registers|. Le x est un caractère unique compris entre 'a' et
'z' ou 'A' et 'Z' ou '"', et dans certains cas (commandes de
collage) entre '0' et '9', '%', '#', ou autres. Les lettres
majuscules et minuscules désignent le même registre, mais
l'emploi des minuscules écrase le contenu précédent du
registre, tandis que celui des majuscules ajoute le nouveau
texte à la suite du précédent. Sans l'argument « "x » (ou avec
« "" »), le texte est mémorisé dans le registre sans nom.
*{}*
{} Les accolades désignent les arguments obligatoires d'une
commande, qui peuvent prendre plusieurs valeurs possibles. Les
différences entre Vim et Vi sont également indiquées entre
accolades (le contexte lève toute ambiguïté).
*{char1-char2}*
{car1-car2} Un caractère unique dans la plage de car1 à car2. Par exemple,
{a-z} désigne une lettre minuscule. Il est possible de
concaténer plusieurs plages (par exemple, {a-zA-Z0-9} désigne
un caractère alphanumérique).
*{motion}* *{mouv}*
{mouv} Une commande qui déplace le curseur. Elles sont détaillées
dans |motion.txt|. Exemples :
w au début du mot suivant
4j quatre lignes plus bas
/Le<CR> à la prochaine occurrence de "Le"
Cette notation est utilisée après un opérateur (voir
|operator|) pour couvrir le texte sur lequel la commande doit
opérer.
- Si le {mouv}ement inclut un quantificateur et l'opérateur
aussi, ces deux nombres sont multipliés. Par exemple, "2d3w"
coupe six mots.
- Le {mouv}ement peut aussi être un clic de la souris.
Cependant, cela n'est pas supporté par tous les terminaux.
- La commande ":omap" permet de définir des mappages
utilisables quand un opérateur est en suspens.
- Les commandes Ex peuvent être utilisées pour déplacer le
curseur. C'est utile pour appeler une fonction qui effectue
un mouvement complexe. Le mouvement sera toujours exclusif
par caractères, indépendamment de la commande ":" utilisée.
Cela implique qu'il sera impossible d'inclure le dernier
caractère d'une ligne sans la coupure de ligne (à moins que
'virtualedit' ne soit fixé).
Si la commande Ex modifie du texte avant la position d'où
l'opérateur avait débuté, ou fait sauter vers un autre
tampon, le résultat est imprévisible. Il est possible de
changer du texte situé plus bas. Il est possible de sauter
vers un autre tampon si le tampon courant n'est pas
déchargé.
*{Visual}* *{Visuel}*
{Visuel} Une zone de texte sélectionné. Elle commence à l'appel des
commandes "v", "V", ou CTRL-V, puis n'importe quelle commande
déplaçant le curseur peut être utilisée pour changer la fin de
la zone de sélection.
Utile avant un opérateur |operator| pour mettre en
surbrillance le texte sur lequel la commande doit opérer.
Voir |Visual-Mode|.
*<character>*
<caractere> Un caractère spécial du tableau ci-dessous, éventuellement
avec un modificateur, ou un caractère ASCII avec modificateur.
*'character'*
'c' Un caractère ASCII unique.
CTRL-{char}">*CTRL-{char}*
CTRL-<span class="Special">{car} La séquence clavier CTRL-<span class="Special">{car} (tapez {car} en maintenant la
touche Ctrl enfoncée). La casse de {car} est ignorée, de sorte
que CTRL-A et CTRL-a sont équivalents. (Mais comme sur
certains terminaux l'utilisation de Maj produit un code
différent, évitez de l'utiliser.)
*'option'*
'option' Une option (ou paramètre interne) dont on peut fixer la valeur
est donnée entre apostrophes. Voir |options|.
*quotecommandquote*
"commande" Une référence à une commande qu'on peut entrer au clavier est
donnée entre doubles-apostrophes.
*key-notation* *key-codes* *keycodes*
Ces noms et notations pour les touches du clavier sont utilisés dans la
documentation. Ils sont également employables avec la commande ":map" (pour
insérer le nom d'une touche, pressez CTRL-K suivi de la touche souhaitée).
NOTATION SIGNIFICATION ÉQUIVALENT VALEUR DÉCIMALE
------------------------------------------------------------------------
<Nul> caractère NUL CTRL-@ 0 (représenté par 10) *<Nul>*
<BS> retour arrière CTRL-H 8 *backspace*
<Tab> tabulation CTRL-I 9 *tab* *Tab*
*linefeed*
<NL> saut-de-ligne CTRL-J 10 (utilisé pour <Nul>)
<FF> saut-de-page CTRL-L 12 *formfeed*
<CR> retour chariot CTRL-M 13 *carriage-return*
<Return> comme <CR> *<Return>*
<Enter> entrée, comme <CR> *<Enter>*
<Esc> échappement CTRL-[ 27 *escape* *<Esc>*
<Space> espace 32 *space*
<lt> inférieur-à < 60 *<lt>*
<Bslash> contre-oblique \ 92 *backslash* *<Bslash>*
<Bar> barre verticale | 124 *<Bar>*
<Del> suppression 127
<CSI> introduction séquence ALT-Esc 155 *<CSI>*
de contrôle (CSI)
<xCSI> CSI saisie dans l'IHM graphique *<xCSI>*
<EOL> fin-de-ligne (défini par <CR>, <LF> *<EOL>*
ou <CR><LF>, selon les systèmes et 'fileformat')
<Up> flèche-haut *cursor-up* *cursor_up*
<Down> flèche-bas *cursor-down* *cursor_down*
<Left> flèche-gauche *cursor-left* *cursor_left*
<Right> flèche-droite *cursor-right* *cursor_right*
<S-Up> majuscule + flèche-haut
<S-Down> majuscule + flèche-bas
<S-Left> majuscule + flèche-gauche
<S-Right> majuscule + flèche-droite
<C-Left> contrôle + flèche-gauche
<C-Right> contrôle + flèche-droite
<F1> - <F12> touches de fonction de 1 à 12 *function_key* *function-key*
<S-F1> - <S-F12> majuscule + fonction de 1 à 12 *<S-F1>*
<Help> touche aide
<Undo> touche annulation
<Insert> touche insertion
<Home> orig *home*
<End> fin *end*
<PageUp> page-préc *page_up* *page-up*
<PageDown> page-suiv *page_down* *page-down*
PAVÉ NUMÉRIQUE :
<kHome> pavé orig (en haut à gauche) *keypad-home*
<kEnd> pavé fin (en bas à gauche) *keypad-end*
<kPageUp> pavé page-préc (en haut à droite) *keypad-page-up*
<kPageDown> pavé page-suiv (en bas à droite) *keypad-page-down*
<kPlus> pavé + *keypad-plus*
<kMinus> pavé - *keypad-minus*
<kMultiply> pavé * *keypad-multiply*
<kDivide> pavé / *keypad-divide*
<kEnter> pavé entrée *keypad-enter*
<kPoint> pavé point décimal *keypad-point*
<k0> - <k9> pavé 0 à 9 *keypad-0* *keypad-9*
MODIFICATEURS :
<S-...> majuscule + touche *shift* *<S-*
<C-...> contrôle + touche *control* *ctrl* *<C-*
<M-...> alt + touche ou méta + touche *meta* *alt* *<M-*
<A-...> comme <M-...> *<A-*
<D-...> commande + touche (Mac uniquement) *<D-*
<t_xx> touche représentée par l'entrée termcap "xx"
------------------------------------------------------------------------
NOTE : Les combinaisons Maj + touches fléchées, ainsi que les touches <Aide>
et <Annul>, ne sont disponibles que sur un petit nombre de terminaux. Sur
Amiga, Maj + F10 produit un code (CSI) qui est également utilisé par des
séquences claviers. Il sera reconnu uniquement après la saisie d'une touche
supplémentaire.
NOTE : Il existe deux codes pour la touche de suppression (Suppr). 127 est la
valeur ASCII décimale de cette touche, qui sera toujours reconnue. Certaines
touches de suppression envoient une autre valeur, auquel cas cette valeur est
obtenue par l'entrée termcap "kD". Les deux valeurs ont le même effet. Voir
aussi |:fixdel|.
NOTE : Les touches du pavé numérique sont utilisées de la même façon que les
touches « normales » correspondantes. Par exemple, <pDebut> produit le même
effet que <Debut>.
Si une touche du pavé envoie le même code que son équivalent « normal »,
elle sera reconnue elle-même comme « normale », c'est-à-dire n'appartenant pas
au pavé numérique. Par exemple, si <pDebut> envoie le même code que <Debut>,
lorsque <pDebut> sera pressé, Vim croira que <Debut> a été pressé. Dans ce
cas, le mappage de <pDebut> ne fonctionnera pas.
*<>*
Les exemples donnés utilisent souvent la notation <>. Elle permet de clarifier
les choses, et peut généralement être saisie littéralement, par exemple avec
la commande ":map". Les règles en sont :
1. Tous les caractères imprimables sont saisis directement, sauf '\'
(contre-oblique) et '<' (inférieur-à).
2. Une contre-oblique est représentée par "\\" (contre-oblique double), ou
"<Bslash>".
3. Un '<' est représenté par "\<" ou "<lt>". Lorsque aucune confusion n'est
possible, un '<' peut être saisi directement.
4. "<touche>" représente la touche spéciale précisée. Le détail de cette
notation est explicité dans le tableau ci-dessus. Quelques exemples :
<Esc> touche Échap
<C-G> CTRL-G
<Up> touche fléchée haut
<C-LeftMouse> Contrôle + clic gauche de la souris
<S-F11> Maj + F11
<M-a> Alt + a ('a' avec le 8e bit positionné)
<M-a> Alt + A ('A' avec le 8e bit positionné)
<t_kd> entrée termcap "kd" (touche fléchée bas)
Si vous souhaitez utiliser pleinement la notation <> dans Vim, assurez-vous
que le drapeau '<' soit exclu de 'cpoptions' (ce qui est le cas par défaut
lorsque 'compatible' n'est pas activé).La notation <> utilise <lt> comme caractère d'échappement. Une contre-oblique
('\') fonctionnera aussi, mais uniquement lorsque 'cpoptions' n'inclut pas le
drapeau 'B'.
Exemples pour mapper CTRL-H au six caractères "<Home>" :La première ligne marche uniquement lorsque le drapeau 'B' est exclu de
'cpoptions'. La seconde marchera toujours.
Pour obtenir un "<lt>" littéral dans un mappage :Pour les commandes de mappages, d'abréviations et de menus, vous pouvez soit
copier-coller ces exemples et les employer directement, soit les taper
littéralement, y compris les caractères '<' et '>'. Mais cela ne fonctionnera
PAS pour les autres commandes, telles que ":set" et ":autocmd" !
==============================================================================
5. Introduction aux modes d'édition *vim-modes-intro* *vim-modes*
Vim distingue six modes de BASE :
*Normal* *Normal-mode* *command-mode*
Mode Normal En mode Normal, vous pouvez entrer toutes les
commandes normales de l'éditeur. Au lancement, vous
vous trouvez dans ce mode (sauf si l'option
'insertmode' est activée, voir ci-dessous). Également
appelé mode Commande.
Mode Visuel Comme le mode Normal, mais les commandes de
déplacement délimitent une zone Visuel. Quand une
commande ne servant pas au déplacement est saisie,
elle est exécutée pour cette seule zone. Voir
|Visual-mode|.
Si l'option 'showmode' est activée, "-- VISUAL --" est
affiché au bas de la fenêtre.
Mode Sélection Ce mode se rapproche du mode sélection de MS-Windows.
Saisir un caractère imprimable coupe la sélection et
lance le mode Insertion. Voir |Select-mode|.
Si l'option 'showmode' est activée, "-- SELECT --" est
affiché au bas de la fenêtre.
Mode Insertion En mode Insertion, le texte saisi est inséré dans le
tampon courant. Voir |Insert-mode|.
Si l'option 'showmode' est activée, "-- INSERT --" est
affiché au bas de la fenêtre.
Mode Ligne-de-commande
Mode Lignecmd En mode Ligne-de-commande (souvent abrégé en
Lignecmd), on peut entrer une ligne de texte au bas de
la fenêtre. Elle sert pour les commandes Ex (":"), les
commandes de recherche de motifs ("?" et "/") et les
commandes de filtre ("!"). Voir |Cmdline-mode|.
Mode Ex Comme en mode Ligne-de-commande, mais reste en mode Ex
après l'exécution d'une commande. Édition de la ligne
de commande très rudimentaire. Voir |Ex-mode|.
Il y a cinq modes SUPPLÉMENTAIRES. Ce sont des variantes des premiers :
*Operator-pending* *Operator-pending-mode*
Mode Opérateur-en-cours Comme le mode Normal, mais après le début de la saisie
d'un opérateur, quand Vim est en attente d'un
{mouv}ement précisant la plage sur laquelle il doit
opérer.
Mode Remplacement Le mode Remplacement est un comportement particulier
du mode Insertion. On peut tout y faire comme en mode
Insertion, mais pour chaque caractère saisi, un
caractère du texte existant est supprimé. Voir
|Replace-mode|.
Si l'option 'showmode' est activée, "-- REPLACE --"
est affiché au bas de la fenêtre.
Mode Insertion Normal On y entre en saisissant CTRL-O en mode Insertion.
Identique au mode Normal, mais après l'exécution d'une
commande, Vim revient en mode Insertion.
Si l'option 'showmode' est activée, "-- (insert) --"
est affiché au bas de la fenêtre.
Mode Insertion Visuel On y entre en lançant une sélection Visuel depuis le
mode Insertion, p. ex., en tapant CTRL-O puis "v", "V"
ou CTRL-V. À la fin de la sélection Visuel, Vim
revient en mode Insertion.
Si 'showmode' est activé, "-- (insert) VISUAL --" est
affiché au bas de la fenêtre.
Mode Insertion Sélection
On y entre en lançant le mode Sélection en mode
Insertion, p. ex. en faisant glisser la souris ou avec
<S-Droite>. À la fin du mode Sélection, Vim revient en
mode Insertion.
Si 'showmode' est activé, "-- (insert) SELECT --" est
affiché au bas de la fenêtre.
==============================================================================
6. Passer d'un mode à un autre *mode-switching*
Si pour n'importe quelle raison vous ignorez dans quel mode vous vous trouvez,
vous pouvez toujours retourner en mode Normal en tapant deux fois <Echap>.
Cela ne fonctionne pas en mode Ex, utilisez alors ":visual".
Vous saurez que vous êtes revenu en mode Normal lorsque vous aurez vu
l'écran clignoter ou entendu un bip après avoir tapé <Echap>. Cependant, si
vous pressez <Echap> après avoir utilisé CTRL-O en mode Insertion, vous aurez
un bip mais resterez en mode Insertion (pour en sortir, tapez <Echap> à
nouveau).
*i_esc*
... AU MODE
Normal Visuel Sélection Insertion Remplacement Lignecmd Ex
DU MODE ...
Normal v V ^V *4 *1 R : / ? ! Q
Visuel *2 ^G c C -- : --
Sélection *5 ^O ^G *6 -- -- --
Insertion <Echap> -- -- <Inser> -- --
Remplacement <Echap> -- -- <Inser> -- --
Lignecmd *3 -- -- :start -- --
Ex :vi -- -- -- -- --
-- Impossible
*1 On peut passer du mode Normal au mode Insertion par une des commandes "i",
"I", "a", "A", "o", "O", "c", "C", "s" ou S".
*2 On passe du mode Visuel au mode Normal en donnant une commande ne servant
pas au déplacement, et qui sera exécutée, ou en tapant <Echap>, "v", "V" ou
CTRL-V (voir |v_v|), qui quittent le mode Visuel sans effet de bord.
*3 On peut passer du mode Ligne-de-commande au mode Normal en :
- tapant <CR> ou <NL>, qui exécutent la commande saisie ;
- effaçant toute la ligne (p. ex. avec CTRL-U) et en tapant un <RetArr>
final ;
- tapant CTRL-C ou <Echap>, qui quittent le mode Ligne-de-commande sans
exécuter la commande.
Dans le dernier cas, <Echap> peut être le caractère défini par l'option
'wildchar', auquel cas il activera le complètement en mode Lignecmd. Pour
passer outre, saisir <Echap> à nouveau. {Vi : <Echap> exécute la ligne de
commande. C'est inattendu pour la plupart des utilisateurs, c'est pourquoi
Vim ne réagit pas ainsi. Mais quand <Echap> est utilisé dans un mappage, la
ligne de commande est exécutée. Si vous souhaitez imiter le comportement de
Vi quand vous tapez <Echap>, utilisez ":cmap ^V<Echap> ^V^M"}
*4 On passe du mode Normal au mode Sélection en :
- sélectionnant du texte avec la souris, si 'selectmode' contient "mouse" ;
- entrant un caractère de commande non-imprimable pour déplacer le curseur
pendant que la touche Maj est pressée, si 'selectmode' contient "key" ;
- utilisant "v", "V" ou CTRL-V, si 'selectmode' contient "cmd" ;
- utilisant "gh", "gH" ou "g CTRL-H" |g_CTRL-H|.
*5 On passe du mode Sélection au mode Normal en entrant un caractère de
commande non-imprimable pour déplacer le curseur, sans appuyer sur la
touche Maj.
*6 On passe du mode Sélection au mode Insertion en tapant un caractère
imprimable. La sélection est coupée et le caractère inséré.
Si l'option 'insertmode' est activée, l'édition débutera en mode Insertion.
CTRL-\_CTRL-N">*CTRL-\_CTRL-N* *i_CTRL-\_CTRL-N* *c_CTRL-\_CTRL-N* *v_CTRL-\_CTRL-N*
De plus, la commande "CTRL-\ CTRL-N" ou <C-\><C-N> permet de revenir en mode
Normal depuis n'importe quel autre mode. Ceci peut être utile pour s'assurer
que Vim est bien en mode Normal, sans émettre de bip comme avec <Echap>.
Néanmoins, cela ne marche pas en mode Ex.
CTRL-\_CTRL-G">*CTRL-\_CTRL-G* *i_CTRL-\_CTRL-G* *c_CTRL-\_CTRL-G* *v_CTRL-\_CTRL-G*
La commande "CTRL-\ CTRL-G" ou <C-\><C-G> permet de passer en mode Insertion
quand 'insertmode' est activé. Sinon, elle fera revenir en mode Normal. Ceci
peut être utile pour s'assurer que Vim est bien dans le mode indiqué par
'insertmode', si l'on ignore le mode courant.
*Q* *mode-Ex* *Ex-mode* *Ex* *EX* *E501*
Q Passe en mode Ex. C'est à peu près comme taper des commandes
":" les unes après les autres, excepté que :
- il n'y a pas à ressaisir ":" ;
- l'écran n'est pas rafraîchi après chaque commande ;
- les commandes d'édition du mode Lignecmd sont inopérantes ;
- les mappages et abréviations sont inaccessibles.
En fait, vous éditez les lignes avec les commandes d'édition
de ligne « standard » (<Suppr> ou <RetArr> pour effacer,
CTRL-U pour supprimer toute la ligne).
Vim entrera par défaut dans ce mode si `ex` est invoqué sur la
ligne de commande.
Utilisez la commande ":vi" |:visual| pour quitter le mode Ex.
NOTE : Dans les anciennes versions de Vim, "Q" mettait en
forme le texte. Maintenant, cela se fait avec |gq|. Mais si
vous utilisez le script |vimrc_example.vim|, "Q" fonctionnera
comme "gq".
*gQ*
gQ Passe en mode Ex, mais se comporte comme si on tapait des
commandes ":" à la suite. Les commandes d'édition, de
complètement, etc. du mode Lignecmd sont disponibles.
Utilisez la commande ":vi" |:visual| pour quitter le mode Ex.
{absent de Vi}
==============================================================================
7. Contenu d'une fenêtre *window-contents*
En mode Normal et Insertion/Remplacement, l'écran de la fenêtre affiche le
contenu du tampon : « tel écran/tel écrit » [WYSIWYG : "What You See Is What
You Get"]. Il y a deux exceptions :
- lorsque l'option 'cpotions' contient '$' et que la modification est confinée
à une seule ligne, le texte n'est pas directement supprimé mais un '$' est
placé au dernier caractère modifié ;
- lors de l'insertion du texte dans une fenêtre, les autres fenêtres affichant
le même texte ne sont mises à jour que lorsque l'insertion est terminée.
{Vi : l'écran n'est pas toujours mis à jour pour les terminaux lents}
Les lignes plus longues que la largeur de la fenêtre seront enroulées, à moins
que l'option 'wrap' ne soit désactivée (voir ci-dessous). L'option 'linebreak'
peut être activée pour permettre d'enrouler une ligne à un caractère d'espace.
S'il reste de la place après la dernière ligne du tampon, Vim affichera '~'
dans la première colonne de chacune des dernières lignes du tampon, comme
ceci :
+-----------------------+
|pénultième ligne |
|dernière ligne |
|~ |
|~ |
+-----------------------+
Ainsi, les lignes débutant par '~' indiquent que la fin du tampon est
atteinte.
Si la dernière ligne d'une fenêtre en dépasse, Vim l'indiquera par un '@' dans
la première colonne des dernières lignes de la fenêtre, comme ceci :
+-----------------------+
|première ligne |
|deuxième ligne |
|@ |
|@ |
+-----------------------+
Ainsi, les lignes débutant par '@' indiquent une ligne qui ne rentre pas dans
le restant de la fenêtre.
Lorsque le drapeau "lastline" est présent dans l'option 'display', le
caractère '@' ne sera pas visible sur côté gauche de la fenêtre. Si la
dernière ligne dépasse de l'écran, seule la partie qui rentre dedans sera
affichée et ses trois derniers caractères seront remplacés par "@@@", comme
ceci :
+-----------------------+
|première ligne |
|deuxième ligne |
|une ligne très longue q|
|ui dépasse de la fen@@@|
+-----------------------+
Il existe une situation spéciale dans le cas où une seule ligne est trop
longue pour rentrer dans la fenêtre : dans ce cas, Vim affichera seulement une
partie de la ligne, autour de la position du curseur. Aucun caractère spécial
ne sera employé, afin que vous puissiez éditer n'importe quelle partie de
cette ligne.
{Vi renvoie une « erreur interne » pour les lignes qui ne rentrent pas dans
une fenêtre}
Le drapeau '@' dans l'option 'highlight' peut être utilisé pour mettre en
surbrillance les caractères '@' et '~', afin de les distinguer des caractères
du texte d'un tampon.
L'option 'showbreak' contient la chaîne à afficher au début des lignes
enroulées.
*wrap-off*
Si l'option 'wrap' est désactivée, les lignes longues ne seront pas enroulées.
Seule la partie qui rentre dans l'écran sera affichée. Si le curseur est
déplacé sur une partie non affichée de la ligne, l'écran défilera
horizontalement. L'avantage de cette méthode est que les colonnes sont
affichées telles qu'elles sont et que les lignes dépassant de l'écran peuvent
être éditées normalement. L'inconvénient est que vous ne pouvez visualiser le
contenu de vos lignes en une seule fois. L'option 'sidescroll' peut être fixée
au nombre minimal de colonnes à faire défiler. {Vi n'a pas d'option 'wrap'}
Tous les caractères ASCII normaux sont affichés directement sur l'écran. <Tab>
est remplacé par le nombre d'espaces qu'il recouvre. Certains caractères
non-imprimables sont représentés par "^{car}", où {car} est le caractère
non-imprimable majoré de 64. Ainsi, le caractère 7 (bip) sera représenté par
"^G". Les caractères entre 127 et 160 sont eux représentés par "~{car}", où
{car} est le caractère minoré de 64. Ces caractères occupent plus d'une
colonne physique sur l'écran. Le curseur peut être placé uniquement sur la
première.
Si vous fixez l'option 'number', chaque ligne sera précédée de son numéro.
Astuce : Si vous ne voulez pas voir se mêler les lignes enroulées et les
numéros de lignes, fixez l'option 'showbreak' à huit espaces, comme ceci :[N.D.T. : Notez bien l'espace final.]
Si vous activez l'option 'list', le caractère <Tab> ne sera pas représenté par
des espaces, mais par "^I". Un '$' sera placé en fin de ligne, de telle sorte
que vous puissiez repérer des espaces superflus.
En mode Ligne-de-commande, seule la ligne de commande elle-même est affichée
correctement. Le contenu du tampon est rafraîchi dès le retour en mode Normal.
La dernière ligne de la fenêtre est utilisée pour les messages d'état et
autres. Les messages d'état ne sont affichés que si une option est activée :
MESSAGE D'ÉTAT OPTION DÉFAUT DÉFAUT UNIX
mode courant 'showmode' activé activé
caractères de commande 'showcmd' activé désactivé
position du curseur 'ruler' désactivé désactivé
Le mode courant est "-- INSERT --" ou "-- REPLACE --", voir |'showmode'|. Les
caractères de commande sont ceux qui ont été saisis mais pas encore exécutés.
{Vi n'affiche pas les caractères de commande ni la position du curseur}
Si votre terminal est lent, vous pouvez désactiver ces différents messages
pour accélérer l'édition :En cas d'erreur, un message d'erreur sera affiché pendant une seconde au moins
(en vidéo inverse). {Vi : les messages d'erreurs peuvent être effacés par
d'autres messages avant que vous n'ayez pu les lire}
Certaines commandes affichent le nombre de lignes modifiées. Il est possible
de préciser le seuil à partir duquel ce message devra s'afficher grâce à
l'option 'report' (défaut : 2).
Sur Amiga, Vim s'exécutera dans une fenêtre CLI. La barre de titre affichera
« Vim », suivi du nom complet du fichier courant. Lors du redimensionnement de
la fenêtre, Vim la rafraîchira automatiquement. Vous pouvez la rendre aussi
petite que vous le souhaitez, mais si vous exagérez, aucune ligne ne rentrera
dans l'écran ! Gardez au moins 40 colonnes de largeur pour pouvoir lire la
plupart des messages sur la dernière ligne.
Sur la plupart des systèmes Unix, le redimensionnement de la fenêtre est
détecté et correctement supporté par Vim. {Vi ne le supporte pas}
==============================================================================
8. Définitions *definitions*
écran Toute la zone que Vim utilise pour son travail. Cela peut
être la fenêtre d'un émulateur de terminal.
Également appelé la « fenêtre Vim ».
fenêtre Une vue sur un tampon.
Un écran contient une ou plusieurs fenêtres, séparées par des lignes d'état,
et une ligne de commande tout en bas.
+---------------------------------+
| fenêtre 1 | fenêtre 2 | }
| | | }
| | | }
|= ligne d'état =|= ligne d'état =| }
| fenêtre 3 | } écran
| | }
| | }
|========== ligne d'état =========| }
| ligne de commande | }
+---------------------------------+
La ligne de commande est également utilisée pour les messages. Ils décalent
l'écran vers le haut quand ils n'ont pas assez de place.
Il existe quatre différents types de lignes :
lignes de tampon Les lignes dans le tampon. Ce sont les lignes telles
qu'elles sont lues/écrites dans un fichier. Elles peuvent
contenir plusieurs milliers de caractères.
lignes logiques Les lignes de tampon avec les replis fermés. Les lignes de
tampon dans un repli fermé comptent pour une seule ligne
logique : "+-- 99 lines folded". Elles peuvent contenir
plusieurs milliers de caractères.
lignes de fenêtre Les lignes affichées dans une fenêtre : une plage de
lignes logiques en tenant compte des enroulements, des
césures, etc. Elles ne peuvent pas faire plus que la la
largeur de la fenêtre, ce qui dépasse est enroulé ou
tronqué.
lignes d'écran Les lignes de l'écran utilisées par Vim : comprend les
lignes de fenêtre de toutes les fenêtres, en ajoutant les
lignes d'état et la ligne de commande. Elles ne peuvent
pas faire plus que ce que la largeur de l'écran permet.
Lorsque la ligne de commande manque de place, elle est
enroulée et les lignes d'écran défilent vers le haut.
LIGNES DE TAMPON LIGNES LOGIQUES LIGNES DE FENÊTRE LIGNES D'ÉCRAN
1. un 1. un 1. +-- repli 1. +-- repli
2. deux 2. +-- repli 2. cinq 2. cinq
3. trois 3. cinq 3. six 3. six
4. quatre 4. six 4. sept 4. sept
5. cinq 5. sept 5. = ligne d'état =
6. six 6. aaa
7. sept 7. bbb
8. ccc ccc c
1. aaa 1. aaa 1. aaa 9. cc
2. bbb 2. bbb 2. bbb 10. ddd
3. ccc ccc ccc 3. ccc ccc ccc 3. ccc ccc c 11.
4. ddd 4. ddd 4. cc 12. = ligne d'état =
5. ddd 13. (ligne de commande)
6.
vim:tw=78:ts=8:ft=help:norl: