\documentclass[a4paper]{article}
\usepackage[landscape,body={28cm,20cm},left=2em,top=0em]{geometry} % ,top=-2.5em
%\usepackage[landscape,body={29cm,20.714cm},mag=966,left=2em,top=0em]{geometry} % ,top=-2.5em
\special{landscape}
\usepackage{multicol}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[francais]{babel}
%\usepackage{palatino}

\newcommand{\titre}[1]{\medskip\par\noindent\textsf{\textbf{\large #1}}\smallskip\par}
\newcommand{\key}[2]{#1 &\texttt{#2}\\}
\newcommand{\keyg}[2]{\texttt{#2}&#1\\}
\newcommand{\sep}{\hline}
\newcommand{\exemple}[1]{\multicolumn{2}{c}{\emph{Exemple.} #1}\\}
\newcommand{\bs}{$\backslash$}
\newcommand{\tab}{\hspace{2em}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newenvironment{keylist}
     {\noindent\begin{tabular*}{\linewidth}{lr}} % p{0.6\linewidth}
     {\end{tabular*}}

\newenvironment{fivecolumns}
     {\noindent\begin{tabular*}{\linewidth}{lllll}} % p{0.6\linewidth}
     {\end{tabular*}}
\newcommand{\fivekeys}[5]{\texttt{#1}&\texttt{#2}&\texttt{#3}&\texttt{#4}&\texttt{#5}\\}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\vi}{\textsc{vi}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\begin{multicols*}{3}
  \begin{center}
{\Large \bf Carte de référence de l'éditeur \vi}\\
Valvassori Moïse -- $ $Revision: 1.1 $ $
  \end{center}

\titre{Modes}
\vi{} possède deux modes: le mode commande et le mode insertion. L'éditeur démarre en mode commande.
Le mode insertion commence lorsqu'on rentre une commande d'insertion ou de changement. La touche
[\textsl{esc}] permet de revenir en mode commande.

La plupart des commandes s'exécutent pendant la saisie sauf celle qui sont précédées par deux points
(\texttt{\string:}). Ces dernières s'exécutent après avoir appuyé sur la touche [\textsl{entrée}].


\titre{Quitter}
\begin{keylist}
\key{sortir et sauver}{:x}
\key{sortir (si pas de changement)}{:q}
\key{sortir (sans sauver les fichiers modifés)}{:q!}
\end{keylist}

\titre{Insertion de Texte}
\begin{keylist}
  \key{insérer avant le curseur, avant la ligne}{i , I}
  \key{ajouter après le curseur, après la ligne}{a , A}
  \key{ouvrir une nouvelle ligne après, avant}{o , O}
  \key{remplacer un caractère, plusieurs}{r , R}
\end{keylist}

\titre{Déplacement}
\begin{keylist}
  \key{gauche, bas, haut, droite}{h , j , k , l}
  \key{mot suivant, <<blanc>> suivant}{w , W}
  \key{début du mot, début du <<blanc>>}{b , B}
  \key{fin du mot, fin du <<blanc>>}{e , E}  
  \key{phrase précédente, suivante}{( , )}
  \key{paragraphe précédent, suivant}{\{ , \}}
  \key{début, fin de la ligne}{0, \$}
  \key{début, fin du fichier}{1G, G}
  \key{\emph{n}$^{\mbox{\footnotesize ième}}$ ligne}{\emph{n}G \textrm{ou} :\emph{n}}
  \key{avancer, reculer jusqu'au caractère \emph{c}}{f\emph{c} , F\emph{c}}
  \key{haut, milieu, bas de l'écran}{H , M , L}
\end{keylist}

\titre{Suppression de Texte}
La plupart des commandes de suppression sont effectuées en tapant \texttt{d} suivie d'un
\emph{déplacement}. Par exemple, \texttt{dw} supprime un mot.

D'autres commandes:\\
\begin{keylist}
  \key{caractère à droite, gauche}{x , X}
  \key{jusqu'à la fin de la ligne}{D}
  \key{la ligne}{dd}
  \key{la ligne}{:d}
\end{keylist}

\columnbreak

\titre{Copie}
Comme les suppressions, la plupart des commandes de copie sont effectuées en tapant \texttt{y}
suivie d'une commande de \emph{déplacement}. Par exemple, \texttt{y\$} copie le texte jusqu'à le fin
de la ligne.

Deux autres commande de copie sont:\\
\begin{keylist}
  \key{la ligne}{yy}
  \key{la ligne}{:y}
\end{keylist}

\titre{Changement de Texte}
Les commandes de changement de texte sont des commandes de suppression de texte qui laissent
l'éditeur dans le mode insertion. Elles sont effectuées en tapant \texttt{c} suivi d'un
\emph{déplacement}. Par exemple \texttt{cw} changes un mot.

D'autre commandes:\\
\begin{keylist}
  \key{jusqu'à la fin de la ligne}{C}
  \key{la ligne}{cc}
\end{keylist}

\titre{Coller du texte}
\begin{keylist}
  \key{coller après la position ou la ligne}{p}
  \key{coller avant la position ou la ligne}{P}
\end{keylist}

\titre{Buffers}

Les buffers nommées peuvent être spécifiés avant chaque commande de suppression, changement, copie
ou collage. Le préfixe général est de la forme \texttt{"\emph{c}} oú \emph{c} est une lettre
minuscule. Par exemple, \texttt{"adw} supprime un mot dans le buffer \texttt{a}. On peut le remettre
dans le texte avec la commande de collage appropriée, par exemple \texttt{"ap}.

\titre{Marqueur}

Les marqueurs nommés peuvent être placés sur n'importe qu'elle ligne d'un fichier. N'importe quelle
lettre minuscule peut être un nom de marqueur. Les marqueurs peuvent aussi être utilisés comme
limites d'un intervalle.

\begin{keylist}
  \key{mettre le marqueur \emph{c} sur la ligne}{m\emph{c}}
  \key{aller au marqueur \emph{c}}{`\emph{c}}
  \key{aller au premier caractère non <<blanc>> après \emph{c}}{'c}
\end{keylist}

\titre{Chercher}

\begin{keylist}
  \key{chercher en avant}{/\emph{chaîne}}
  \key{chercher en avant}{?\emph{chaîne}}
  \key{répéter la recherche dans la même direction}{n}
  \key{répéter la recherche dans la direction opposé}{N}
\end{keylist}

\titre{Remplacer}

Cherche le \emph{pattern} et le remplace par la \emph{chaîne}.

\begin{keylist}
  \key{chercher/remplacer}{:s/\emph{pattern}/\emph{chaîne}/\emph{flags}}
\end{keylist}
\begin{keylist}
  \key{flags: sur chaque ligne, confirmer}{g , c}
  \key{répéter le dernier \texttt{:s}}{\&}
\end{keylist}


\titre{Expressions Régulières}

\begin{keylist}
  \key{n'importe quel caratère}{. \textrm{(point)}}
  \key{répéter zéro ou plus}{*}
  \key{ensemble de caractère}{[...]}
  \key{tous caractères $\notin$ ensemble}{[\^\ ...]}
  \key{début, fin de ligne}{\^\ , \$}
  \key{début, fin de mot}{\bs < , \bs >}
  \key{groupement}{\bs (...\bs )}
  \key{contenu du \emph{n}$^{\mbox{\footnotesize ième}}$ groupe}{\bs\emph{n}}
\end{keylist}

\titre{Répéter}

Presque toutes les commandes peuvent être précédé par un nombre qui spécifie le nombre de fois que
la commande est effectuée. Par exemple \texttt{5dw} supprimera 5 mots et \texttt{3fe} déplacera le
curseur jusqu'à la troisième occurrence de la lettre \texttt{e}. Même les insertions peuvent être
répétées avec cette méthode. Pratique pour insérer la même ligne 100 fois.

\titre{Intervalles}

Les intervalles peuvent précéder le plupart des commandes <<deux points>> et elles seront exécuter
sur l'intervalle. Par exemple \texttt{:3,7d} supprimera les lignes de 3 à 7. Les intervalles sont
communément combinés avec la commandes \texttt{:s} pour faire un remplacement sur certaines lignes.
\texttt{:.,\$s/.../.../g} fait un remplacement de la ligne courante à la fin du fichier.

\begin{keylist}
  \key{lignes \emph{n} à \emph{m}}{:\emph{n},\emph{m}}
  \key{ligne courante}{:.}
  \key{dernière ligne}{:\$}
  \key{marqueur \emph{c}}{:'\emph{c}}
  \key{toutes les lignes}{:\%}
  \key{toutes les lignes contenant \emph{pattern}}{:g/\emph{pattern}/}
\end{keylist}

\titre{Fichiers}

\begin{keylist}
  \key{sauver (fichier courant si pas de nom)}{:w \emph{fichier}}
  \key{insère un fichier}{:r \emph{fichier}}
  \key{fichier suivant, précédant}{:n , :p}
  \key{éditer le fichier}{:e \emph{fichier}}
  \key{remplace la ligne par le programme}{!!\emph{prg}}
\end{keylist}

\titre{Divers}
\begin{keylist}
  \key{alterner majuscule/minuscule}{\~}
  \key{oindre les lignes}{J}
  \key{répéter la dernière commande de changement}{.}
  \key{annuler changement, toute la ligne}{u , U}
\end{keylist}

%\bigskip
\begin{quotation}
% \scriptsize
\tiny
  Copyright \copyright 2003 Valvassori Moïse <\texttt{djedi@ai.univ-paris8.fr}>. \\
  Permission est accordée de copier, distribuer et/ou modifier ce document
  selon les termes de la Licence de Documentation Libre GNU (GNU Free
  Documentation License), version 1.1 ou toute version ultérieure publiée par
  la Free Software Foundation ; sans Sections Invariables; sans Textes de
  Première de Couverture, et sans Textes de Quatrième de Couverture.
%Une copie de
%la présente Licence est incluse dans la section intitulée
%« Licence de Documentation Libre GNU ».
\end{quotation}

\end{multicols*}
\end{document}
% Local variables:
% compile-command: "latex vi-refcard"
% End:
