\documentclass[frenchb, a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[latin9]{inputenc}
\usepackage{fancyhdr}
\pagestyle{fancy}
\usepackage{lastpage}
\usepackage[french]{babel}
\usepackage{color}
\usepackage{pslatex}

\usepackage{hyperref}
\definecolor{darkBlue}{cmyk}{0.75,0.45,0,0.43}
\hypersetup{
	backref=true,                      %permet d'ajouter des liens dans\dots
	pagebackref=true,                  %\dotsles bibliographies
	hyperindex=true,                   %ajoute des liens dans les index.
	colorlinks=true,                   %colorise les liens
	breaklinks=true,                   %permet le retour à la ligne dans les liens trop longs.
	urlcolor= darkBlue,                %couleur des hyperliens
	linkcolor= darkBlue,               %couleur des liens internes
	bookmarks=true,                    %créé des signets pour Acrobat
	bookmarksopen=true,                %si les signets Acrobat sont créés,
					   %les afficher complètement.
	pdftitle={Vim en 3 pages ...},
					   %informations apparaissant dans
	pdfauthor={François Poulain},      %dans les informations du document
	pdfsubject={Vi Improved}      	   %sous Acrobat.
	}

\makeatletter

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Textclass specific LaTeX commands. 
 \newenvironment{lyxlist}[1]
   {\begin{list}{}
     {\settowidth{\labelwidth}{#1}
      \setlength{\leftmargin}{\labelwidth}
      \addtolength{\leftmargin}{\labelsep}
      \renewcommand{\makelabel}[1]{##1\hfil}}}
   {\end{list}}

\newcommand{\commande}[1]{\texttt{#1}}
\newcommand{\foreign}[1]{\textit{#1}}
\renewcommand{\emph}[1]{\textbf{#1}}

\title{Vim en 3 pages ...}
\author{François Poulain}
\begin{document}

\maketitle
\begin{abstract}
\foreign{Vi Improved} est un éditeur très puissant qui a trop de commandes pour pouvoir toutes les énoncer dans un document comme celui-ci, mais l'objectif de ce document est de rassembler l'ensemble des commandes efficaces de Vim en 3 pages, afin de vous permettre d'utiliser simplement et rapidement Vim.
\end{abstract}

\tableofcontents{}

\newpage
  
\section{La base :}

\begin{enumerate}
\item Le curseur se déplace avec les touches fléchées ou les touches hjkl.
\begin{lyxlist}{00000000}
\item [gauche :] $\Leftrightarrow$ touche h
\item [bas :]	 $\Leftrightarrow$ touche j
\item [haut :]	 $\Leftrightarrow$ touche k
\item [droite :] $\Leftrightarrow$ touche l
\end{lyxlist}


\item Pour entrer dans Vim (à l'invite \$) tapez \commande{vim [Fichier] <Entrée>}.

\item Pour quitter Vim sans enregistrer, tapez \commande{<Échap> :q! <Entrée>}.

\item Pour quitter Vim en enregistrant, tapez \commande{<Échap> :wq <Entrée>}, ou également \commande{<Échap> :x <Entrée>}, ou encore \commande{<Échap> ZZ}.

\item Pour effacer un caractère sous le curseur en mode \emph{normal} tapez \commande{x}.

\item Pour insérer du texte au niveau du curseur en mode \emph{normal} tapez \commande{i} et insérez votre texte. Vous êtes alors dans un mode \emph{insertion} que vous pouvez quitter en tapant \commande{<Échap>}.

\end{enumerate}

\emph{Note :} Appuyer  \commande{<Échap>} vous place en mode \emph{normal} ou annule une commande partiellement tapée dont vous ne voudriez plus.

\section{Effacements, annulations :}

\begin{enumerate}
\item Pour effacer du curseur jusqu'à la fin d'un mot tapez \commande{dw}.

\item Pour effacer du curseur jusqu'à la fin d'une ligne tapez \commande{d\$}.

\item Pour effacer toute une ligne tapez \commande{dd}.

\item Le format d'une commande en mode \emph{normal} est :

\commande{[nombre] commande objet}, ou \commande{commande [nombre] objet}, où :
\begin{lyxlist}{00000000000}
\item[\commande{nombre} :] 	c'est combien de fois est répétée la commande.
\item[\commande{commande} :] 	c'est ce qu'il faut faire, par exemple	\commande{d}  pour effacer
\item[\commande{objet} :]		c'est ce sur quoi la commande devrait agir, par exemple \commande{l} (\foreign{letter}), \commande{w} (\foreign{word}), \commande{\$} (jusqu'à la fin de la ligne), etc.
\end{lyxlist}
       
\item Pour annuler des actions précédentes, tapez \commande{u} minuscule, comme \foreign{undo}.

     Pour annuler tous les changements sur une ligne tapez \commande{U} majuscule.
     
     Pour refaire tapez \commande{<Ctrl>-R} comme \foreign{redo}.
\end{enumerate}

\section{Insertion :}
\begin{enumerate}

\item Taper \commande{o}  ouvre une ligne \emph{sous} le curseur et y place celui-ci en mode \emph{insertion}. Taper un  \commande{O}  majuscule ouvre une ligne \emph{au dessus} de la ligne où se trouve le curseur.

\item Tapez un \commande{a} (\foreign{append}) pour insérer du texte \emph{après} le caractère où se trouve le curseur. Taper un \commande{A} majuscule ajoute du texte \emph{à la fin} de la ligne.

\item Pour remplacer le caractère sous le curseur, tapez \commande{r} (\foreign{replace}) suivi du caractère qui remplacera l'original.

\item Taper un \commande{R}  majuscule active le mode \emph{remplacement} jusqu'à ce que la touche  \commande{<Échap>}  soit appuyée pour en sortir.

\end{enumerate}


\section{Couper, copier, coller du texte :}
\begin{enumerate}
\item Les commandes d'effacement, comme \commande{dd} (\foreign{delete}), en réalité \emph{coupent} le texte.
\item Pour \emph{coller} le texte en mémoire \emph{après} la position courante du curseur, tapez \commande{p}. Si une ligne complète a été effacée, elle sera placée \emph{sous} la ligne du curseur. \commande{P} majuscule colle le texte \emph{avant} (ou \emph{au dessus}) la position courante du curseur.

\item Le changement vous permet de changer l'objet spécifié, du curseur jusqu'à la fin de l'objet. Par exemple, tapez \commande{cw} (comme \foreign{change word}) pour changer du curseur jusqu'à la fin du mot,  \commande{c\$}  pour changer jusqu'à la fin d'une ligne.

\item Le format d'utilisation pour le changement est : \commande{[nombre]~c~objet}, ou encore \commande{c~[nombre]~objet}.

\item Pour \emph{copier} du texte tapez \commande{yw}, ou \commande{y\$}, ou \commande{yy} (\foreign{yank}), avec le même format que précédemment indiqué.

\end{enumerate}

\section{Position, recherche et remplacement}
\begin{enumerate}
\item \commande{Ctrl-G} affiche votre position dans le fichier et l'état de celui-ci. \commande{G}  vous place à la fin du fichier. Un numéro de ligne suivi de \commande{G} vous place à cette ligne.

\item Taper  \commande{/}  suivi d'un texte recherche ce texte vers l'\emph{avant}.

     Taper  \commande{?}  suivi d'un texte recherche ce texte vers l'\emph{arrière}.
     
     Après une recherche tapez \commande{n}  pour trouver l'occurrence suivante dans la
     même direction ou \commande{Maj-N}  pour rechercher dans la direction opposée.

\item Taper  \commande{\%} lorsque le curseur est sur des délimiteurs de bloc \commande{(}, \commande{)}, \commande{[}, \commande{]}, \commande{\{} ou \commande{\}} déplace celui-ci sur le caractère correspondant.

\item Pour remplacer :
\begin{lyxlist}{000000000000000000000000000000000000000000}
\item[Le premier \commande{aa} par \commande{bb} sur une ligne tapez :]		 \commande{s/aa/bb}
\item[Tous les \commande{aa} par \commande{bb} sur une ligne tapez :]	 	 \commande{s/aa/bb/g}
\item[Du texte entre deux numéros de ligne tapez :]				 \commande{\#,\#s/aa/bb/g}
\item[Toutes les occurences dans le fichier tapez :] 	 	 		 \commande{\%s/aa/bb/g}
\item[Avec une confirmation à chaque fois ajoutez \commande{c} :]  		 \commande{\%s/aa/bb/gc}
\end{lyxlist}
\end{enumerate}


\section{Exécuter une commande externe}
\begin{enumerate}
\item \commande{:!<commande>}  exécute une commande externe.

\commande{:!ls} affiche le contenu du dossier courant.

\commande{:!rm <Fichier>} efface \commande{<Fichier>}.

\item \commande{:w <Fichier>}  enregistre le fichier Vim courant avec le nom \commande{Fichier}.

\item \commande{:\#,\#w <Fichier>}  enregistre les lignes \commande{\#} à \commande{\#} dans \commande{Fichier}.

\item \commande{:r <Fichier>} lit et inclus \commande{Fichier} dans le fichier courant à partir de la position du curseur.

\end{enumerate}

\section{Accéder à l'aide en ligne :}

\begin{enumerate}
\item Vim a un système complet d'aide en ligne.  Pour y accéder :
\begin{itemize}
\item Appuyez la touche \commande{<F1>}
\item Sinon tapez \commande{:help <Entrée>}
\end{itemize}

  Tapez  \commande{:q <Entrée>}  pour fermer la fenêtre d'aide.

Vous pouvez accéder à l'aide sur à peu près n'importe quel sujet en donnant des arguments à la commande  \commande{:help}. Essayez par exemple (n'oubliez pas d'appuyer sur \commande{<Entrée>}):
\begin{itemize}
\item	\commande{:help w}
\item	\commande{:help c\_<T}
\item	\commande{:help insert-index}
\item	\commande{:help user-manual}
\end{itemize}
\end{enumerate}

 
\section{Ré-indentation automatique d'un fichier}

Il existe une commande particulièrement sympathique quand on récupère des codes sources C/C++/Java : en tapant \commande{gg=G}, vous ré-indentez automatiquement l'ensemble du fichier.

\section{Pour aller plus loin \ldots}
Ceci conclut ce document.  Le but est de posséder un résumé des commandes, afin de permettre d'utiliser l'éditeur relativement facilement.  Il est loin d'être complet, vu que Vim a beaucoup  beaucoup plus de commandes.  Un Manuel de l'utilisateur est disponible en anglais: \commande{:help user-manual}.

Pour continuer à découvrir et à apprendre Vim, il existe un livre traduit en français. Il parle plus de Vi que de Vim, mais pourra vous être utile :

L'éditeur Vi - Collection Précis et concis - par Arnold Robbins. Éditeur: O'Reilly France, ISBN: 2-84177-102-4.

Ce document est en fait un résumé du \emph{tutoriel Vim}, qui a été écrit par Michael C. Pierce et Robert K. Ware de l'École des Mines du Colorado,  et reprend des idées fournies par Charles Smith, Université d'État du Colorado. Modifié pour Vim par Bram Moolenar. Traduit en Français par Adrien Beau, en avril 2001.
  
Vous pouvez retrouver le tutoriel original en tapant \commande{vimtutor} dans une console.

Pour continuer à découvrir et à apprendre Vim, vous pouvez retrouver la \href{http://vim.dindinx.net/}{documentation en ligne, et en francais}.
Ce document à été créé avec \LaTeX.
Vous êtes encouragés à lire, distribuer et améliorer ce document dans les termes de la licence GNU/GPL.
\end{document}
