scratch/output/Scratch/fr/blog/Efficient-Vim-knowledge/index.html

412 lines
18 KiB
HTML
Raw Normal View History

2011-08-19 14:08:50 +00:00
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="shortcut icon" type="image/x-icon" href="/Scratch/img/favicon.ico" />
<link rel="stylesheet" type="text/css" href="/Scratch/assets/css/main.css" />
<link rel="stylesheet" type="text/css" href="/Scratch/css/twilight.css" />
<link rel="stylesheet" type="text/css" href="/Scratch/css/idc.css" />
<link rel="alternate" type="application/rss+xml" title="RSS" href="http://feeds.feedburner.com/yannespositocomfr"/>
<link rel="alternate" lang="fr" xml:lang="fr" title="Vim efficace avec peu d'efforts" type="text/html" hreflang="fr" href="/Scratch/fr/blog/Efficient-Vim-knowledge/" />
<link rel="alternate" lang="en" xml:lang="en" title="Efficient Vim knowledge" type="text/html" hreflang="en" href="/Scratch/en/blog/Efficient-Vim-knowledge/" />
<script type="text/javascript" src="/Scratch/js/jquery-1.3.1.min.js"></script>
<script type="text/javascript" src="/Scratch/js/jquery.cookie.js"></script>
<script type="text/javascript" src="/Scratch/js/index.js"></script>
<!--[if lt IE 9]>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js"></script>
<![endif]-->
<!-- < % if containMaths %>
<script type="text/javascript" src="/Scratch/js/MathJax/MathJax.js"></script>
< % end %>
-->
<title>Vim efficace avec peu d'efforts</title>
</head>
<body lang="fr">
<script type="text/javascript">// <![CDATA[
document.write('<div id="blackpage"><img src="/Scratch/img/loading.gif" alt="Chargement en cours..."/></div>');
// ]]>
</script>
<div id="content">
<div id="choix">
<div class="return"><a href="#entete">&darr; Menu &darr;</a></div>
<div id="choixlang">
<a href="/Scratch/en/blog/Efficient-Vim-knowledge/" onclick="setLanguage('en')">in English</a>
</div>
</div>
<div id="titre">
<h1>
Vim efficace avec peu d'efforts
</h1>
</div>
<div class="flush"></div>
<div class="flush"></div>
<div id="afterheader">
<div class="corps">
<p><img alt="Über leet use vim!" src="/Scratch/img/blog/Efficient-Vim-knowledge/uber_leet_use_vim.jpg" /></p>
<div class="intro">
<p><span class="sc"><abbr title="Trop long à lire">tlàl</abbr>&nbsp;: </span> Vous désirez apprendre vim (le meilleur editeur de texte connu à ce jour) le plus rapidement possible. Voici mes conseils pour vous aider.</p>
</div>
<p><a href="http://www.vim.org">Vim</a> ou l&rsquo;éditeur qui vallait 3 milliards&nbsp;:</p>
<blockquote>
<p>Meilleur, plus fort, plus rapide.</p>
</blockquote>
<p>Apprenez <a href="http://www.vim.org">vim</a> et ce sera votre dernier éditeur.
Aucun éditeur que je connaise ne le surpasse.
Sa prise en mais est difficile, mais payante.</p>
2011-08-22 15:26:15 +00:00
<p>Je vous conseille de l&rsquo;apprendre en 4 étapes&nbsp;:</p>
2011-08-19 14:08:50 +00:00
<ol>
<li>La survie</li>
2011-08-22 15:26:15 +00:00
<li>Se sentir à son aise</li>
2011-08-19 14:08:50 +00:00
<li>Se sentir meilleur, plus fort et plus rapide</li>
<li>Les super-pouvoirs</li>
</ol>
2011-08-22 15:26:15 +00:00
<p>Après ces leçons, vous serez une super star de l&rsquo;édition de texte.</p>
2011-08-19 16:28:36 +00:00
<h2 id="er-niveau-survivre">1<sup>er</sup> Niveau: survivre</h2>
2011-08-19 14:08:50 +00:00
<ol>
2011-08-19 16:28:36 +00:00
<li>Installez <a href="http://www.vim.org">vim</a></li>
2011-08-22 15:26:15 +00:00
<li>Lancez vim</li>
2011-08-19 14:08:50 +00:00
<li>NE TOUCHEZ A RIEN! Lisez</li>
</ol>
<p>Dans un éditeur normal, il suffit de taper sur une touche du clavier et la lettre s&rsquo;affiche à l&rsquo;écran.
Pas ici.
Vim est en mode <em>edition</em>.
2011-08-22 15:26:15 +00:00
Commençons par placer vim en mode <em>insertion</em>.
2011-08-19 14:08:50 +00:00
Tapez sur la touche <code>i</code>.</p>
<p>Voilà, c&rsquo;est magique.
Vous pouvez tapez comme dans un éditeur standard.
2011-08-22 15:26:15 +00:00
Pour repasser en mode édition tapez sur la touche <code>Echap</code>.</p>
2011-08-19 14:08:50 +00:00
<p>Maintenant que vous savez passer du mode edition au mode insertion. Voici les commandes de survie (toutes en mode edition)&nbsp;:</p>
2011-08-22 15:26:15 +00:00
<blockquote>
<ul>
<li><code>i</code>&nbsp;: Passer en mode insértion. Taper Echap pour repasser en mode edition.</li>
<li><code>x</code>&nbsp;: Supprimer le caractère sous le curseur</li>
<li><code>:wq</code>&nbsp;: Sauvegarder et quitter (<code>:w</code> sauvegarde, <code>:q</code> quitter)</li>
<li><code>dd</code>&nbsp;: Supprimer (et copier) la ligne courante</li>
<li><code>p</code>&nbsp;: Coller</li>
<li><code>hjkl</code> (optionnel)&nbsp;: se déplacer (&larr;&darr;&uarr;&rarr;). Souvenez vous <code>j</code> ressemble à une flèche vers le bas.</li>
</ul>
</blockquote>
<p>Seulement 5 commandes. Voilà, c&rsquo;est tout pour un début.
Essayez d&rsquo;éditer vos fichier comme ça pendant une petite journée.
Lorsque ces commandes vous seront devenues naturelle.
Vous pouvez passer à l&rsquo;étape d&rsquo;après. </p>
2011-08-19 14:08:50 +00:00
2011-08-22 15:26:15 +00:00
<h2 id="me-niveau---se-sentir--son-aise">2<sup>ème</sup> Niveau - Se sentir à son aise</h2>
2011-08-19 14:08:50 +00:00
<p>Vous connaissez les commandes de survie. Passons à des commandes pour être un peu plus à notre aise. Je vous suggère&nbsp;:</p>
2011-08-22 15:26:15 +00:00
<ol>
<li>
<p>Les variantes de l&rsquo;insertion</p>
<blockquote>
<ul>
2011-08-24 14:35:12 +00:00
<li><code>a</code> &rarr; comme <code>i</code>, mais après la position du curseur.</li>
<li><code>o</code> &rarr; comme <code>i</code>, mais à la ligne suivante</li>
<li><code>O</code> &rarr; comme <code>o</code> mais ajoute la ligne avant.</li>
<li><code>cw</code> &rarr; remplacer le mot sous le curseur.</li>
2011-08-22 15:26:15 +00:00
</ul>
</blockquote>
</li>
<li>
<p>Déplacements basiques</p>
<blockquote>
<ul>
2011-08-24 14:35:12 +00:00
<li><code>0</code> &rarr; aller à la première colonne</li>
<li><code>^</code> &rarr; aller au premier caratère de la ligne</li>
<li><code>$</code> &rarr; aller à la fin de la ligne</li>
<li><code>/pattern</code> &rarr; rechercher <code>pattern</code> dans le fichier.</li>
2011-08-22 15:26:15 +00:00
</ul>
</blockquote>
</li>
<li>
<p>Copier/Coller</p>
<blockquote>
<ul>
2011-08-24 14:35:12 +00:00
<li><code>P</code> &rarr; Coller avant, souvenez-vous que <code>p</code> collait après la position du curseur.</li>
<li><code>yy</code> &rarr; copier la ligne courante. C&rsquo;est plus simple et équivalent à <code>ddP</code></li>
2011-08-22 15:26:15 +00:00
</ul>
</blockquote>
</li>
</ol>
<h2 id="niveau-3---meilleur-plus-fort-plus-rapide">Niveau 3 - Meilleur. Plus fort. Plus rapide.</h2>
2011-08-24 14:35:12 +00:00
<p>Bravo&nbsp;! Si vous êtes arrivé jusqu&rsquo;ici nous allons pouvoir commencer à apprendre les choses vraiment intéressantes.
Pour cette section, je vais seulement parler de choses qui sont aussi disponible dans le vieux <code>vi</code>. </p>
2011-08-22 15:26:15 +00:00
<p>Commençons par le premier super pouvoir de <code>vi</code>, éviter les répétitions (niveau 1):</p>
2011-08-19 14:08:50 +00:00
2011-08-22 15:26:15 +00:00
<ol>
2011-08-24 14:35:12 +00:00
<li><code>.</code> &rarr; Le caractère point répètera la dernière commande.</li>
<li>N&lt;commande&gt; &rarr; répètera la commande N fois. </li>
2011-08-22 15:26:15 +00:00
</ol>
2011-08-24 14:35:12 +00:00
<p>Quelques exemples, ouvrez un fichier avec vim et tapez&nbsp;:</p>
2011-08-22 15:26:15 +00:00
<blockquote>
<ul>
<li><code>2dd</code> &rarr; Supprimera 2 lignes</li>
<li><code>3p</code> &rarr; copiera 3 fois d&rsquo;affiler le texte copié</li>
<li><code>100idesu [ESC]</code> &rarr; écrira &ldquo;desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu &ldquo;</li>
<li><code>.</code> &rarr; Juste après la dernière commande réécrira les 100 &ldquo;desu &ldquo;. </li>
2011-08-24 14:35:12 +00:00
<li><code>3.</code> &rarr; Écrira 3 &ldquo;desu&rdquo; et non pas 300.</li>
2011-08-22 15:26:15 +00:00
</ul>
</blockquote>
2011-08-19 14:08:50 +00:00
2011-08-24 14:35:12 +00:00
<p>Second super pouvoir de vim, les déplacements (niveau 1)&nbsp;:
2011-08-22 15:26:15 +00:00
Savoir se déplacer efficacement avec vim est <em>très</em> important, ne sautez pas cette section.</p>
2011-08-19 14:08:50 +00:00
<ol>
2011-08-22 15:26:15 +00:00
<li>N<code>G</code> &rarr; Aller à la ligne N</li>
<li><code>gg</code> &rarr; raccourci pour <code>1G</code>, retourner au début du fichier</li>
<li><code>G</code> &rarr; Aller à la dernière ligne.</li>
<li>
<p>Déplacement autour des mots:</p>
<blockquote>
<ol>
<li><code>w</code> &rarr; aller au début du mot suivant</li>
<li><code>e</code> &rarr; aller à la fin du mot courant</li>
</ol>
<p>Par défaut les mots sont seulement composés de lettres (et du caractère souligné <code>_</code>).
Si vous voulez considérer les mots au sens &ldquo;jusqu&rsquo;au prochain espace&rdquo;, alors il suffit d&rsquo;utiliser les majuscules.</p>
<ol>
<li><code>W</code> &rarr; aller au début du mot &ldquo;étendu&rdquo; suivant</li>
<li><code>E</code> &rarr; aller à la fin du mot &ldquo;étendu&rdquo; courant</li>
</ol>
</blockquote>
</li>
2011-08-19 14:08:50 +00:00
</ol>
2011-08-22 15:26:15 +00:00
<p>Maintenant passons aux déplacement qui vont vous faire sentir vraiment meilleur&nbsp;:</p>
<blockquote>
<ul>
<li><code>%</code>&nbsp;: Aller à la parenthèse, accolade, crochet correspondante.</li>
<li><code>*</code> (resp. <code>#</code>)&nbsp;: Aller à la prochaine (resp. précédente) occurrence du mot sous le curseur</li>
</ul>
</blockquote>
<p>Croyez moi, ces trois dernières commandes valent de l&rsquo;or.
Retenez les, et vous gagnerez beaucoup de temps.</p>
2011-08-19 14:08:50 +00:00
2011-08-24 14:35:12 +00:00
<h2 id="niveau-4---power-overwhelming">Niveau 4 - Power Overwhelming</h2>
2011-08-19 14:08:50 +00:00
2011-08-24 14:35:12 +00:00
<p>Avec toutes les commandes précédentes vous avez presque toutes les commandes que j&rsquo;utilise tous les jours.
Mais voici les killer features de vim.
Celles que je n&rsquo;ai retrouvé que dans vim (ou presque).</p>
2011-08-19 14:08:50 +00:00
2011-08-24 14:35:12 +00:00
<p>Déplacement sur la ligne&nbsp;: <code>0^$fFtT,;</code></p>
2011-08-19 14:08:50 +00:00
2011-08-24 14:35:12 +00:00
<blockquote>
<ul>
<li><code>0</code> &rarr; aller à la colonne 0,</li>
<li><code>^</code> &rarr; aller au premier caractère de la ligne</li>
<li><code>$</code> &rarr; aller au dernier caractère de la ligne</li>
<li><code>fa</code> &rarr; vous amène à la prochaine occurrence de a sur la ligne courante. <code>,</code> recherche l&rsquo;occurrence suivante.</li>
<li><code>t,</code> &rarr; vous amène juste après le <code>,</code>.</li>
<li><code>3fa</code> &rarr; recherche la 3ième occurrence de <code>a</code>.</li>
<li><code>F</code> et <code>T</code> &rarr; comme <code>f</code> et <code>t</code> mais en arrière.</li>
</ul>
</blockquote>
<p>Sélection de blocs rectangulaires&nbsp;: <code>C-V</code>.</p>
<p>Les blocs rectangulaires sont très commodes pour commenter plusieurs lignes de codes.
Typiquement: <code>^C-VC-dI// [ESC]</code></p>
<ul>
<li><code>^</code> &rarr; aller en début de ligne</li>
<li><code>C-V</code> &rarr; Commencer la sélection du bloc</li>
<li><code>C-d</code> &rarr; se déplacer vers le bas (pourrait être <code>jjj</code> ou <code>%</code> etc&hellip;)</li>
<li><code>I// [ESC]</code> &rarr; écrit <code>// </code> pour commenter le reste de la ligne.</li>
</ul>
<p>Complétion&nbsp;: <code>C-n</code> et <code>C-p</code>.</p>
<p>En mode insertion, commencez à écrire le début d&rsquo;un mot déjà présent dans l&rsquo;un des buffers (fichers) ouvert et tapes <code>C-p</code>. Magique.</p>
<p>Macros&nbsp;: <code>qa</code> faire quelque chose <code>qq</code>. <code>@a</code>, puis <code>@@</code>.</p>
<p><code>qa</code> enregistre tout ce que vous faite et enregistre le tout dans le <em>registre</em> <code>a</code>. Ensuite <code>@a</code> va rejouer la macro enregistrée dans le registre <code>a</code> comme si c&rsquo;est vous qui tapiez au clavier.</p>
<blockquote>
<p>Exemple&nbsp;:
Sur une ligne contenant seulement un nombre tapez&nbsp;:
<code>qaYpC-aqq</code> &rarr; <code>qa</code> début de l&rsquo;enregistrement. <code>Yp</code> copier cette ligne. <code>C-a</code> incrémente le nombre. <code>qq</code> arrête d&rsquo;enregistrer.</p>
<p>Maintenant essayez <code>10@a</code>. Cela va créer une liste de nombre croissants.</p>
</blockquote>
<p>Mais aussi,</p>
<p>Sélection visuelle.</p>
<p>On a déjà vu un exemple avec <code>C-V</code>.
Mais il y a aussi, <code>v</code> et <code>V</code>.
Et une fois la sélection visuelle faite vous pouvez par exemple:</p>
<ul>
<li><code>=</code> &rarr; auto indenter</li>
<li><code>&lt;</code> (resp. <code>&gt;</code>) &rarr; indenter à gauche (resp. à droite).</li>
<li><code>J</code> &rarr; joindre toutes les lignes pour en faire une seule</li>
</ul>
<p>Ajouter quelque chose à la fin de toutes les lignes sélectionnées visuellement&nbsp;: </p>
<ul>
<li><code>S-V</code> </li>
<li>aller jusqu&rsquo;à la ligne désirée (<code>jjj</code> ou <code>C-d</code> ou <code>/pattern</code> ou <code>%</code> etc&hellip;)</li>
<li><code>$</code> aller à la fin </li>
<li><code>A</code>, écrire le texte, <code>Echap</code>.</li>
</ul>
2011-08-19 14:08:50 +00:00
2011-08-24 14:35:12 +00:00
<p>Splits&nbsp;: <code>:split</code> et <code>vsplit</code>. Pour en savoir plus faite un <code>:help split</code></p>
2011-08-19 14:08:50 +00:00
2011-08-24 14:35:12 +00:00
<h2 id="conclusion">Conclusion</h2>
2011-08-19 14:08:50 +00:00
</div>
<div id="choixrss">
<a id="rss" href="http://feeds.feedburner.com/yannespositocomfr">
s'abonner
</a>
</div>
<script type="text/javascript">
$(document).ready(function(){
$('#comment').hide();
$('#clickcomment').click(showComments);
});
function showComments() {
$('#comment').show();
$('#clickcomment').fadeOut();
}
document.write('<div id="clickcomment">Commentaires</div>');
</script>
<div class="flush"></div>
<div class="corps" id="comment">
<h2 class="first">commentaires</h2>
<noscript>
Vous devez activer javascript pour commenter.
</noscript>
<script type="text/javascript">
var idcomments_acct = 'a307f0044511ff1b5cfca573fc0a52e7';
var idcomments_post_id = '/Scratch/fr/blog/Efficient-Vim-knowledge/';
var idcomments_post_url = 'http://yannesposito.com/Scratch/fr/blog/Efficient-Vim-knowledge/';
</script>
<span id="IDCommentsPostTitle" style="display:none"></span>
<script type='text/javascript' src='/Scratch/js/genericCommentWrapperV2.js'></script>
</div>
<div id="entete" class="corps_spaced">
<div id="liens">
<ul><li><a href="/Scratch/fr/">Bienvenue</a></li>
<li><a href="/Scratch/fr/blog/">Blog</a></li>
<li><a href="/Scratch/fr/softwares/">Softwares</a></li>
<li><a href="/Scratch/fr/about/">À propos</a></li></ul>
</div>
<div class="flush"></div>
<hr/>
<div id="next_before_articles">
<div id="previous_articles">
articles précédents
</div>
<div id="next_articles">
articles suivants
</div>
<div class="flush"></div>
</div>
</div>
<div id="bottom">
<div>
<a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/deed.fr">Droits de reproduction ©, Yann Esposito</a>
</div>
<div id="lastmod">
Écrit le : 17/08/2011
2011-08-24 14:35:12 +00:00
modifié le : 22/08/2011
2011-08-19 14:08:50 +00:00
</div>
<div>
Site entièrement réalisé avec
<a href="http://www.vim.org">Vim</a>
et
<a href="http://nanoc.stoneship.org">nanoc</a>
</div>
<div>
<a href="/Scratch/fr/validation/">Validation</a>
<a href="http://validator.w3.org/check?uri=referer"> [xhtml] </a>
.
<a href="http://jigsaw.w3.org/css-validator/check/referer?profile=css3"> [css] </a>
.
<a href="http://validator.w3.org/feed/check.cgi?url=http%3A//yannesposito.com/Scratch/fr/blog/feed/feed.xml">[rss]</a>
</div>
</div>
<div class="clear"></div>
</div>
<script type="text/javascript">
var clicky = { log: function(){ return; }, goal: function(){ return; }};
var clicky_site_id = 66374971;
(function() {
var s = document.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.src = ( document.location.protocol == 'https:' ? 'https://static.getclicky.com/js' : 'http://static.getclicky.com/js' );
( document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0] ).appendChild( s );
})();
</script>
<noscript><p><img alt="Clicky" width="1" height="1" src="http://in.getclicky.com/66374971ns.gif" /></p></noscript>
</body>
</html>