HOWTO de l'�diteur ViM couleur (Vi aM�lior�, avec coloration syntaxique) Al Dev (Alavoor Vasudevan) alavoor@yahoo.com; Version fran�aise par Arnaud Launay, asl@launay.org v14.0, 16 Ao�t 2000 _________________________________________________________________ _Ce document est un guide pour configurer tr�s rapidement l'�diteur couleur ViM sur les syst�mes Linux ou Unix. Les informations pr�sent�es ici augmenteront la productivit� du programmeur puisque l'�diteur ViM supporte la coloration syntaxique et les fontes grasses qui augmentent la � lisibilit� � du code. La productivit� d'un programmeur est accrue de 2 � 3 fois avec un �diteur couleur comme ViM. Les informations de ce document s'appliquent � tous les syst�mes d'exploitation sous lesquels Vim fonctionne, c'est-�-dire Windows 95/NT, Apple Mac, et toutes les versions d'Unix telles que Linux, FreeBSD, Solaris, HPUX, AIX, SCO, Ultrix, Sinix, BSD, SCO, etc. (ce qui revient � dire, � peu pr�s tous les OS de la plan�te !)._ _________________________________________________________________ 1. Introduction L'�diteur ViM signifie � Vi iMproved � (Vi am�lior�). Vi est l'�diteur le plus populaire et le plus puissant du monde Unix. Son nom vient de l'abbr�viation �diteur _Vi_suel. Un �diteur visuel comme Vi �tait un grand progr�s par rapport aux �diteurs en ligne comme 'ed' (ou 'ex'). Les �diteurs 'ed' et 'ex' sont toujours disponibles sous Linux : voyez 'man ed' et 'man ex'. Un bon �diteur augmentera la productivit� du programmeur. Vim supporte la coloration syntaxique du code ainsi que diff�rentes fontes, normales, grasses ou italiques. Les �diteurs couleurs comme ViM augmentent la productivit� du programmeur de 2 � 3 fois ! Les programmeurs peuvent lire le code beaucoup plus rapidement si la syntaxe du code est color�es et mise en �vidence. 1.1 Avant d'installer Avant d'installer ViM, r�f�rez vous aux notes relevant de l'OS et aux informations sur la compilation et l'usage de ViM sur - * Allez ici et regardez les fichiers os_*.txt http://cvs.vim.org/cgi-bin/cvsweb/vim/runtime/doc Si vous n'avez pas le paquetage ViM (RPM, DEB, tar, zip) alors chargez le code source par ftp sur le site officiel de ViM * La page maison de ViM est sur http://www.vim.org * Le site miroir US est sur http://www.us.vim.org * Le site FTP est sur ftp://ftp.vim.org/pub/vim * Ou utilisez un des miroirs sur ftp://ftp.vim.org/pub/vim/MIRRORS 1.2 Installer ViM sous RedHat Linux Pour utiliser ViM, installez les paquetages rpm suivants sous RedHat - _________________________________________________________________ rpm -i vim*.rpm Ou comme ceci - rpm -i vim-enhanced*.rpm rpm -i vim-X11*.rpm rpm -i vim-common*.rpm rpm -i vim-minimal*.rpm _________________________________________________________________ Vous pouvez voir la liste des fichiers ViM que rpm a install� par _________________________________________________________________ rpm -qa | grep ^vim | xargs rpm -ql | less ou rpm -qa | grep ^vim | awk '{print "rpm -ql " $1 }' | /bin/sh | less _________________________________________________________________ Et regardez la sortie en utilisant j, k, CTRL+f, CTRL+D, CTRL+B, CTRL+U ou les touches fl�ch�es, page up/down. Voyez aussi 'man less'. Notez que les paquetages RPM pour RedHat Linux utilisent une interface Motif. Si vous avez install� les librairies GTK sur votre syst�me, vous pouvez envisager de recompiler ViM � partir du source code afin de b�n�ficier d'une interface graphique propre. Pour les informations sur la compilation du code de ViM, voyez � installer ViM sur Unix � plus bas. 1.3 Installer ViM sous GNU Debian Linux Pour installer ViM sous Debian Linux (GNU Linux), identifiez vous en tant que superutilisateur et lorsque vous �tes connect� � Internet tapez - _________________________________________________________________ apt-get install vim vim-rt _________________________________________________________________ Cela chargera la derni�re version de ViM, l'installera, le configurera, et supprimera les fichiers .deb charg�s. Le premier paquetage list� est ViM, l'�diteur standard, compil� avec support pour X11, vim-rt est le vim-runtime, c'est-�-dire les fichiers de syntaxe et d'aide. 1.4 Installer ViM sous Unix Pour les autres versions d'Unix comme Solaris, HPUX, AIX, Sinix, SCO, r�cup�rez les fichiers sources (voyez avant ) _________________________________________________________________ zcat vim.tar.gz | tar -xvf - cd vim-5.6/src ./configure --enable-gui=motif make make install _________________________________________________________________ 1.5 Installer ViM sous Microsoft Windows 95/NT Pour Windows 95/NT, r�cup�rez les fichiers zip et installez-les en cliquant sur setup. Vous devez charger DEUX fichiers zip - * Fichier contenant le runtime _vim*rt.zip_ * Fichier de commande ViM _vim*56.zip_ dont la version est la 5.6 R�cup�rez ces deux fichiers (voir avant ) D�compactez les fichiers zip en utilisant Winzip http://www.winzip.com. Les deux fichiers zip (vim*rt.zip et vim*56.zip) doivent �tre d�compress�s dans le m�me r�pertoire, disons _c:\vim_. Pour Windows 95/98, ajoutez la variable d'environnement VIM dans autoexec.bat en ajoutant cette ligne - _________________________________________________________________ set VIM=c:\vim\vim56 _________________________________________________________________ Pour Windows NT, ajoutez la variable d'environnement dans le dialogue _Control Panel | System | Environment | System Properties_ : _________________________________________________________________ VIM=c:\vim\vim56 _________________________________________________________________ La variable VIM doit pointer l� o� vous avez install� le r�pertoire vim56. Vous pouvez aussi ajouter l'emplacement de gvim.exe � votre PATH. Il est probable que vous deviez vous d�connecter et vous r�identifier pour avoir les bonnes variables. � l'invite MSDOS tapez - _________________________________________________________________ set vim _________________________________________________________________ Et vous devriez voir - VIM=c:\vim\vim56 Cr�ez un raccourci sur votre bureau en copiant/collant de c:\vim\vim56\gvim.exe. Copiez le fichier gvimrc_example vers $VIM\_gvimrc. Dans mon cas, il s'agit de c:\vim\vim56\_gvimrc. 1.6 Installer ViM sous VMS Charger les fichiers Vous aurez besoin des archives Unix et extra pour construire vim.exe pour VMS. Pour utiliser toute la puissance de ViM vous aurez �galement besoin des fichiers runtime. Prenez ces fichiers (voir avant ). Vous pouvez charger des ex�cutables pr�compil�s sur http://www.polarfox.com/vim. Les auteurs de ViM VMS sont - * zoltan.arpadffy@essnet.se * arpadffy@altavista.net * cec@gryphon.gsfc.nasa.gov * BNHunsaker@chq.byu.edu * sandor.kopanyi@altavista.net Compiler D�compactez les archives Unix et Extra dans un m�me r�pertoire. Dans le sous-r�pertoire <.SRC> vous devriez trouver le fichier make OS_VMS.MMS. En �ditant ce fichier vous pourrez choisir les versions des caract�res, des interfaces et du d�bogage. Il y a �galement des options additionnelles concernant les supports pour Perl, Python et Tcl. Vous aurez besoin soit de l'utilitaire DECSET mms ou du clone disponible gratuitement appell� mmk (VMS n'a pas d'utilitaire make en distribution standard). Vous pouvez r�cup�rer mmk sur http://www.openvms.digital.com/freeware/MMK/ Si vous avez MMS sur votre syst�me, la commande > mms /descrip=os_vms.mms construira votre version personnalis�e de ViM. La commande �quivalente pour mmk est : > mmk /descrip=os_vms.mms D�ploiement ViM utilise une structure de r�pertoires sp�ciale pour les fichiers de documentation et d'utilisation : _________________________________________________________________ vim (ou autre) |- tmp |- vim55 |----- doc |----- syntax |- vim56 |----- doc |----- syntax vimrc (fichiers syst�me rc) gvimrc _________________________________________________________________ Utilisez : _________________________________________________________________ > define/nolog device:[leading-path-here.vim] vim > define/nolog device:[leading-path-here.vim.vim56] vimruntime > define/nolog device:[leading-path-here.tmp] tmp _________________________________________________________________ pour que vim.exe puisse trouver ses fichiers de documents, ses types de fichiers et de syntaxe, et pour sp�cifier un r�pertoire o� les fichiers temporaires seront plac�s. Copiez le sous-r�pertoire � runtime � de la distribution vim dans vimruntime. Note : les variables $VIMRUNTIME et $TMP sont optionnelles. Lisez en plus sur :help runtime. Usage pratique Habituellement vous devrez faire tourner une seule version de ViM sur votre syst�me, il est donc suffisant de d�dier un seul r�pertoire � ViM. Copiez toute la structure des r�pertoires de runtime dans la position de d�ploiement. Ajoutez les lignes suivantes � votre LOGIN.COM (dans le r�pertoire SYS$LOGIN). D�finissez la variable $VIM en tant que : _________________________________________________________________ > $ define VIM device: <path> _________________________________________________________________ Configurez quelques symboles : _________________________________________________________________ > $ ! vi lance ViM en mode caract�re > $ vi*m :== mcr device:<path>VIM.EXE > $ !gvi lance ViM en mode GUI > $ gv*im :== spawn/nowait mcr device:<path>VIM.EXE -g _________________________________________________________________ Cr�ez les fichiers .vimrc et .gvimrc dans votre r�pertoire personnel (SYS$LOGIN). La m�thode la plus simple est de renommer les fichiers d'exemples. Vous pouvez laisser le fichier de menu (MENU.VIM) et les fichiers vimrc et gvimrc dans le r�pertoire original $VIM. Ce sera la configuration par d�faut pour tous les utilisateurs, mais ceux-ci pourront apporter leurs propres modifications � la configuration via les fichiers .vimrc et .gvimrc de leur r�pertoire personnel. Ceci devrait marcher sans probl�me. Note : Rappellez-vous, les fichiers syst�mes rc (d�faut pour tous les utilisateurs) n'ont pas de � . � final. Ainsi, les fichiers syst�mes rc sont : _________________________________________________________________ > VIM$:vimrc > VIM$:gvimrc > VIM$:menu.vim _________________________________________________________________ et les fichiers utilisateurs personnalis�s sont : _________________________________________________________________ > sys$login:.vimrc > sys$login:.gvimrc _________________________________________________________________ Vous pouvez v�rifier que tout fonctionne et est � la bonne place avec la commande :version. _________________________________________________________________ Exemple de LOGIN.COM : > $ define/nolog VIM RF10:[UTIL.VIM] > $ vi*m :== mcr VIM:VIM.EXE > $ gv*im :== spawn/nowait mcr VIM:VIM.EXE -g > $ set disp/create/node=192.168.5.223/trans=tcpip _________________________________________________________________ Note : Cette configuration devrait �tre suffisante si vous travaillez sur un serveur seul ou dans un environnement clusteris�, mais si vous d�sirez utiliser ViM en tant qu'�diteur internoeuds, il suffit de d�finir le � chemin � complet : _________________________________________________________________ > $ define VIM "<server_name>[""user password""]::device:<path>" > $ vi*m :== "mcr VIM:VIM.EXE" _________________________________________________________________ par exemple : _________________________________________________________________ > $ define VIM "PLUTO::RF10:[UTIL.VIM]" > $ define VIM "PLUTO""ZAY mypass""::RF10:[UTIL.VIM]" ! si un pass est n� cessaire _________________________________________________________________ Vous pouvez aussi utiliser la variable $VIMRUNTIME pour pointer sur la bonne version de ViM si vous avez plusieurs versions install�es en m�me temps. Si $VIMRUNTIME n'est pas d�fini ViM prendra la valeur de la variable $VIM. Vous pourrez trouver plus d'informations sur la variable $VIMRUNTIME en tapant :help runtime en commande ViM. Questions sur le mode GUI VMS n'est pas un environnement X window natif, vous ne pouvez donc pas lancer ViM en mode GUI � juste comme �a �. Mais ce n'est pas trop compliqu� d'obtenir un ViM fonctionnel. _________________________________________________________________ 1) Si vous travaillez sur la console X VMS. Lancez ViM avec la commande : > $ mc device:<path>VIM.EXE -g ou tapez :gui en commande � l'invite ViM. Pour plus d'infos tapez :help gui 2) Si vous travaillez sur un autre environnement X window comme Unix ou une console VMS X distante. Configurez votre affichage sur cet h�te avec : > $ set disp/create/node=<addresse IP>/trans=<nom-transport> et lancez ViM comme au point 1. Vous pourrez trouver plus d'aide dans la documentation VMS ou tapez: help set disp � l'invite VMS. Exemples : > $ set disp/create/node=192.168.5.159 ! transport par d�faut DECNet > $ set disp/create/node=192.168.5.159/trans=tcpip ! r�seau TCP/IP > $ set disp/create/node=192.168.5.159/trans=local ! affichage sur le m�m e noeud _________________________________________________________________ Note : Vous ne devez en d�finir qu'un. Pour plus d'infos tapez $help set disp � l'invite VMS. 1.7 Installer ViM sous OS/2 Lisez les notes de version de ViM sur OS/2, voyez avant . Pour le moment il n'y a pas de version PM native de la version GUI de ViM ; la version OS/2 est une application en console. N�anmoins, il y a maintenant une version Win32s-compatible GUI, qui devrait �tre utilisable par les utilisateurs de Warp4 (qui supporte Win32s) dans une session Win-OS/2. Les notes de ce fichier se r�f�rent � la version console native. Pour utiliser ViM, vous aurez besoin de l'environnement de lancement emx (au moins la version 0.9b). Elle est g�n�ralement disponible en tant que (demandez le � Archie) : _________________________________________________________________ emxrt.zip emx runtime package _________________________________________________________________ 1.8 Installer ViM sur Apple Macintosh Lisez les notes de version de ViM sur Mac, voyez avant . L'auteur de ViM sur Mac (de l'ancienne version 3.0) est _________________________________________________________________ Eric Fischer 5759 N. Guilford Ave Indianapolis IN 46220 USA _________________________________________________________________ �crivez � enf@pobox.com Rapport de Bogue Mac. Lorsque vous avez � rapporter tout changement sp�cifique au Mac, bogue ou option, incluez l'adresse suivante dans le champ � To: � ou � Copy To: �. dany.stamant@sympatico.ca ViM compile sans ajout avec le projet CodeWarrior en utilisant CodeWarrior 9. Si vous utilisez une version plus r�cente (CW Pro) vous devrez convertir le projet avant toute chose. Pour compiler ViM pour Macs 68k vous devrez ouvrir la ressource � size � dans ResEdit et activer le bouton � High level events aware � pour avoir un copier/coller fonctionnel. Vous devrez augmenter la partition de m�moire � au moins 1024 koctets pour �viter � ViM de se crasher faute de m�moire suffisante. 2. Configurez les fichiers d'initialisation de ViM Pour permettre la coloration syntaxique, vous DEVEZ copier le fichier vimrc dans votre r�pertoire personnel. Il ajoutera �galement le menu � Syntax � pour la commande gvim. Vous pouvez cliquer sur le menu Syntax et s�lectionner le langage appropri�, comme C++, Perl, Java, SQL, ESQL, etc. _________________________________________________________________ cd $HOME cp /usr/doc/vim-common-5.7/gvimrc_example ~/.gvimrc cp /usr/doc/vim-common-5.7/vimrc_example ~/.vimrc _________________________________________________________________ Les commentaires du .vimrc commencent avec les apostrophes ("). Vous pouvez personnaliser vim en �ditant le fichier $HOME/.vimrc et en rajoutant les lignes suivantes : _________________________________________________________________ set guifont=8x13bold "set guifont=9x15bold "set guifont=7x14bold "set guifont=7x13bold _________________________________________________________________ Il est _extr�mement_ recommand� que vous mettiez les compteurs � tabstop � et � shiftwidth � � 4. Le compteur � tabstop � est le nombre d'espaces que TAB ajoutera lorsque vous �diterez sous vim. Le compteur � shiftwidth � est le nombre d'espaces qui d�caleront les lignes en tapant les commandes vi ">>" ou "<<". R�f�rez vous au tutorial de Vim Tutoriel Vim pour plus de d�tails. Pour mettre en place tabstop et shiftwidth : _________________________________________________________________ set tabstop=4 set shiftwidth=4 set nowrapscan set ignorecase _________________________________________________________________ Pour voir la liste des fontes disponibles sous Linux/Unix voyez la commande _xlsfonts_. Tapez - _________________________________________________________________ bash$ xlsfonts | less bash$ xlsfonts | grep -i bold | grep x bash$ man xlsfonts _________________________________________________________________ 2.1 Param�tres du Xdefaults Vous pouvez configurer quelques-unes des propri�t�s de Vim dans le fichier Xdefaults. _ATTENTION : __Ne mettez pas Vim*geometry, il coincerait les menu gvim, utilisez plut�t Vim.geometry � la place._ �ditez votre $HOME/.Xdefaults et ajoutez les lignes suivantes : _________________________________________________________________ ! GVim super couleurs. Vim*useSchemes: all Vim*sgiMode: true Vim*useEnhancedFSB: true Vim.foreground: Black !Vim.background: lightyellow2 Vim*background: white ! N'utilisez PAS Vim*geometry, il coincerait les menu gvim, ! utilisez Vim.geometry. Un ast�risque entre Vim et geometry n'est pas autoris� . ! Vim.geometry: widthxheight Vim.geometry: 88x40 !Vim*font: -misc-fixed-medium-r-normal--20-200-75-75-c-100-iso8859 -15-*5 Vim*menuBackground: yellow Vim*menuForeground: black _________________________________________________________________ Afin que ces changements soient pris en compte, tapez : _________________________________________________________________ xrdb -merge $HOME/.Xdefaults man xrdb _________________________________________________________________ Vous pouvez aussi �diter votre fichier /.gvimrc pour changer les couleurs de fond : _________________________________________________________________ gvim $HOME/.gvimrc Les meilleures couleurs de fond sont jaune clair ou blanc. highlight Normal guibg=lightyellow _________________________________________________________________ 2.2 Fichier vimrc d'exemple Vous pouvez changer des param�tres comme la couleur, les fontes grasses ou normales dans le fichier gvimrc. Il est _extr�mement_ recommand� de configurer la couleur de fond au jaune clair ou blanc. Les ergonomistes disent que la meilleure couleur de fond est le jaune clair ou le blanc. Vous pouvez changer la variable � guibg � comme suit : _________________________________________________________________ highlight Normal guibg=lightyellow _________________________________________________________________ Le fichier d'exemple de vim-5.5/runtime/vimrc_example est celui-ci : " Un exemple de fichier vimrc. " " Mainteneur : Bram Moolenaar <Bram@vim.org> " Derni�res modifications : 9 Sep 1999 " " Pour l'utiliser, copiez le dans " pour Unix et OS/2 : ~/.vimrc " pour Amiga : s:.vimrc " pour MS-DOS and Win32 : $VIM\_vimrc set nocompatible " Utilise les d�fauts Vim (bien mieux !) set bs=2 " autorise l'effacement de tout en mode insertion set ai " toujours utiliser l'autoindentation set backup " Conserver un fichier de sauvegarde set viminfo='20,\"50 " Lit/�crit un fichier .viminfo, ne sauve pas plus " de 50 lignes de registres set history=50 " Conserve 50 lignes d'historique des commandes set ruler " Montre toujours la position du curseur " Pour l'interface Win32: retirez l'option 't' de 'guioptions': pas d'entr�e me nu tearoff " let &guioptions = substitute(&guioptions, "t", "", "g") " N'utilise pas le mode Ex, utilise Q pour le formatage map Q gq " p en mode Visuel remplace le texte s�lectionn� par le registre "". vnoremap p <Esc>:let current_reg = @"<CR>gvdi<C-R>=current_reg<CR><Esc> " Active la coloration syntaxique lorsque le terminal dispose de couleurs " Active aussi la coloration de la derni�re cha�ne recherch�e. if &t_Co > 2 || has("gui_running") syntax on set hlsearch endif " Ne lance la partie suivante que si le support des autocommandes a �t� inclus " lors de la compilation if has("autocmd") " Dans les fichiers textes, toujours limiter la longueur du texte � 78 " caract�res autocmd BufRead *.txt set tw=78 augroup cprog " Supprime toutes les autocommandes cprog au! " Lors du d�but d'�dition d'un fichier : " Pour les fichiers C et C++ active le formatage des " commentaires et l'indentation C " Pour les autres fichiers, les d�sactive. " Ne pas changer l'ordre, il est important que la ligne " avec * arrive avant. autocmd FileType * set formatoptions=tcql nocindent comments& autocmd FileType c,cpp set formatoptions=croql cindent comments=sr:/*,mb:*,e l:*/,:// augroup END augroup gzip " Supprime toutes les autocommandes gzip au! " Active l'�dition des fichiers gzipp�s " Active le mode binaire avant de lire le fichier autocmd BufReadPre,FileReadPre *.gz,*.bz2 set bin autocmd BufReadPost,FileReadPost *.gz call GZIP_read("gunzip") autocmd BufReadPost,FileReadPost *.bz2 call GZIP_read("bunzip2") autocmd BufWritePost,FileWritePost *.gz call GZIP_write("gzip") autocmd BufWritePost,FileWritePost *.bz2 call GZIP_write("bzip2") autocmd FileAppendPre *.gz call GZIP_appre("gunzip") autocmd FileAppendPre *.bz2 call GZIP_appre("bunzip2") autocmd FileAppendPost *.gz call GZIP_write("gzip") autocmd FileAppendPost *.bz2 call GZIP_write("bzip2") " Apr�s la lecture du fichier compress� : d�compresse le texte dans le " buffer avec "cmd" fun! GZIP_read(cmd) let ch_save = &ch set ch=2 execute "'[,']!" . a:cmd set nobin let &ch = ch_save execute ":doautocmd BufReadPost " . expand("%:r") endfun " Apr�s l'�criture du fichier compress� : compresse le fichier �crit avec "cm d" fun! GZIP_write(cmd) if rename(expand("<afile>"), expand("<afile>:r")) == 0 execute "!" . a:cmd . " <afile>:r" endif endfun " Avant l'ajout au fichier compress� : d�compresser le fichier avec "cmd" fun! GZIP_appre(cmd) execute "!" . a:cmd . " <afile>" call rename(expand("<afile>:r"), expand("<afile>")) endfun augroup END " Ce qui suit est d�sactiv�, car il change la liste de sauts. On ne peut pas u tiliser " CTRL-O pour revenir en arri�re dans les fichiers pr�c�dents plus d'une fois. if 0 " Lors de l'�dition d'un fichier, saute toujours � la derni�re position du cu rseur. " Ceci doit se trouver apr�s les commandes de d�compression. autocmd BufReadPost * if line("'\"") && line("'\"") <= line("$") | exe "norm al `\"" | endif endif endif " has("autocmd") 2.3 Fichier gvimrc d'exemple L'exemple de gvimrc de vim-5.5/runtime/gvimrc_example ressemble � celui-ci : _________________________________________________________________ " Un exemple de fichier gvimrc. " Ces commandes sont ex�cut�es lors du lancement de l'interface graphique. " " Mainteneur : Bram Moolenaar <Bram@vim.org> " Derni�res modifications : 2 F�v 1999 " " Pour l'utiliser, copiez le dans " pour Unix et OS/2 : ~/.gvimrc " pour Amiga : s:.gvimrc " pour MS-DOS and Win32 : $VIM\_gvimrc " Passe les commandes externes par un tuyau au lieu d'un pseudo-tty "set noguipty " Active la fonte X11 � utiliser " set guifont=-misc-fixed-medium-r-normal--14-130-75-75-c-70-iso8859-1 " Rend la ligne de commande de 2 lignes plus grande set ch=2 " Permet le shift-insert fonctionnel comme dans les Xterm map <S-Insert> <MiddleMouse> map! <S-Insert> <MiddleMouse> " Ne fait ceci que pour Vim de version 5.0 et ult�rieures. if version >= 500 " J'aime avoir des cha�nes �clair�es dans les commentaires C let c_comment_strings=1 " Active la coloration syntaxique. syntax on " Active la coloration de la cha�ne recherch�e. set hlsearch " Pour la version Win32, on a "K" qui cherche le keyword dans un fichier d'ai de "if has("win32") " let winhelpfile='windows.hlp' " map K :execute "!start winhlp32 -k <cword> " . winhelpfile <CR> "endif " Cache le pointeur de souris lorsque l'on tape set mousehide " Utilise des couleurs sympathiques " Le fond pour le texte normal est en gris clair " Le texte sous la derni�re ligne est en gris sombre " Le curseur est gris " Les constantes ne sont pas soulign�es mais ont un fond l�g�rement plus clai r highlight Normal guibg=grey90 highlight Cursor guibg=Green guifg=NONE highlight NonText guibg=grey80 highlight Constant gui=NONE guibg=grey95 highlight Special gui=NONE guibg=grey95 endif _________________________________________________________________ 3. Fichier d'initialisation de la coloration syntaxique 3.1 M�thode automatique La section ci-dessous provient d'une session gvim en tapant � :help syntax � - _________________________________________________________________ bash$ gvim un_test :help syntax _________________________________________________________________ Cliquez sur le menu Window=>Close_Others pour fermer les autres fen�tres. Utilisez ensuite CTRL+] du menu � Proc�dures de chargement de syntaxe � qui vous emm�nera sur la bonne entr�e. Utilisez CTRL+T pour revenir en arri�re. Si un type de fichier que vous d�sirez utiliser n'est pas encore d�tect�, il y a deux moyens pour l'ajouter. Il vaut mieux ne pas modifier le fichier _$VIMRUNTIME/filetype.vim_. Il sera r��crit lors de l'installation d'une nouvelle version de ViM. Cr��z un fichier dans $HOME/vim/myfiletypes.vim et ajoutez lui ces lignes - _________________________________________________________________ " Nom du fichier : $HOME/vim/mestypesdefichiers.vim " mestypesdefichiers augroup filetype au! BufRead,BufNewFile *.mine set filetype=mine au! BufRead,BufNewFile *.xyz set filetype=drawing au! BufRead,BufNewFile *.prc set filetype=plsql augroup END _________________________________________________________________ Ajoutez ensuite une ligne � vos fichiers $HOME/.vimrc et $HOME/.gvimrc pour initialiser la variable � mestypesdefichiers � au nom de ce fichier. (_ATTENTION : _Vous DEVEZ mettre ceci dans les deux fichiers vimrc et gvimrc pour que ceci fonctionne. Exemple : _________________________________________________________________ <code> let myfiletypefile = "~/vim/myfiletypes.vim" _________________________________________________________________ _NOTE : _Assurez vous que vous initialisez bien � mestypesdefichiers � avant de passer � la d�tection du type de fichier. Ceci doit intervenir avant toute commande � :filetype on � ou � :syntax on �. Votre fichier sera alors parcouru apr�s l'intallation des autocommandes de type de fichier par d�faut. Ceci vous permet de passer outre tous les param�tres par d�faut, en utilisant � :au! � pour supprimer les autocommandes de type de fichier existant pour le m�me sch�ma. Seule l'autocommande pour parcourir le fichier scripts.vim est donn� plus tard. Ceci vous permettra de vous assurer que les autocommandes dans � mestypesdefichiers � sont utilis�es avant de v�rifier le contenu du fichier. 3.2 M�thode manuelle Au lieu d'utiliser un menu � Syntax � vous pouvez lire manuellement le fichier de syntaxe. �ditez le fichier avec gvim et donnez la commande � so � � : (en mode d'�chappement). Par exemple : _________________________________________________________________ gvim foo.pc :so $VIM/syntax/esqlc.vim _________________________________________________________________ Les fichiers de syntaxe sont dans /usr/share/vim/syntax/*.vim. Vim supporte plus de 120 fichiers de syntaxe diff�rents pour divers langages comme C++, PERL, VHDL, JavaScript, etc., et �norm�ment d'autres ! Chaque fichier de syntaxe supporte une ou plusieurs extensions de fichiers par d�faut, par exemple, le fichier de syntaxe JavaScript supporte l'extension *.js. Si vous utilisez une extension qui cr�e un conflit avec un autre fichier de syntaxe par d�faut (comme ajouter du JavaScript � un fichier *.html) vous pourrez alors charger le fichier de syntaxe additionnel avec la commande :so $VIM/syntax/javascript.vim. Pour �viter d'avoir � le taper, vous pouvez cr�er un lien symbolique par : _________________________________________________________________ ln -s $VIM/syntax/javascript.vim js gvim foo.html (... this file contains javascript functions and HTML) :so js _________________________________________________________________ 4. Usage de ViM Vous pouvez utiliser ViM sous deux modes, l'un avec interface graphique et l'autre sans. Pour utiliser l'interface graphique utilisez la commande : _________________________________________________________________ gvim foo.cpp _________________________________________________________________ Pour utiliser le mode non-graphique utilisez : _________________________________________________________________ vim foo.cpp ou le mode ancien vi foo.cpp _________________________________________________________________ Il est tr�s recommand� que vous utilisiez toujours gvim � la place de vim, car le mode GUI avec les couleurs augmentera r�ellement votre productivit�. Le mode GUI gvim permet ce qui suit : * vous pouvez marquer le texte en utilisant la souris pour faire des copier/couper/coller ; * vous pouvez utiliser la barre de menu qui a les boutons File, Edit, Window, Tools, Syntax et Help ; * �galement dans un futur proche dans gvim - une seconde barre de menu affichera la liste des fichiers en cours d'�dition, et vous pourrez changer entre les fichiers en cliquant sur leur nom, � moins que vous n'utilisiez les commandes vi - :e#, :e#1, :e#2, :e#3, :e#4, etc. pour s�lectionner les fichiers. 5. Compagnons Vi En g�n�ral ViM est utilis� en conjonction avec d'autres outils puissants comme _ctags_ et _gdb_. _ctags_ est tr�s rapide pour la navigation au milieu de millions de lignes de code � C/C++ � et _gdb_ est pour le d�boguage de code � C/C++ �. Une br�ve introduction � ces deux commandes indispensables sera donn�e dans ce chapitre. _ctags_ est la commande la plus puissante pour coder en C, C++, Java, Perl, scripts shell Korn/Bourne ou Fortran. Les d�veloppeurs utilisent intensivement _ctags_ pour naviguer au travers de milliers de fonctions � l'int�rieur de programmes C/C++. Voyez `man ctags' sous Unix. Il est _tr�s important_ que vous appreniez comment utiliser ctags pour d�velopper des programmes en C, C++, Java, etc. La navigation est la t�che simple la plus importante lors de d�veloppement en C ou C++. L'utilisation de ctags peut vous aider � rapidement lire le code en sautant de la ligne d'appel � la fonction appell�e, en s'enfon�ant dans les appels de fonctions imbriqu�es, et en remontant de la fonction la plus imbriqu�e jusqu'� la fonction principale. Vous pouvez aller et revenir de fonction en fonction tr�s rapidement. Sans NAVIGATION vous serez compl�tement perdu ! _ctags_ est comme le COMPAS magn�tique n�cessaire aux programmeurs. Utilisation de _ctags_ : _________________________________________________________________ ctags *.cpp gvim -t foo_function gvim -t main _________________________________________________________________ Ceci �ditera le fichier programme C++ qui contient la fonction foo_function() et placera directement le curseur sur la premi�re ligne de la fonction foo_function(). La deuxi�me commande vous placera sur la ligne contenant la d�finition de la fonction main(). � l'int�rieur de l'�diteur ViM, vous pouvez sauter � une fonction en tapant : (double point) tag nom_de_la_fonction comme ci dessous : _________________________________________________________________ :tag fonction_exemple _________________________________________________________________ Ceci placera le curseur sur la premi�re ligne de fonction_exemple(). Si vous voulez sauter dans la fonction � partir de la ligne du fichier contenant le nom de la fonction, placez le curseur juste avant le nom de la fonction et tapez _CTRL+]_ (tapez la touche de contr�le et le crochet gauche simultan�ment). _________________________________________________________________ // code d'exemple switch(id_number) { Case 1: if ( foo_function( 22, "abcef") == 3 ) ^ | | | Placez le curseur ici (juste avant foo_function) et tapez CTR L+] Ceci vous emm�nera � la fonction nomm�e "foo_function". Pour revenir � cette ligne tapez CTRL+t _________________________________________________________________ Pour revenir � la ligne d'appel tapez _CTRL+t_ (la touche de contr�le et la lettre 't' simultan�ment). Continuez � appuyer sur _CTRL+t_ pour inverser et revenir � la premi�re ligne o� vous avez commenc� la navigation. C'est-�-dire que vous pouvez conserver press�es _CTRL+]_ et ensuite taper _CTRL+t_ pour revenir. Vous pouvez refaire ceci aussi souvent que vous le d�sirez pour avoir une navigation compl�te au travers de toutes les fonctions C ou C++. 5.1 Ctags pour ESQL Puisque ctags ne supporte pas directement le langage Embedded SQL/C (ESQL), le script shell suivant peut �tre utilis� pour cr�er les marques pour esql. ESQL/C est un ensemble de commandes SQL de base de donn�e � l'int�rieur de programmes � C �. Le ESQL/C d'Oracle est appell� Pro*C et Sybase, Informix ont ESQL/C et PostgreSQL a produit � ecpg �. Sauvez ce fichier sous � sqltags.sh � et tapez chmod a+rx tags_gen.sh. _________________________________________________________________ #!/bin/sh # Programme pour cr�er les ctags pour les fichiers ESQL, C++ et C ESQL_EXTN=pc tag_file1=tags_file.1 tag_file2=tags_file.2 which_tag=ctags rm -f $tag_file1 $tag_file2 tags aa=`ls *.$ESQL_EXTN` #echo $aa for ii in $aa do #echo $ii jj=`echo $ii | cut -d'.' -f1` #echo $jj if [ ! -f $jj.cpp ]; then echo " " echo " " echo "*******************************************************" echo "Les fichiers ESQL *.cpp files n'existent pas..." echo "Vous devez g�n�rer les fichiers *.cpp � partir des *.pc" echo "en utilisant le pr�-compilateur Oracle Pro*C ou Sybase" echo "ou le pr�-compilateur Informix esql/c." echo "Puis relancez cette commande" echo "*******************************************************" echo " " exit fi rm -f tags $which_tag $jj.cpp kk=s/$jj\.cpp/$jj\.pc/g #echo $kk > sed.tmp #sed -f sed.tmp tags >> $tag_file1 #sed -e's/sample\.cpp/sample\.pc/g' tags >> $tag_file1 sed -e $kk tags >> $tag_file1 done # S'occupe des fichiers C++/C - exclut les fichiers ESQL *.cpp rm -f tags $tag_file2 bb=`ls *.cpp *.c` aa=`ls *.$ESQL_EXTN` for mm in $bb do ee=`echo $mm | cut -d'.' -f1` file_type="NOT_ESQL" # Exclut les fichiers ESQL *.cpp et *.c for nn in $aa do dd=`echo $nn | cut -d'.' -f1` if [ "$dd" = "$ee" ]; then file_type="ESQL" break fi done if [ "$file_type" = "ESQL" ]; then continue fi rm -f tags $which_tag $mm cat tags >> $tag_file2 done mv -f $tag_file2 tags cat $tag_file1 >> tags rm -f $tag_file1 # Doit sortir le fichier des marqueurs pour fonctionner correctement... sort tags > $tag_file1 mv $tag_file1 tags _________________________________________________________________ 5.2 Ctags pour les programmes JavaScript, les scripts shell Korn, Bourne Le script shell donn� ci-dessous peut �tre utilis� pour g�n�rer les marques pour une tr�s large vari�t� de programmes �crits en JavaScript, les scripts PHP/FI, Korn, C, Bourne et beaucoup d'autres. C'est un module tr�s g�n�rique. Sauvez ce fichier sous tags_gen.sh et tapez chmod a+rx tags_gen.sh. _________________________________________________________________ #!/bin/sh tmp_tag=tags_file tmp_tag2=tags_file2 echo " " echo " " echo " " echo " " echo " " echo "G�n�re les marqueurs pour..." while : do echo "Entrer l'extension du fichier pour lequel vous voulez g�n�rer des marqueurs." echo -n "Les extensions de fichiers peuvent �tre sh, js, ksh, etc... : " read ans if [ "$ans" == "" ]; then echo " " echo "Mauvaise entr�e. Essayez encore !" else break fi done rm -f $tmp_tag aa=`ls *.$ans` for ii in $aa do jj=`echo $ii | cut -d'.' -f1` #echo $jj cp $ii $jj.c ctags $jj.c echo "s/$jj.c/$ii/g" > $tmp_tag2 sed -f $tmp_tag2 tags >> $tmp_tag \rm -f tags $jj.c done sort $tmp_tag > tags rm -f $tmp_tag $tmp_tag2 _________________________________________________________________ 5.3 D�boguer avec gdb Vous utiliserez gdb extensivement avec Vi. Le d�boguage est l'un des plus importants aspects de la programmation en tant que co�t majeur du d�veloppement et des tests des projets. Pour d�boguer des programmes C/C++ vous utiliserez l'outil � gdb �. Voyez _'man gdb'_. Vous devrez compiler vos programmes avec l'option -g3 comme gcc -g3 foo.c foo_another.c sample.c Pour configurer des alias utiles : Configurez l'alias dans votre ~/.bash_profile alias gdb='gdb -directory=/home/src -directory=/usr/monnom/src ' Donnera - gdb foo.cpp gdb> dir /hom2/another_src Ceci ajoutera un chemin � la recherche de fichier gdb> break 'some_class::func<TAB><TAB> Ce qui compl�tera le nom de la fonction en vous �vitant le temps de frappe... et sortira comme - gdb> break 'some_class::function_foo_some_where(int aa, float bb)' Taper la touche TAB deux fois permet le compl�ment de la ligne de commande, sauvant ainsi beaucoup de temps de frappe. C'est l'une des techniques les plus importantes pour l'utilisation de gdb. Pour obtenir de l'aide en ligne - gdb> help Donne l'aide en ligne gdb> help breakpoints Donne plus de d�tails sur les points d'ancrage. Pour placer les points d'ancrage et effectuer du d�boguage unixprompt> gdb exe_filename gdb> b main Ceci mettra un point d'ancrage dans la fonction main() gdb> b 123 Ceci mettra un point d'ancrage � la ligne 123 du fichier courant gdb> help breakpoints Donne plus de d�tails sur les points d'ancrage. Pour analyser des core dumps : unixprompt> gdb exe_filename core gdb> bt Donne une trace de retour des fonctions et les num�ros de lignes o� le programme a �chou� gdb> help backtrace Donne plus de d�tails sur la trace de retour. Vous pouvez aussi utiliser une version GUI de gdb appell�e xxgdb. Outils de perte de m�moire - * Freeware Electric Fence sous linux cd * Commercial tools Purify http://www.rational.com * Insure++ http://www.insure.com 6. Aide de ViM en ligne Voyez les pages de manuel en ligne. Au prompt unix, tapez _'man vim'_ et _'man gvim'_. Ou lors d'une session gvim tapez :help pour obtenir la page d'aide. Voyez aussi le Tutoriel Vim 7. Pages web de ViM et liens ViM La page principale de ViM se trouve sur http://www.vim.org, et son site miroir aux US est sur http://www.us.vim.org. La FAQ ViM est sur http://www.grafnetix.com/~laurent/vim/faq.html et sur http://www.vim.org/faq. La page ViM d'Eli se trouve sur http://www.netusa.net/~eli/src/vim.html. La page des amoureux de Vi sur http://www.cs.vu.nl/~tmgil/vi.html. Le guide de r�f�rence sur ViM sur http://scisun.sci.ccny.cuny.edu/~olrcc/vim/. Les listes de diffusion ViM sont sur http://www.findmail.com/listsaver/vimannounce.html et http://www.vim.org/mail.html. Les archives des listes sont conserv�es sur : * http://www.egroups.com/group/vim * http://www.egroups.com/group/vimdev * http://www.egroups.com/group/vimannounce Les macros ViM sont sur http://www.grafnetix.com/~laurent/vim/macros.html. 8. Tutoriel ViM 8.1 Tutoriels ViM sous la main Sur les syst�mes Linux, on trouve souvent le tutoriel dans /usr/doc/vim-common-5.*/tutor, sur les autres syst�mes Unix cherchez le r�pertoire o� ViM est install� et cherchez le r�pertoire doc. _________________________________________________________________ bash$ cd /usr/doc/vim-common*/tutor bash$ less README.txt bash$ cp tutor $HOME bash$ cd $HOME bash$ less tutor _________________________________________________________________ 8.2 Tutoriels Vi sur Internet * Purdue University http://ecn.www.ecn.purdue.edu/ECN/Documents/VI/ * Quick Vi tutorial http://linuxwww.db.erau.edu/LUG/node165.html * Advanced Vi tutorial http://www.yggdrasil.com/bible/bible-src/user-alpha-4/guide/node17 1.html * Tutorials http://www.cfm.brown.edu/Unixhelp/vi_.html * Tutorials http://www.linuxbox.com/~taylor/4ltrwrd/section3_4.html * Unix world online vi tutorial http://www.networkcomputing.com/unixworld/unixhome.html * Univ of Hawaii tutorial http://www.eng.hawaii.edu/Tutor/vi.html * InfoBound http://www.infobound.com/vi.html * Cornell Univ http://www.tc.cornell.edu/Edu/Tutor/Basics/vi/ * Vi Lovers home page http://www.cs.vu.nl/~tmgil/vi.html * Apr�s Sept 2000, sera sur http://www.thomer.com/thomer/vi/vi.html * Beginner's Guide to vi http://www.cs.umr.edu/unixinfo/general/packages/viguide.html * vi Help file http://www.vmunix.com/~gabor/vi.html * ViM FAQ http://www.math.fu-berlin.de/~guckes/vim/faq/ Il y a de nombreux tutoriels Vi sur Internet. Sur Yahoo (Lycos, excite ou Hotbot), entrer � Vi Tutorial � dans le champ de recherche vous renverra de nombreux pointeurs. 9. Tutoriel Vi Dans ce tutoriel, nous d�crirons quelques commandes et concepts _vi_ avanc�s, vous pourrez ainsi appr�cier la puissance de _vi_ et d�cider de construire vos connaissances avec les commandes _vi_. Quasiment toutes les r�f�rences listent les commandes disponibles, mais beaucoup ne montrent pas comment ces commandes interagissent ; ce point pr�cis est le th�me principal de ce tutoriel. 9.1 Commandes du mouvement du curseur Les commandes du mouvement du curseur de _vi_ vous permettent de positionner le curseur dans le fichier et/ou � l'�cran de mani�re efficace, avec un nombre minimal de frappe de touches. Il y a de nombreuses commandes contr�lant les mouvements du curseur - n'essayez pas de toute les m�moriser en une fois ! Plus tard, nous verrons que la majeure partie de la puissance de _vi_ vient du m�lange entre les commandes de mouvement du curseur et les autres commandes pour effacer, changer, copier, et filtrer le texte. Veuillez �diter un gros fichier texte (disons, _wknight_) afin d'exp�rimenter chaque commande d�crite. Gardez en t�te que ces commandes ne marchent qu'en Mode Commande, et pas en Mode Insertion ; si vous voyez vos � commandes � dans votre texte, appuyez sur ESC pour retourner en Mode Commande. * _touches fl�ch�es_ : Ainsi que nous l'avons vu, les touches curseur permettent de se d�placer avec un simple caract�re vers la gauche, le bas, le haut et la droite. Les mouvements au-del� du haut du fichier, en dessous du bas, � droite de la fin de la ligne, ou � gauche du d�but ne sont pas autoris�s (pas de coupure de ligne). * _hjkl_ : Lorsque _vi_ a �t� �crit (vers 1978), de nombreux terminaux sur syst�mes UNIX n'avaient pas de touches fl�ch�es ! _h, j, k,_ et _l_ ont �t� choisies comme commandes pour se d�placer vers la gauche, le bas, le haut, et la droite, respectivement. Essayez les ! La plupart des int�gristes de _vi_ les pr�f�rent aux touches fl�ch�es car : + _(a)_ elles sont � la m�me place sur tous les claviers, et + _(b)_ elles se placent agr�ablement sous les doigts, au contraire de la plupart des touches fl�ch�es, qui sont arrang�es en bo�te ou en � T � ou sous une autre forme non lin�aire. Pourquoi h, j, k, et l ? Eh bien, dans le code des caract�res ascii, CTRL-H est l'effacement (d�placement vers la gauche), CTRL-J le retour chariot (d�placement vers le bas), et bien entendu, k et l sont proches de h et j, et comme vous le voyez, ces touches forment une combinaison mn�monique. * _0_ : (� z�ro �, et pas � oh �) D�placement au d�but de la ligne courante. (Pour essayer ceci et les quelques commandes suivantes, utilisez les touches du curseur ou _h j k l_ pour vous d�placer vers une ligne indent�e contenant quelques caract�res � e �. Si vous ne pouvez trouver de ligne indent�e dans votre fichier, cr�ez en une en ins�rant quelques espaces au d�but de la ligne.) * _^ _: D�placement sur le premier caract�re non-blanc de la ligne courante (pour une ligne indent�e, 0 et ^ ont des significations diff�rentes). * _$ _: D�placement sur le dernier caract�re de la ligne courante. * _tC _: D�placement jusqu'au (mais pas sur) le prochain caract�re C de la ligne courante (tapez 0, puis tapez te. Ceci vous d�placera vers le premier e de la ligne courante). * _fC _: Trouve (d�placement sur) le prochain caract�re C de la ligne courante (tapez fe, et le curseur trouvera - c'est-�-dire se mettra sur - le prochain e de la ligne courante). * _TC _: D�placement jusqu'au (mais pas sur) le pr�c�dent caract�re C de la ligne courante (tapez $, puis Te). * _FC _: Trouve (d�placement sur) le pr�c�dent caract�re C de la ligne courante (tapez Fe). * _n| _: D�placement sur la colonne n de la ligne courante (tapez 20 | ; les chiffres 2 et 0 ne seront pas affich�s lorsque vous les taperez, mais lorsque vous presserez | le curseur se d�placera en colonne 20). Essayez quelquez trucs avec t f T F | . Lorsque vous fa�tes quelque chose d'ill�gal, _vi_ �mettra un bip. * _w _: D�placement au d�but du prochain � petit � mot (un � petit � mot consiste en une suite ininterrompue de caract�res alphanum�tiques ou de caract�res de ponctuation, mais pas un m�lange de caract�res de ponctuation et alphanum�riques). Essayez de taper w une douzaine de fois -- notez ce qui arrive aux ponctuations. * _W _: D�placement au d�but du prochain � grand � mot (m�lange alphanum�rique et ponctuation). Essayez de taper W une douzaine de fois. * _b _: Retour au d�but d'un � petit � mot. * _B _: Retour au d�but d'un � grand � mot. * _e _: D�placement � la fin d'un � petit � mot. * _E _: D�placement � la fin d'un � grand � mot. * _+ Return _: D�placement sur le premier caract�re non-blanc sur la m�me ligne (+ et la touche Entr�e ont le m�me effet). * _- _: D�placement sur le premier caract�re non-blanc de la ligne pr�c�dente. * _) _: D�placement sur la fin d'une phrase (une phrase se termine soit par une ligne blanche, ou un point ou une marque d'exclamation suivis par deux caract�res d'espace ou la fin de la ligne. Un point ou une marque d'exclamation suivis par un seul caract�re d'espace ne termine pas une phrase ; ceci est un comportement correct, en accord avec les r�gles traditionnelles de la mani�re dont les phrases doivent appara�tre dans les documents imprim�s, mais appara�t souvent comme faux pour ceux qui n'ont jamais utilis� une classe typographique correcte.) NdT : Ceci n'est valable qu'en typographie anglaise. En typographie fran�aise, une phrase se termine par un point (ou une marque d'exclamation) suivit par une espace. * _( _: D�placement au d�but d'une phrase. * _} _: D�placement � la fin d'un paragraphe (les paragraphes sont s�par�s par des lignes blanches, par d�finition avec _vi_). * _{ _: D�placement au d�but d'un paragraphe. * _H _: D�placement vers la position premi�re (la ligne du haut) de l'�cran. * _M _: D�placement au milieu de la ligne � l'�cran. * _L _: D�placement sur la derni�re ligne de l'�cran. * _nG _: D�placement sur la ligne n. Si n n'est pas donn�, d�placement sur la derni�re ligne du fichier (essayez 15G pour vous d�placer sur la ligne 15, par exemple. La commande CTRL-G affiche le nom du fichier, quelques informations sur l'�tat, et le num�ro de la ligne actuelle. Pour vous d�placer au d�but du fichier : 1G). * _CTRL-d _: D�placement vers le bas d'un demi-�cran (voir note). * _CTRL-u _: D�placement vers le haut d'un demi-�cran (voir note). * _CTRL-f _: D�placement vers le bas d'un �cran (voir note). * _CTRL-b _: D�placement vers le haut d'un �cran (voir note). * _Note _: Ces quatres commandes de d�placement ne peuvent �tre utilis�es avec les commandes d'effacement, de changement, de copie ou de filtre. * _/reg_exp _: D�placement sur la prochaine occurence de l'expression rationnelle reg_exp. Lorsque vous tapez /, le curseur se d�place vers le coin en bas � gauche de l'�cran et attend que vous tapiez l'expression rationnelle. Tapez la touche Entr�e pour finir ; _vi_ cherchera alors dans la suite du fichier la prochaine occurence de l'expression rationnelle. Par exemple, tapez /the puis Entr�e. Ceci vous d�placera sur la prochaine apparition de the, peut-�tre mise en �vidence au milieu d'un mot plus long (other, weather, etc.). Si vous tapez juste / puis Entr�e, _vi_ cherchera la prochaine apparition de la derni�re expression rationnelle que vous aviez cherch�. * _n _: A le m�me effet que de presser / et Entr�e ; c-�-d recherche la prochaine occurence de la derni�re expression rationnelle que vous aviez cherch�. * _?reg_exp _: Recherche en arri�re, et pas en avant. Si la reg_exp n'est pas donn�e, recherche la derni�re expression rationnelle entr�e. Les 2 / et ? sont tournants, donc rechercher � plus bas � que le bas ou � plus haut � que le haut du fichier est l�gal. * _N _: Identique � ? et Entr�e. 9.2 Compteurs de r�p�titions La plupart des commandes de mouvements pr�sent�es ci-dessus peuvent �tre pr�c�d�es d'un compteur de r�p�titions ; le mouvement est simplement r�p�t� le nombre de fois donn� : * _3w _: D�placement en avant de 3 mots. * _5k _: D�placement vers le haut de 4 caract�res. * _3fa _: Trouve le 3�me � a � successif de la ligne courante. * _6+ _: Descend de 6 lignes. Pour certaines commandes, les � compteurs de r�p�titions � ont des significations sp�ciales : * _4H _: D�placement vers la ligne 4 de l'�cran (touche home et 3). * _8L _: D�placement sur la 8�me ligne � partir du bas de l'�cran. * _3$ _: D�placement � la fin de la 3�me ligne plus bas. Pour plusieurs commandes (telles que ^) le compteur de r�p�tition est ignor� ; pour d'autres (par exemple, / et ?) il est ill�gal. 9.3 Effacer du texte Nous avons vu que _dd_ efface la ligne courante. Ceci peut �tre utilis� avec un compteur de r�p�titions : 3dd efface trois lignes, la ligne courante et les 2 lignes suivantes. La commande d peut �tre utilis�e comme un � pr�fixe � pour la plupart des commandes de mouvement ci-dessus pour effacer � peu pr�s toute sorte de parties de texte. Lorsqu'elles sont utilis�es avec d, les commandes de mouvements sont appell�es des sp�cificateurs de cibles. On peut donner un compteur de r�p�tition � d (lorsque vous essayez ces exp�riences, rappellez vous d'appuyer sur u apr�s chaque commande pour annuler l'effacement). * _dw _: Efface le prochain � petit � mot. * _d3w _: Efface les 3 prochains � petits � mots. * _3dw _: Trois fois, efface le prochain � petit � mot. * _3d3w _: Trois fois, efface les 3 prochains � petits � mots (c'est-�-dire, efface les 9 prochains � petits � mots). * _d+ _: Efface la ligne actuelle et la ligne suivante. * _d/the _: Efface � partir du caract�re courant jusqu'�, mais sans inclure, la prochaine apparition de � the �. * _d$ _: Efface jusqu'� la fin de la ligne. * _d0 _: Efface jusqu'au d�but de la ligne. * _d30G _: Efface la ligne courante jusqu'� et incluant la ligne 30. * _dG _: Efface la ligne courante jusqu'� et incluant la derni�re ligne. * _d1G _: Efface la ligne courante jusqu'� et incluant la ligne 1. Pour effacer de simples caract�res, utilisez x. x peut �tre utilis� en utilisant un compteur r�p�titif : * _15x _: Efface le caract�re courant et les 14 suivants. x est simplement une abbr�viation de d1 ; c'est-�-dire efface un caract�re � droite. 9.4 Changer le texte La commande c est similaire � d, � part qu'elle change le mode de _vi_ en insertion, autorisant le texte original (non d�sir�) � �tre chang� en quelque chose d'autre. Par exemple, placez le curseur sur le d�but d'un mot (tapez w pour arriver au d�but du prochain mot). Ensuite, tapez cw pour changer ce mot. � l'�cran, le dernier caract�re de ce mot en cours de changement sera remplac� par un symbole _$_ indiquant la fin du changement ; tapez un nouveau mot (vous r��crirez le mot original � l'�cran) et tapez la touche ESC lorsque vous aurez fini. Votre entr�e peut �tre plus longue ou plus courte que le mot en cours de changement. Placez le curseur au d�but d'une ligne contenant au moins trois mots, et taper c3w pour changer ces trois mots. Essayez c$ pour changer la fin de la ligne actuelle. Dans tous les cas o� le changement affecte uniquement la ligne courante, la fin du changement est indiqu�e avec $. Lorsqu'un changement affecte plus que la ligne courante, _vi_ efface le texte original de l'�cran et se place en mode insertion. Par exemple, essayez c3+ pour changer la ligne courante et les trois suivantes ; _vi_ supprime les quatres lignes originales de l'�cran et se place en mode d'insertion sur une nouvelle ligne blanche. Comme toujours, tapez la touche ESC lorsque vous aurez fini d'entrer votre nouveau texte. Quelques autres commandes de changement : * _cc _: Change la ligne courante. * _5cc _: Change cinq lignes (courante et quatre suivantes). * _c/the _: Changer du caract�re courant jusqu'�, mais sans inclure, la prochaine occurence de � the �. * _c$ _: Change jusqu'� la fin de la ligne. * _c30G _: Change de la ligne courante jusqu'� la ligne 30 incluse. * _cG _: Changer de la ligne courante jusqu'� et incluant la derni�re ligne. * _c1G _: Changer la ligne courante jusqu'� la ligne 1 incluse. 9.5 Emmener (copier) du texte La commande y emm�ne une copie du texte dans un buffer ; le texte copi� peut �tre plac� (ou coll�) n'importe o� dans le fichier en utilisant p ou P. La forme la plus simple de copie est yy pour copier la ligne courante ; apr�s yy, essayez p pour mettre une copie de la ligne copi�e apr�s le curseur. En suivant yy, vous pouvez faire autant de copie de la ligne emmen�e que vous le voulez en vous d�pla�ant dans le fichier et en tapant p. Pour copier plusieurs lignes, essayez, par exemple, 5yy (copie la ligne courante et les 4 lignes suivantes). p place une copie des lignes emmen�es apr�s le curseur ; la s�quence 5yyp � marche � mais ce n'est probablement pas ce que vous voudriez faire. La commande P fonctionne comme p, mais place une copie de la ligne au-dessus du curseur ; essayez la s�quence 5yyP. Autres commandes de copie : * _y3w _: Copie 3 mots. * _y$ _: Copie jusqu'� la fin de la ligne. * _y1G _: Copie de la ligne courante jusqu'� la ligne 1 incluse. 9.6 Filtrer le texte La commande de filtrage _!_ demande le nom d'une commande UNIX (qui doit �tre un filtre), passe les lignes s�lectionn�es par ce filtre, en rempla�ant les lignes s�lectionn�es dans le buffer _vi_ avec la sortie de la commande filtrante. La capacit� de _vi_ � passer des parties arbitraires de texte au travers de tout filtre UNIX ajoute une flexibilit� incroyable � _vi_, sans � co�t suppl�mentaire � de taille ou de performance � _vi_ m�me. Quelques exemples peuvent aider l'illustration. Cr�ez une ligne dans votre fichier contenant juste le mot � who � et absolument aucun autre texte. Placez le curseur sur cette ligne, et tapez _!!_. Cette commande est analogue � dd, cc, ou yy, mais au lieu d'effacer, de changer ou de copier la ligne courante, elle filtre la ligne courante. Lorsque vous pressez le second !, le curseur descend vers le coin en bas � gauche de l'�cran et un simple ! est affich�, vous demandant d'entrer le nom d'un filtre. En tant que nom de filtre, tapez � sh � et pressez la touche Entr�e. _sh_ (le shell Bourne) est un filtre ! Il lit l'entr�e standard, ex�cute une partie de l'entr�e (c'est-�-dire qu'il ex�cute des commandes), et envoie sa sortie (la sortie de ces commandes) � la sortie standard. Filtrer la ligne contenant � who � au travers de � sh � remplace la ligne contenant � who � par la liste des utilisateurs du syst�me courant -- directement dans votre fichier ! Essayez de r�p�ter ce proc�d� avec _date_. C'est-�-dire, cr�ez une ligne ne contenant rien d'autre que le mot _date_, puis placez le curseur sur cette ligne, et tapez _!!sh_ et la touche Entr�e. La ligne contenant _date_ est remplac�e par la sortie de la commande _date_. Mettez votre curseur sur la premi�re ligne de la sortie de � who �. Comptez le nombre de lignes. Supposons, par exmple, que ce nombre soit six. S�lectionnez alors ces six lignes � filtrer au travers de sort ; tapez _6!!sort_ et la touche Entr�e. Les six lignes seront pass�es � sort, et la sortie de sort remplacera les six lignes d'origine. La commande filtre peut uniquement �tre utilis�e sur des lignes compl�tes, pas sur des caract�res ou des mots. Quelques autres commandes de filtres (ici, � CR � indique pressez Entr�e) : * _!/the CR sort CR_ : Sort la ligne courante jusqu'� la ligne suivante contenant � the � incluse. * _!1Ggrep the CR_ : Remplace la ligne courante jusqu'� la ligne 1 incluse par les lignes contenant � the �. * _!Gawk '{print $1}' CR _: De la ligne courante jusqu'� la fin du fichier, remplace chaque ligne par son premier mot. 9.7 Marquer des lignes et des caract�res Vous pouvez marquer des lignes et des caract�res pour �tre utilis�s en tant que cible pour des mouvements, effacement, changement, copie, et filtration en utilisant la commande mc, o� c est une lettre minuscule. Par exemple, mettez le curseur au milieu d'un mot et tapez ma. Ceci marque le caract�re sous le curseur sous la marque a. Maintenant, d�placez le curseur en dehors du caract�re marqu� vers une ligne diff�rente (utilisez les fl�ches curseur, CTRL-u, ou autre). Pour retourner � la ligne marqu�e, tapez 'a (c'est-�-dire apostrophe, puis a). Ceci vous place sur le premier caract�re non-blanc de la ligne contenant la marque a. Sortez de la ligne encore une fois. Pour retourner au caract�re marqu�, tapez `a (apostrophe inverse, puis a). Ceci vous d�placera sur le caract�re marqu� par a. Le marquage est habituellement utilis� avec l'effacement, le changement, la copie ou la filtration. Par exemple, d�placez le curseur sur une autre ligne que celle contenant la marque a, et pressez d'a (d, apostrophe, a). Ceci efface de la ligne courante jusqu'� la ligne marqu�e a incluse. Mettez le curseur au milieu d'un autre mot et tapez mb pour mettre la marque b. Maintenant, d�placez le curseur hors de ce mot (mais seulement de quelques lignes, ainsi vous pourrez voir ce que nous allons faire plus facilement), et pressez d`b (d, apostrophe inverse, b). Ceci efface le caract�re courant jusqu'au caract�re marqu� par b inclus. Comme autre exemple, pour trier la sortie de who, marquez la premi�re ligne (ma), puis d�placez le curseur vers la derni�re ligne et taper !'asort puis la touche Entr�e. Si vous sautez jusqu'� une marque et que vous d�cidez de revenir en arri�re, de l'endroit d'o� vous avez saut�, vous pouvez taper '' (reviens � la ligne) ou `` (reviens au caract�re). 9.8 Nommer les tampons Lorsque vous effacez, modifiez, ou copier du texte, le texte original est sauv� (jusqu'au prochain effacement, changement ou copie) dans un tampon non nomm� � partir duquel il peut �tre mis en utilisant p ou P. En utilisant le tampon non nomm�, seul le plus r�cent changement du texte peut �tre r�cup�r�. Si vous voulez effacer, changer ou copier plusieurs parties de texte et se souvenir de toutes (jusqu'� un maximum de 26), vous pouvez donner un nom au tampon avec la commande utilis�e. Un nom de tampon est de la forme "c (double apostrophe, c minuscule). Par exemple, tapez "ayy pour copier la ligne courante dans le tampon a, puis d�placez vous sur une autre ligne et tapez "byy pour copier cette ligne dans le tampon b. Maintenant, d�placez vous n'importe o� dans le fichier et tapez "ap et "bp pour placer des copies du texte sauv� dans les tampons a et b. Quelques autres commandes de tampon : * _"a6yy _: Copie 6 lignes (courante et 5 suivantes) dans le tampon a. * _"bd1G _: Efface de la ligne courante jusqu'� la ligne 1 incluse, en sauvant les lignes effac�es dans le tampon b. * _"cy'c _: Copie de la ligne courante jusqu'� la ligne marqu�e c dans le tampon c (les marques et les tampons sont distincts, et peuvent avoir le m�me nom sans que _vi_ ne s'en pr�occupe). 9.9 Substitutions Pour �changer un bloc de texte par un autre dans les lignes de votre fichier, utilisez la commande :s. Quelques exemples de substitutions : * _:1,$s/the/THE/g _De la ligne 1 � la derni�re ligne (ligne $), remplace le texte � the � par � THE � ; le fais globalement pour toute ligne o� se trouve un � the �. * _:'a,.s/.*/ha ha/ _De la ligne marqu�e a jusqu'� la ligne actuelle (ligne .), substitue tout ce qu'il y a sur la ligne par le texte � ha ha �. 9.10 Diverses � commandes double point � Toutes les commandes de double point d�butent avec � : � ; lorsque vous tapez ce symbole, le curseur saute vers le coin bas � gauche de l'�cran, et un prompt � deux points est affich�, attendant que vous finissiez la commande. Quelques exemples importants : * _:w _�crit le contenu du tampon dans le fichier sans quitter _vi_. * _:w abc _�crit le contenu du tampon dans le fichier abc (cr�e abc s'il n'existe pas, ou r��crit son contenu actuel s'il existe) sans quitter _vi_. * _:1,10w abc _�crit les lignes 1 � 10 dans le fichier abc. * _:'a,$w abc _�crit de la ligne marqu�e a jusqu'� la derni�re ligne dans le fichier abc. * _:e abc _�dite le fichier abc, au lieu du fichier actuel. _vi_ affiche un message d'erreur si des changements ont �t� faits au fichier actuel et qui n'ont pas �t� sauv�s avec :w. * _:e # _�dite le fichier pr�c�demment �dit� (des commandes successives :e# vont et viennent entre deux fichiers). * _:f abc _Change le nom du fichier pour le tampon actuel vers abc. * _:q _Quitte, � moins qu'il n'y ait des changements que vous ayez faits. * _:q! _Quitte, en omettant tous les changements que vous pourriez avoir fait. * _:r abc _Lit le fichier abc dans le tampon _vi_ actuel, apr�s la ligne sur laquelle se trouve le curseur (essayez :r croc pour ins�rer une copie du fichier croc). * _:!cmd _Ex�cute la commande cmd (who, sort, ls, etc.). 9.11 Utiliser les options Diverses options peuvent affecter le � confort � de _vi_. Vous pouvez afficher toutes les diverses options pouvant �tre utilis�es en tapant set all. Vous pouvez �galement utiliser � :set � pour changer les options. Par exemple, si vous d�sirez voir le num�ro de ligne pour les lignes du fichier que vous �ditez, utilisez la commande :set number. Pour supprimer l'affichage du num�ro de ligne, utilisez la commande :set nonumber. La plupart des options peuvent �tre abr�g�es ; :set nu affiche le num�ro des lignes et :set nonu le supprime. Si vous utilisez :set nomagic, la signification sp�ciale des caract�res d'expression r�guli�re (point, ast�risque, crochet, etc.) est supprim�e. Utilisez :set magic pour restaurer ces significations particuli�res. Quelques options ont une valeur. Par exemple, :set tabstop=4 affiche les tabulations en quatre caract�res d'espace, plut�t que les huit habituels. Si vous trouvez que vous d�sirez toujours certaines options plac�es de certaines mani�res, vous pouvez mettre ces commandes optionnelles dans un fichier .exrc, ou vous pouvez utiliser la variable d'environnement EXINIT pour sp�cifier les options d�sir�es. Par exemple, si votre shell par d�faut est le shell Bourne, cette ligne peut aller dans votre fichier .profile : _________________________________________________________________ EXINIT='set nomagic nu tabstop=4'; export EXINIT _________________________________________________________________ Si votre shell par d�faut est un C shell, cette ligne peut aller dans votre fichier .login : _________________________________________________________________ setenv EXINIT 'set nomagic nu tabstop=4' _________________________________________________________________ 9.12 Cartographie des touches Si vous vous apercevez que vous utilisez encore et encore la m�me s�rie de commandes simples, vous pouvez les lier � une touche de commande inutilis�e en utilisant la commande :map. Si votre lien inclut des caract�res de contr�le comme la touche Entr�e (ctrl-M en ascii) ou ESC (ctrl-[ en ascii), vous pouvez les faire pr�c�der de ctrl-v pour supprimer leur signification classique. Par exemple, cette commande relit ctrl-A pour d�placer le curseur de 55 lignes, puis revenir � la ligne vide la plus r�cente, changer ensuite cette ligne blanche par un saut de page (ctrl-L) et trois lignes blanches. C'est � dire que chaque ctrl-A paginera la page suivante, sans couper de paragraphes entre les pages. Note : Dans cette commande, chaque caract�re de contr�le est repr�sent� par ^C, o� C est une lettre majuscule quelconque. Par exemple, ctrl-M est repr�sent� par ^M. De m�me, lorsque vous entrez cette commande vous ne verrez pas les caract�res ctrl-v : chaque ctrl-v se voit remplac� par la signification sp�ciale du caract�re de contr�le suivant, ainsi lorsque vous utiliserez la s�quence ^V^M, tout ce que vous verrez � l'�cran est un ^M. Dans cette commande, ^M est la touche Entr�e et ^[ la touche ESC. _________________________________________________________________ :map ^A 55+?^$^V^Mcc^V^L^V^M^V^M^V^M^V^[ _________________________________________________________________ 9.13 �diter plusieurs fichiers Vous pouvez �diter plusieurs fichiers avec _vi_ en lui donnant plusieurs noms de fichiers en arguments de ligne de commande : _________________________________________________________________ vi croc fatherw wknight _________________________________________________________________ Trois commandes sont utilis�es pour se d�placer entre plusieurs fichiers : * _:n _D�place dans le prochain fichier de la liste d'arguments (vous devez sauver les changements avec :w ou _vi_ affichera un message d'erreur). * _:N _D�place dans le fichier pr�c�dent de la liste d'arguments (vous devez sauver les changements avec :w ou _vi_ affichera un message d'erreur). * _:rew _Rembobine et repart du premier fichier de la liste d'arguments. Les commandes :n, :N et :rew sont quelques peu �tranges, mais elles ont des b�n�fices importants : le contenu des tampons ("a, "b, "c, etc.) sont connus entre les fichiers, et vous pouvez ainsi utiliser :n et :rew avec p et P pour copier le texte vers l'un ou l'autre des fichiers. De m�me, la plus r�cente cha�ne de recherche des commandes / et ? sont les m�mes suivant les fichiers, et vous pouvez ainsi faire des recherches r�p�t�es sur plusieurs fichiers assez facilement. Par exemple, tentez l'exp�rience suivante : tout d'abord sortez de _vi_, et ex�cutez ensuite _vi_ avec croc et wknight en arguments : _________________________________________________________________ $ vi croc wknight _________________________________________________________________ Dans croc, cherchez _/the < CR > _ Copiez cette ligne dans le tampon a : _"ayy _ Maintenant d�placez vous sur le prochain fichier (vous n'avez fait aucun changement � croc, donc �a marchera) : _:n < CR > _ Cherchez la ligne suivante contenant � the �, sans retaper la cha�ne de recherche : _n _ Mettez une copie du tampon apr�s la ligne courante dans wknight : _"ap _ Descendez de deux lignes, et copiez la ligne courante dans le tampon b : _jj"byy _ Sauvez les changements de wknight _:w < CR > _ Maintenant, retournez � croc _:rew < CR > _ Cherchez encore, et mettez une copie du tampon b apr�s la ligne trouv�e : _n"bp _ Sauvez les changements, et quittez _vi_ _ZZ _ 9.14 Remarques finales Ce tutoriel �tait pr�vu pour vous introduire quelques unes des possibilit�s de _vi_ que vous pouvez �galement retrouver dans le manuel _vi_ de votre syst�me ou qui ne sont pas mentionn�es dans ce manuel (de nombreux syst�mes ont des manuels de qualit� tr�s vari�e). Vous ne serez pas un expert _vi_ apr�s la lecture de ce tutoriel, mais vous aurez une bonne appr�ciation des possibilit�s de _vi_. Seul le temps et l'effort peuvent vous faire devenir un expert _vi_. Mais l'efficacit� et l'universalit� de _vi_ rend cet effort payant dans le long terme. Vous pouvez avoir d�cid� que vous d�testez _vi_. Tr�s bien ! Mais prenez garde, _vi_ demeure l'�diteur de texte standard sous UNIX - le seul �diteur sur lequel vous pouvez compter pour �tre disponible sous tout syst�me UNIX que vous utiliserez - donc m�me si vous pr�f�rez utiliser quelque chose d'autre dans la vie courante, vous seriez avis� de conna�tre le minimum � propos de _vi_ qui est couvert dans ce tutoriel. 10. Carte de r�f�rence ViM 10.1 �tats Vi Vi a 3 modes : 1. _mode commande_ - �tat normal et initial ; les autres reviennent ici (utilisez _ESC_ pour stopper une commande partiellement tap�e). 2. _mode d'entr�e_ - Atteint par diff�rentes commandes _a i A I o O c C s S R _et termin� par _ESC_ ou anomalement par interruption. 3. _mode ligne_ - C-�-d attendant une entr�e apr�s une commande _: _, _/ _, _?_ ou un _! _(termin� par _CR_, stopp� par _CTRL-c_). _CTRL_ est la touche de contr�le : _CTRL-c_ signifie � control c �. 10.2 Commandes Shell 1. _TERM=_ _code_ Place le nom de code de votre terminal dans la variable _TERM_. 2. _export TERM_ Transporte la valeur de _TERM_ (le code du terminal) vers tout programme UNIX d�pendant du terminal. 3. _tput init_ Initialise le terminal pour qu'il fonctionne proprement avec divers programmes UNIX. 4. _vi __fichier_ Acc�de � l'�diteur _vi_ afin de pouvoir �diter le fichier sp�cifi�. 5. _vi __fichier1 fichier2 fichier3_ Rentre trois fichiers dans le tampon _vi_ � �diter. Ces fichiers sont _fichier1, fichier2_, et _fichier3_. 6. _view __fichier_ Invoque l'�diteur vi sur le _fichier_ en mode lecture. 7. _vi -R __fichier_ Invoque l'�diteur vi sur le _fichier_ en mode lecture. 8. _vi -r __fichier_ R�cup�re le _fichier_ et les �ditions r�centes apr�s le crash du syst�me. 10.3 Activer les options 1. _:set_ _option_ Active l'_option_. 2. _:set_ _option=valeur_ Assigne la _value_ � l'_option_. 3. _:set no_ _option_ D�sactive l'_option_. 4. _:set _Affiche les options activ�es par l'utilisateur. 5. _:set all_ Affiche la liste de toutes les options, � la fois les options par d�faut et celles activ�es par l'utilisateur. 6. _:set __option_? Affiche les valeurs de l'_option_. 10.4 Notations utilis�es Notations : 1. _CTRL-c_ _CTRL_ est la touche de contr�le : _CTRL-c_ signifie � control c � ; 2. _CR_ est le retour chariot (touche Entr�e). 10.5 Interrompre, annuler * _ESC_ Arr�te l'insertion ou une commande incompl�te ; * _CTRL-?_ _CTRL_ est la touche de contr�le : _CTRL-?_ signifie � control ? � supprime ou interrompt des interruptions ; * _CTRL-l_ r�affiche/rafra�chit l'�cran si ctrl-? l'a malmen�. 10.6 Manipulation de fichier * _ZZ_ Sauve le fichier et sort de vi. * _:wq_ Sauve le fichier et sort de vi. * _:w_ �crit le fichier courant. * _:w!_ Force l'�criture du fichier courant, si le fichier est en lecture seule. * _:wnom_ �crit dans le fichier _nom_. * _:q_ Sort de vi. * _:q!_ Force la sortie de vi (annule les changements). * _:e name_ �dite le fichier _nom_. * _:e!_ R��dite, en annulant les changements. * _:e + name_ �dite le fichier _nom_, en partant de la fin. * _:e + n_ �dite en partant de la ligne _n_. * _:e #_ �dite un fichier alternatif. * _:n_ �dite le fichier suivant de la _liste des arguments_. * _:args_ Liste les fichiers de la liste actuelle. * _:rew_ Rembobine la liste des fichiers et �dite le premier. * _:n args_ Sp�cifie une nouvelle liste des arguments. * _:f _Affiche le fichier actuel et la ligne. * _CTRL-G_ Synonyme de :f, affiche le fichier actuel et la ligne. * _:ta tag _Pour marquer l'entr�e du fichier par _tag_. * _CTRL-] _:ta, le mot suivant est tag. 10.7 Mouvement * _Fl�ches_ D�place le curseur. * _CTRL-d_ Descend d'une demi-page. * _CTRL-u_ Monte d'une demi page. * _CTRL-f_ Descend d'une page enti�re. * _CTRL-b_ Monte d'une page enti�re. * _:0_ D�placement au d�but du fichier. * _:n_ D�placement � la ligne num�ro n. * _:$_ D�placement � la fin du fichier. * _0_ D�placement au d�but de la ligne. * _^_ D�placement au premier caract�re non-blanc. * _$_ D�placement au d�but de la ligne. * _CR_ D�placement au d�but de la ligne suivante. * _-_ D�placement au d�but de la ligne pr�c�dente. * _%_ Trouve le crochet correspondant. * _G _Va � la ligne (d�faut � la derni�re ligne). * _]] _section/fonction suivante. * _[[ _section/fonction pr�c�dente. 10.8 Positionnement en ligne * _H _Premi�re ligne de l'�cran. * _L _Derni�re ligne de l'�cran. * _M _Ligne du milieu de l'�cran. * _+ _Ligne suivante, sur le premier non-blanc. * _- _Ligne pr�c�dente, sur le premier non-blanc. * _CR _Entr�e, pareil que +. * _j _Ligne suivante, m�me colonne. * _k _Ligne pr�c�dente, m�me colonne. 10.9 Positionnement des caract�res * _0 _D�but de la ligne. * _$ _Fin de la ligne. * _h _Avance. * _l _Recule. * _SPACE _Pareil que l. * _fx _Trouve x en avant. * _Fx _Trouve x en arri�re. * _; _R�p�te le dernier f F. * _, _Inverse de ; . * _| _Vers la colonne sp�cifi�e. * _% _Trouve le { ou } correspondant. 10.10 Mots, phrases, paragraphes * _w _Mot en avant. * _b _Mot en arri�re. * _e _Fin du mot. * _) _Phrase suivante. * _( _Phrase pr�c�dente. * _} _Paragraphe suivant. * _{ _Paragraphe pr�c�dent. * _W _Mot d�limit� par du blanc. * _B _Retour d'un mot blanc. * _E _Fin d'un mot blanc. 10.11 Marquage et retour * _``_ (taper deux fois la touche `) Contexte pr�c�dent. * _''_ (taper deux fois la touche ') Contexte pr�c�dent au premier non-blanc de la ligne. * _mx_ Marque la position avec la lettre x. * _`x_ (touche ` et lettre x) Va � la marque x. * _'x_ Va � la marque x au premier non-blanc de la ligne. 10.12 Corrections au cours de l'insertion * _CTRL-h_ Efface le dernier caract�re. * _CTRL-w_ Efface le dernier mot. * _erase _Taper la touche DELETE, pareil que CTRL-h. * _kill _Votre touche kill, efface l'entr�e de la ligne. * _\ _�chappement de CTRL-h, efface et kill. * _ESC _Stoppe l'insertion, retourne en commande. * _CTRL-? _Interrompt, termine l'insertion. * _CTRL-d _Retour de tabulation sur un _autoindent_. * _CTRL-v _Affiche un caract�re non affichable. 10.13 Ajuster l'�cran * _CTRL-l_ Efface et redessine. * _CTRL-r_ Redessine, �limine les lignes @. * _z-CR_ Redessine avec la ligne courante en haut. * _z-_ Redessine, avec la ligne courante au bas de la fen�tre. * _z._ Redessine, avec la ligne courante au centre de la fen�tre. * _/pat/z-_ Ligne contenant _pat_ en bas. * _tn_ Utilise une fen�tre de n lignes. * _CTRL-e_ Descend la fen�tre d'une ligne. * _CTRL-y_ Remonte la fen�tre d'une ligne. 10.14 Effacer * _x_ Efface le caract�re sous le curseur. * _X_ Efface le caract�re avant le curseur. * _D_ Efface jusqu'� la fin de la ligne. * _d^_ Efface jusqu'au d�but de la ligne. * _dd_ Efface la ligne. * _ndd_ Efface _n_ lignes en commen�ant � la ligne actuelle. * _dnw_ Efface _n_ mots en partant du curseur. 10.15 Ins�rer, changer * _i_ Passe en mode d'insertion avant le curseur. * _I_ Passe en mode d'insertion avant le premier caract�re non-blanc. * _a_ Passe en mode d'insertion apr�s le curseur. * _A_ Passe en mode d'insertion apr�s la fin de la ligne. * _o_ Ouvre une nouvelle ligne en dessous de la ligne courante et passe en mode d'insertion. * _O_ Ouvre une nouvelle ligne au dessus de la ligne courante et passe en mode d'insertion. * _r_ Remplace le caract�re en dessous du curseur (ne passe PAS en mode d'insertion). * _R_ Entre en mode d'insertion en rempla�ant les caract�res. * _C_ shift-c. Change le reste de la ligne. * _D_ shift-d. Efface le reste de la ligne. * _s_ Substitue des caract�res. * _S_ Substitue des lignes. * _J_ Joint les lignes. 10.16 Copier et coller Le tampon de copie est rempli par _TOUTE_ commande d'effacement, ou explicitement par _Y_ et _yy_. * _Y_ Copie la ligne courante dans le tampon. * _nyy_ Copie _n_ lignes en partant de la ligne actuelle dans le tampon. * _p_ Colle le tampon apr�s le curseur (ou sous la ligne actuelle). * _P_ Colle le tampon avant le curseur (ou avant la ligne actuelle). * _"xp _Colle � partir du buffer x. * _"xy _Copie dans le tampon x. * _"xd _Efface dans le tampon x. 10.17 Op�rateurs (utiliser des doubles pour agir sur les lignes compl�tes) * _d _Effacer. * _c _Changer. * _< _D�placement gauche. * _> _D�placement droit. * _! _Filtrer au travers de la commande. * _= _Indenter pour LISP. * _y _Copier le texte dans le tampon. 10.18 Chercher et remplacer * _/texte_ Cherche en avant pour _texte_. * _?texte_ Cherche en arri�re pour _texte_. * _n_ R�p�te la derni�re recherche dans la m�me direction. * _N_ R�p�te la derni�re recherche dans la direction inverse. * _/_ R�p�te la derni�re recherche en avant. * _?_ R�p�te la derni�re recherche en arri�re. * _[ addr ] s/from/to/ [ g ] _Cherche une occurence de _from_ et remplace par _to_ dans la ligne actuelle, ou dans le bloc. _addr_ (deux num�ros de lignes s�par�s par une commande ; 1,$ est le fichier entier) remplace une occurence par ligne, ou toutes les occurences si _g_ est sp�cifi�. Par exemple, :3,20s/unmot/unautre/g remplacera "unmot" par "unautre" de la ligne 3 � la ligne 20. 'g' est global et signifie que toutes les occurences de "unmot" seront remplac�es. 10.19 G�n�ral * _:sh_ Donne un shell (� quitter avec CTRL-d). * _:!commande_ Lance un shell pour ex�cuter _commande_. * _:set number_ Active la num�rotation des lignes. * _:set nonumber_ D�sactive la num�rotation des lignes. 10.20 Commandes d'�dition de ligne * _:_ Pr�vient _vi_ que les prochaines commandes seront des commandes pour l'�diteur de ligne. * _:sh_ Retourne temporairement au shell pour ex�cuter quelques commandes shell sans quitter _vi_. * _CTRL-d_ Sort du shell temporaire et retourne sous _vi_ afin de pouvoir �diter la fen�tre actuelle. * _:__n_ Va � la _n_�me ligne du tampon. * _:__x,z__w_ _fichier_ �crit les lignes _x_ � _z_ dans un nouveau fichier appell� _fichier_. * _:$_ D�place le curseur au d�but de la derni�re ligne du tampon. * _:.,$d_ Efface toutes les lignes de la ligne actuelle � la derni�re ligne. * _:r_ _fichier_ Ins�re le contenu du fichier _fichier_ sous la ligne actuelle du tampon. * _:s__/texte/autre_texte/_ Remplace la premi�re apparition de _texte_ sur la ligne actuelle par _autre_texte_. * _:s__/texte/autre_texte/g_ Remplace toutes les apparitions de _texte_ sur la ligne actuelle par _autre_texte_. * _:g__/texte/s//autre_texte/g_ Change toutes les apparitions de _texte_ dans le tampon par _autre_texte_. 10.21 Autres commandes * _u_ Annule le dernier changement. * _U_ Restaure la ligne actuelle. * _~_ Change la casse. * _J_ Joint la ligne actuelle et la ligne suivante. * _._ R�p�te la derni�re commande de changement de texte. * _CTRL-g_ Montre le nom du fichier et le nombre de lignes. 11. URLs connexes Les URLs connexes � ViM sont sur : * C et C++ Beautifer http://www.metalab.unc.edu/LDP/HOWTO/C-C++Beautifier-HOWTO.html * Linux goodies http://www.aldev.8m.com ou sur http://www.aldev.webjump.com 12. Autres formats de ce document Ce document est publi� sous 11 formats diff�rents, nomm�ment - DVI, Postscript, Latex, Adobe Acrobat PDF, LyX, GNU-info, HTML, RTF(Rich Text Format), Plain-text, pages man Unix et SGML. * Vous pouvez obtenir ce document howto sous la forme d'une archive tar en html, dvi, postscript et sgml de : ftp://metalab.unc.edu/pub/Linux/docs/HOWTO/other-formats/ * Le format texte plein est sur : ftp://metalab.unc.edu/pub/Linux/docs/HOWTO * Les traductions dans d'autres langages comme fran�ais, allemand, espagnol, chinois, japonais sont sur ftp://metalab.unc.edu/pub/Linux/docs/HOWTO. Toute aide de votre part pour traduire ce document dans d'autres langages est la bienvenue. Ce document est �crit en utilisant un outil nomm� � SGML tools � qui peut �tre obtenu de : http://www.sgmltools.org. Pour compiler le source vous obtiendrez les commandes suivantes comme : * sgml2html Vim-howto.sgml (pour g�n�rer un fichier html) * sgml2rtf Vim-howto.sgml (pour g�n�rer un fichier RTF) * sgml2latex Vim-howto.sgml (pour g�n�rer un fichier latex) Les documents LaTeX peuvent �tre convertis en fichiers PDF en produisant simplement une sortie Postscript en utilisant _sgml2latex_ (et dvips) et en utilisant la sortie via la commande Acrobat _distill_ ( http://www.adobe.com) comme suit : _________________________________________________________________ bash$ man sgml2latex bash$ sgml2latex filename.sgml bash$ man dvips bash$ dvips -o filename.ps filename.dvi bash$ distill filename.ps bash$ man ghostscript bash$ man ps2pdf bash$ ps2pdf input.ps output.pdf bash$ acroread output.pdf & _________________________________________________________________ Ou vous pouvez utiliser la commande Ghostscript _ps2pdf_. ps2pdf est un clone pour la majorit� des fonctionnalit�s du produit Adobe's Acrobat Distiller : il convertit les fichiers PostScript en fichiers Portable Document Format (PDF). _ps2pdf_ est impl�ment� sous la forme d'un fichier script de commandes tr�s petit qui invoque Ghostscript, en s�lectionnant un p�riph�rique de sortie sp�cial nomm� _pdfwrite_. Afin d'utiliser ps2pdf, le p�riph�rique pdfwrite doit �tre inclus dans le makefile lors de la compilation Ghostscript ; voyez la documentation sur la compilation de Ghostscript pour les d�tails. Ce document se trouve sur : * http://metalab.unc.edu/LDP/HOWTO/ViM-HOWTO.html Vous pouvez aussi trouver ce document sur les sites miroirs suivants : * http://www.caldera.com/LDP/HOWTO/ViM-HOWTO.html * http://www.WGS.com/LDP/HOWTO/ViM-HOWTO.html * http://www.cc.gatech.edu/linux/LDP/HOWTO/ViM-HOWTO.html * http://www.redhat.com/linux-info/ldp/HOWTO/ViM-HOWTO.html * D'autres sites miroirs pr�s de vous (� l'�chelle du r�seau) peuvent se trouver sur http://metalab.unc.edu/LDP/mirrors.html, s�lectionnez un site et allez voir le fichier /LDP/HOWTO/Vim-HOWTO.html. Afin de voir un document au format dvi, utilisez le programme xdvi. Le programme xdvi se trouve dans le paquetage tetex-xdvi*.rpm de la Redhat Linux qui peut se trouver dans ControlPanel | Applications | Publishing | TeX. Pour lire un document dvi utilisez la commande : xdvi -geometry 80x90 howto.dvi man xdvi Et redimmensionnez la fen�tre avec une souris. Voyez la page man de xdvi. Pour naviguer utilisez les fl�ches, les touches page up, down, ou �galement les lettres 'f', 'd', 'u', 'c', 'l', 'r', 'p', 'n' pour monter, descendre, centrer, page suivante, page pr�c�dente, etc. Pour supprimer le menu expert appuyez sur 'x'. Vous pouvez lire le fichier postscript avec le programme 'gv' (ghostview) ou 'ghostscript'. Le programme ghostscript est dans le paquetage ghostscript*.rpm et le programme gv dans gv*.rpm, qui se trouvent sous ControlPanel | Applications | Graphics. Le programme gv est beaucoup plus agr�able � utiliser que ghostscript. Ghostscript et gv sont aussi disponibles sous d'autres plateformes comme OS/2, Windows 95 et NT. Vous pouvez donc lire ce document sur toutes ces plateformes. * Prenez ghostscript pour Windows 95, OS/2, et tous les OS sur http://www.cs.wisc.edu/~ghost Pour lire le document postscript utilisez la commande : gv howto.ps ghostscript howto.ps Vous pouvez lire le document en html en utilisant Netscape Navigator, Microsoft Internet explorer, Redhat Baron ou tout autre des 10 navigateurs web. Vous pouvez lire la sortie LaTeX ou LyX en utilisant LyX ou vim. 13. Notice de Copyright Le Copyright est GNU/GPL comme pour le LDP (Linux Documentation project). Le LDP est un projet GNU/GPL. Les restrictions additionnelles sont - vous devez conserver le nom de l'auteur, l'adresse mail et cette notice de Copyright sur toutes les copies. Si vous effectuez un changement ou une addition � ce document, vous devez notifier tous les auteurs de ce document.