<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://mirmodynamics.com/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>Mirmo Dynamics - Tag - vim</title>
  <link>http://mirmodynamics.com/</link>
  <atom:link href="http://mirmodynamics.com/feed/tag/vim/rss2" rel="self" type="application/rss+xml"/>
  <description>Si tu kiffes pas reunoi, t'écoutes pas et puis c'est tout.</description>
  <language>en</language>
  <pubDate>Sun, 14 Mar 2010 19:59:01 +0100</pubDate>
  <copyright>2003-2009 &amp;copy; Geoffrey Bachelet</copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>Automatically cd to a symfony project's root in vim</title>
    <link>http://mirmodynamics.com/post/2009/03/18/Automatically-cd-to-a-symfony-project-s-root-in-vim</link>
    <guid isPermaLink="false">urn:md5:61347ede04eb1bebad2f907168976ff4</guid>
    <pubDate>Wed, 18 Mar 2009 14:10:00 +0100</pubDate>
    <dc:creator>Geoffrey</dc:creator>
        <category>Symfony</category>
        <category>ctags</category><category>gist</category><category>root</category><category>script</category><category>symfony</category><category>vim</category>    
    <description>    &lt;p&gt;I made a little vimscript to automatically cd to the project root of a symfony project. It makes it easier for me to use the ctags :-)&lt;/p&gt;

&lt;pre&gt;
&amp;quot;-------------------------------------------------------------------------------
&amp;quot;  Description: Finds and cd to the symfony root of the project
&amp;quot;    Copyright: Copyright (C) 2009 Geoffrey Bachelet
&amp;quot;   Maintainer: Geoffrey Bachelet
&amp;quot;      Version: 1.0
&amp;quot;-------------------------------------------------------------------------------

if exists('find_symfony_root_loaded')
  finish
endif

let find_symfony_root_loaded = 1

if ! exists('find_symfony_root_symfony_executable')
  let find_symfony_root_symfony_executable = 'symfony'
endif

&amp;quot; root detection when opening a new vim seems to work
&amp;quot; only if these two events are bound. not sure why.
autocmd BufWinEnter,BufRead * call FindSymfonyRoot()

function FindSymfonyRoot()
  let l:cwd = GetAbsoluteDirname(@%)
  let l:symfony_root = findfile(g:find_symfony_root_symfony_executable, l:cwd.';')
  let l:symfony_root = GetAbsoluteDirname(l:symfony_root)
  if strlen(l:symfony_root) != 0
    execute 'cd '.l:symfony_root
  endif
endfunction

function GetAbsoluteDirname(path)
  let l:path = a:path
  &amp;quot; gets the dirname
  if !isdirectory(l:path)
    let l:path = strpart(l:path, 0, strridx(l:path, '/'))
  endif

  &amp;quot; makes it absolute
  if match(l:path, '/') != 0
    let l:path = getcwd().'/'.l:path
  endif

  return l:path
endfunction
&lt;/pre&gt;


&lt;p&gt;note for later: add vimscript support to geshi&lt;/p&gt;


&lt;p&gt;Or see &lt;a href=&quot;http://gist.github.com/81105&quot;&gt;the highlighted version on gist&lt;/a&gt;.&lt;/p&gt;</description>
    
    
    
          <comments>http://mirmodynamics.com/post/2009/03/18/Automatically-cd-to-a-symfony-project-s-root-in-vim#comment-form</comments>
      <wfw:comment>http://mirmodynamics.com/post/2009/03/18/Automatically-cd-to-a-symfony-project-s-root-in-vim#comment-form</wfw:comment>
      <wfw:commentRss>http://mirmodynamics.com/feed/atom/comments/1184</wfw:commentRss>
      </item>
    
  <item>
    <title>having fun with vim, an event tracker</title>
    <link>http://mirmodynamics.com/post/2009/03/08/having-fun-with-vim%2C-an-event-tracker</link>
    <guid isPermaLink="false">urn:md5:dd9c2194c796331acd7a9a403f01f67e</guid>
    <pubDate>Sun, 08 Mar 2009 21:16:00 +0100</pubDate>
    <dc:creator>Geoffrey</dc:creator>
        <category>Coding</category>
        <category>timetracking</category><category>vim</category><category>vimscript</category>    
    <description>    &lt;p&gt;The idea of this script came by realizing that the main reason I (almost) never fill my timesheet, is because I just forget it. How easier could it be if my editor (namely vim) could fill it for me ? Or at least, help me fill it. This script is meant to help this process. It will hook to every configured event (in the code below, &lt;code&gt;BufRead&lt;/code&gt; and &lt;code&gt;BufNewFile&lt;/code&gt;) and add a log line to the log file. Easy heh ? Of course, the script it self won't be of much use, I'll have to add some more events to track as well as writting some kind of frontend for it, with reporting &amp;amp; all.&lt;/p&gt;

&lt;pre&gt;
if exists('trackloaded')
  finish
endif

&amp;quot; list of autocmd events:
&amp;quot; http://www.vim.org/htmldoc/autocmd.html#autocmd-events
let trackevents = ['BufRead', 'BufNewFile', 'BufEnter', 'BufWrite', 'BufLeave']
let trackfile   = '/tmp/timetrack.dat'
let trackloaded = 1

for event in trackevents
  execute 'autocmd '.event.' * call Track(&amp;quot;'.event.'&amp;quot;)'
endfor

unlet event

function Track(event)
  let l:filename = @%
  if l:filename != g:trackfile
    if match(l:filename, '/') != 0
      let l:filename = getcwd().'/'.l:filename
    endif
    silent execute '!echo `date +\%s` '.a:event.' '.l:filename.' &amp;gt;&amp;gt; '.g:trackfile
  endif
endfunction
&lt;/pre&gt;


&lt;p&gt;You might note from this snippet that I'm not very comfortable with vimscripting :-) If you have a better way of doing this (I'm thinking mostly about the file writting here), don't hesitate to tell me.&lt;/p&gt;</description>
    
    
    
          <comments>http://mirmodynamics.com/post/2009/03/08/having-fun-with-vim%2C-an-event-tracker#comment-form</comments>
      <wfw:comment>http://mirmodynamics.com/post/2009/03/08/having-fun-with-vim%2C-an-event-tracker#comment-form</wfw:comment>
      <wfw:commentRss>http://mirmodynamics.com/feed/atom/comments/1180</wfw:commentRss>
      </item>
    
  <item>
    <title>Mass vim file opening reloaded</title>
    <link>http://mirmodynamics.com/post/2008/10/16/Mass-vim-file-opening-reloaded</link>
    <guid isPermaLink="false">urn:md5:043b3c3596084fc127d581eb3ee0bb15</guid>
    <pubDate>Thu, 16 Oct 2008 21:20:00 +0200</pubDate>
    <dc:creator>Geoffrey</dc:creator>
        <category>Geekeries</category>
        <category>bash</category><category>grep</category><category>handy</category><category>script</category><category>tips</category><category>vim</category>    
    <description>    &lt;p&gt;Thinking about it, &lt;a href=&quot;http://mirmodynamics.com/post/2008/10/14/Mass-vim-file-opening&quot;&gt;the snippet I posted earlier&lt;/a&gt; was a bit silly as vim can open by itself multiple files way more efficiently. The only benefit from my script is that I don't have to type the &lt;code&gt;--servername&lt;/code&gt; and &lt;code&gt;--remote-silent-tab&lt;/code&gt;.&lt;/p&gt;


&lt;p&gt;So let's add some usefulness ! First, when I need this script, it's often that I first grepped the files, and then decide that I want to edit them all. From this point of view, having to pass them as &lt;em&gt;arguments&lt;/em&gt; is not that handy, so we'll add a way to pass them via &lt;code&gt;STDIN&lt;/code&gt;.&lt;/p&gt;


&lt;p&gt;Also, what if I want to send them to another vim server ? We'll add this ability too.&lt;/p&gt;


&lt;p&gt;Here is the resulting script:&lt;/p&gt;

&lt;pre&gt;
#!/usr/bin/env bash

# set a default SERVERNAME
SERVERNAME=&amp;quot;ash0&amp;quot;

# look for files on stdin
if ! [ -t 0 ]; then
  FILES=`cat /dev/stdin`
else
  exit;
fi;

# now let's check if we want a specific vim server
if ! [ -z $1 ]; then
  SERVERNAME=$1
fi;

# we can now open the files
/usr/bin/gvim --servername $SERVERNAME --remote-silent-tab $FILES
&lt;/pre&gt;


&lt;p&gt;Tada !&lt;/p&gt;


&lt;p&gt;You can now do the followings:&lt;/p&gt;

&lt;pre&gt;
grep foo | sendtovim
grep foo | sendtovim grep0
&lt;/pre&gt;</description>
    
    
    
          <comments>http://mirmodynamics.com/post/2008/10/16/Mass-vim-file-opening-reloaded#comment-form</comments>
      <wfw:comment>http://mirmodynamics.com/post/2008/10/16/Mass-vim-file-opening-reloaded#comment-form</wfw:comment>
      <wfw:commentRss>http://mirmodynamics.com/feed/atom/comments/1144</wfw:commentRss>
      </item>
    
  <item>
    <title>Mass vim file opening</title>
    <link>http://mirmodynamics.com/post/2008/10/14/Mass-vim-file-opening</link>
    <guid isPermaLink="false">urn:md5:d2b7afaa2aaf18ada08b02c96c5185fc</guid>
    <pubDate>Tue, 14 Oct 2008 19:40:00 +0200</pubDate>
    <dc:creator>Geoffrey</dc:creator>
        <category>Geekeries</category>
        <category>grep</category><category>handy</category><category>script</category><category>tips</category><category>vim</category>    
    <description>    &lt;p&gt;Remember &lt;a href=&quot;http://mirmodynamics.com/post/2006/11/28/Linux-gVim-Rox-filer-Mon-IDE&quot;&gt;my old post about vim and rox-filer&lt;/a&gt; ? Well I've got one tiny and silly addition to it now, I can mass open files from any shell command line, with this little script placed in my &lt;code&gt;~/bin/&lt;/code&gt; (don't forget to &lt;code&gt;chmod +x&lt;/code&gt;):&lt;/p&gt;

&lt;pre&gt;
for i in $*; do
  /usr/bin/gvim --servername ash0 --remote-silent-tab $i
  sleep 1
done;
&lt;/pre&gt;


&lt;p&gt;The &lt;code&gt;sleep 1&lt;/code&gt; is necessary as vim does not seem to like being flooded with files.&lt;/p&gt;


&lt;p&gt;Example usage:&lt;/p&gt;

&lt;pre&gt;
sendtovim `grep foo *`
&lt;/pre&gt;


&lt;p&gt;Opens in vim all files containing &amp;quot;foo&amp;quot; in the current directory. Who said handy ?&lt;/p&gt;


&lt;p&gt;Note: I know have an &lt;a href=&quot;http://mirmodynamics.com/post/2008/10/16/Mass-vim-file-opening-reloaded&quot;&gt;updated and useful version of this script&lt;/a&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://mirmodynamics.com/post/2008/10/14/Mass-vim-file-opening#comment-form</comments>
      <wfw:comment>http://mirmodynamics.com/post/2008/10/14/Mass-vim-file-opening#comment-form</wfw:comment>
      <wfw:commentRss>http://mirmodynamics.com/feed/atom/comments/1141</wfw:commentRss>
      </item>
    
  <item>
    <title>Remplacer un caractère par un &quot;Carriage Return&quot; dans vim</title>
    <link>http://mirmodynamics.com/post/2007/01/03/Remplacer-un-caractere-par-un-Carriage-Return-dans-vim</link>
    <guid isPermaLink="false">urn:md5:262aed0ad72a0fbf7adfd05d63caefe3</guid>
    <pubDate>Wed, 03 Jan 2007 11:04:00 +0100</pubDate>
    <dc:creator>Geoffrey</dc:creator>
        <category>Geekeries</category>
        <category>howto</category><category>substitute</category><category>vim</category>    
    <description>    &lt;p&gt;Par exemple, imaginons qu'on récupère une query string, et qu'on veuille
l'exploser sur plusieurs lignes, on peut faire:&lt;/p&gt;
&lt;pre&gt;
:s/&amp;amp;/\=&amp;quot;\&amp;lt;CR&amp;gt;&amp;quot;/g
&lt;/pre&gt;
&lt;p&gt;le &lt;code&gt;\=&amp;quot;&amp;quot;&lt;/code&gt; annonce à &lt;acronym&gt;VIM&lt;/acronym&gt; que la chaine de
substitution sera une chaine a interpréter avant utilisation, et le
&lt;code&gt;\&amp;lt;CR&amp;gt;&lt;/code&gt; représente tout simplement le &lt;em&gt;Carriage
Return&lt;/em&gt;.&lt;/p&gt;</description>
    
    
    
          <comments>http://mirmodynamics.com/post/2007/01/03/Remplacer-un-caractere-par-un-Carriage-Return-dans-vim#comment-form</comments>
      <wfw:comment>http://mirmodynamics.com/post/2007/01/03/Remplacer-un-caractere-par-un-Carriage-Return-dans-vim#comment-form</wfw:comment>
      <wfw:commentRss>http://mirmodynamics.com/feed/atom/comments/736</wfw:commentRss>
      </item>
    
  <item>
    <title>Linux + gVim + Rox-filer = Mon IDE.</title>
    <link>http://mirmodynamics.com/post/2006/11/28/Linux-gVim-Rox-filer-Mon-IDE</link>
    <guid isPermaLink="false">urn:md5:024270855ec063e421b28cf4d62f4906</guid>
    <pubDate>Tue, 28 Nov 2006 22:39:00 +0100</pubDate>
    <dc:creator>Geoffrey</dc:creator>
        <category>Coding</category>
        <category>clichés</category><category>configuration</category><category>environnement</category><category>interfaces utilisateurs</category><category>opinions</category><category>organisation</category><category>php</category><category>svn</category><category>ubuntu</category><category>unix</category><category>vim</category><category>way of life</category>    
    <description>&lt;p&gt;Une des questions cruciales qui se pose à tout développeur à au moins un moment de sa vie (souvent plusieurs en fait) est le choix d'un environnement de développement. J'en ai testé pas mal, plus ou moins longtemps, et bien que je ne sois jamais complètement satisfait, l'idée de &lt;em&gt;perdre du temps&lt;/em&gt; à développer le mien m'indispose. J'ai donc opté pour l'environnement qui me va le mieux: Linux + gVim + Rox-filer.&lt;/p&gt;


&lt;p&gt;Note: je ne couvre pas ici les fonctionnalités de débuging avancé, que je n'utilise pas encore, mais pour lesquelles j'ai déjà en tête des solutions qui me conviendront bien mieux que les outils intégrés à un quelconque &lt;acronym&gt;IDE&lt;/acronym&gt; (je pense fortement à Xdebug).&lt;/p&gt;    &lt;h3&gt;Comment définir un IDE ?&lt;/h3&gt;


&lt;p&gt;Commençons par le début: qu'est-ce qu'un &lt;acronym&gt;IDE&lt;/acronym&gt; ? Acronyme de &lt;em&gt;Integrated Development Environment&lt;/em&gt;, le terme peut prendre pas mal de signification selon la personne à laquelle on s'adresse. Pour certains, &lt;em&gt;le plus c'est le mieux&lt;/em&gt;, alors que pour d'autre, &lt;em&gt;le moins c'est le pas plus mal finalement&lt;/em&gt;. On pourra citer quelques exemples connus d'&lt;acronym&gt;IDE&lt;/acronym&gt; &lt;em&gt;full-featured&lt;/em&gt;, tels que les incournables &lt;em&gt;Zend Studio&lt;/em&gt;, &lt;em&gt;Eclipse&lt;/em&gt; et autres &lt;em&gt;phpEdit&lt;/em&gt;, mais ce n'est pas le but de cet article. Ici, je vais vous expliquer pourquoi et comment j'utilise quotidiennement gVim et Rox-filer, et le tout sous Ubuntu.&lt;/p&gt;


&lt;p&gt;Revenons en à nos moutons, un environnement de développement, c'est constitué de quelques briques primordiales:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Un éditeur de code&lt;/li&gt;
&lt;li&gt;Un navigateur de fichier&lt;/li&gt;
&lt;li&gt;Un truc qui fait tourner tout ça&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Peu importe qu'ils soient &lt;em&gt;intégrés&lt;/em&gt; ou non, finalement. Personnellement, je suis un fervent adepte du précepte &lt;em&gt;une tâche, un outil&lt;/em&gt;, donc je preferre qu'ils soient dissociés.&lt;/p&gt;


&lt;h3&gt;L'éditeur de code: gVim&lt;/h3&gt;


&lt;p&gt;Certains perdent leurs moyens à la simple évocation de son nom, &lt;em&gt;vim&lt;/em&gt; n'est pourtant rien de plus que le plus puissant des éditeurs de fichier aujourd'hui disponible dans le monde (un troll s'est malicieusement glissé dans cette affirmation, saurez-vous le retrouver ?). Ce qui déroute au premier abord dans &lt;em&gt;vim&lt;/em&gt;, c'est finalement ce qui fait toute sa puissance: le mode &lt;em&gt;commande&lt;/em&gt;. J'ai longtemps utilisé &lt;a href=&quot;http://bluefish.openoffice.nl/index.html&quot;&gt;bluefish&lt;/a&gt;, et finalement las de ses quelques bugs bien énervants (wtf syntax color ?), j'ai décidé de faire le grand pas, et d'utiliser &lt;em&gt;vim&lt;/em&gt;. J'avais bien sur déjà une expérience de cet éditeur, mais retenez bien que le meilleur moyen de maitriser un outil aussi puissant que &lt;em&gt;vim&lt;/em&gt;, ce n'est pas de se jeter à corps perdu dans la doc, mais c'est d'investir du temps incrémentiellement: commencer à utiliser &lt;em&gt;vim&lt;/em&gt;, et quand on souhaite faire quelque chose qu'on ne sait pas faire, lire &lt;a href=&quot;http://vimdoc.sf.net/&quot;&gt;la doc correspondante&lt;/a&gt;&lt;sup&gt;[&lt;a href=&quot;http://mirmodynamics.com/post/2006/11/28/Linux-gVim-Rox-filer-Mon-IDE#pnote-723-1&quot; id=&quot;rev-pnote-723-1&quot;&gt;1&lt;/a&gt;]&lt;/sup&gt;. Pour finir, j'ai traduit il y a quelque temps un excellent tutoriel sur &lt;em&gt;vim&lt;/em&gt;: &lt;a href=&quot;http://fashion.hosmoz.net/blog/post/2004/05/08/150-ledition-efficace-avec-vim&quot;&gt;L'édition efficace avec vim&lt;/a&gt;, donc n'hésitez pas.&lt;/p&gt;


&lt;h4&gt;Un .vimrc qu'il est joli&lt;/h4&gt;


&lt;p&gt;Comme la plupart des applications &lt;em&gt;*nix&lt;/em&gt;, &lt;em&gt;vim&lt;/em&gt; autorise l'utilisation d'un fichier &lt;em&gt;~/.vimrc&lt;/em&gt;. S'il peut paraitre compliqué au premier abord d'élaborer un &lt;em&gt;.vimrc&lt;/em&gt; efficace, il ne faut pas se décourager, car comme d'habitude, il y a tout ce qu'il faut sur le net. J'en veux pour preuve &lt;a href=&quot;http://schlitt.info/applications/blog/index.php?/archives/488-Comfortable-PHP-editing-with-VIM-5.html&quot;&gt;les excellents articles&lt;/a&gt; de &lt;a href=&quot;http://schlitt.info/&quot;&gt;Tobias Schlitt&lt;/a&gt; à ce sujet.&lt;/p&gt;


&lt;p&gt;Pour info, quelques directives de configuration utiles qu'on peut trouver dans mon &lt;em&gt;.vimrc&lt;/em&gt;:&lt;/p&gt;

&lt;pre&gt;
&amp;quot; Supprime un buffer de la mémoire via le raccourci clavier Ctrl+W
noremap &amp;lt;C-W&amp;gt; :bdel!&amp;lt;CR&amp;gt;

&amp;quot; Active l'indentation automatique
set autoindent

&amp;quot; Active les plugins de type de fichier
filetype plugin on

&amp;quot; Active la coloration syntaxique
syntax on

&amp;quot; Thème de couleur pour gVim
colorscheme desert

&amp;quot; Utiliser des tabs de 4 caractères pour l'indentation
set noexpandtab tabstop=4 shiftwidth=4

&amp;quot; Activer la souris (molette, sélection, etc)
set mouse=a

&amp;quot; Afficher des infos dans la barre de status
set ruler
set laststatus=2

&amp;quot; Activer la numérotation des lignes
set number

&amp;quot; Utiliser la recherche incrémentielle
set incsearch

&amp;quot; Ne pas surligner les résultats de recherche
set nohlsearch
&lt;/pre&gt;


&lt;p&gt;Quelques unes (beaucoup en fait) de ces directives sont tirées du &lt;em&gt;.vimrc&lt;/em&gt; de Tobias.&lt;/p&gt;


&lt;p&gt;Dernier détail pour les réfractaires de la ligne de commande, &lt;em&gt;gVim&lt;/em&gt; s'execute en &lt;em&gt;mode graphique&lt;/em&gt;, avec une interface &lt;acronym&gt;GTK&lt;/acronym&gt; conviviale qui permet d'apprendre les raccourcis aisément, et qui gère la souris (défilement à la molette, etc, et d'ailleurs, même en console ça gère la souris, il suffit d'un &lt;code&gt;:set mouse=&amp;quot;a&amp;quot;&lt;/code&gt; pour l'activer).&lt;/p&gt;


&lt;h4&gt;Un ftplugin pour le PHP&lt;/h4&gt;


&lt;p&gt;Ce qu'on appelle &lt;em&gt;ftplugin&lt;/em&gt; dans &lt;em&gt;vim&lt;/em&gt; permet de configurer &lt;em&gt;vim&lt;/em&gt; en fonction du type de fichier que l'on édite. Tobias fournit un &lt;em&gt;ftplugin&lt;/em&gt; spécialisé dans l'édition du &lt;acronym&gt;PHP&lt;/acronym&gt; plutôt bien foutu, qui gère la plupart des &lt;em&gt;features convi-enabled&lt;/em&gt; des soit disants &lt;acronym&gt;IDE&lt;/acronym&gt; évolués:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Complétion des fonctions&lt;/li&gt;
&lt;li&gt;Complétion des mots-clés&lt;/li&gt;
&lt;li&gt;Auto-fermeture des crochets, parenthèses, etc.&lt;/li&gt;
&lt;li&gt;Auto-génération des docblocks PHPDoc&lt;/li&gt;
&lt;li&gt;Vérification de syntaxe du fichier édité&lt;/li&gt;
&lt;li&gt;Et d'autres trucs merveilleux !&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;La classe non ?&lt;/p&gt;


&lt;h3&gt;Un navigateur de fichier kirox (tm)&lt;/h3&gt;


&lt;p&gt;C'est pas moi qui le dit, en fait c'est comme le port-salut, &lt;a href=&quot;http://rox.sf.net/&quot;&gt;rox-filer&lt;/a&gt; rox, c'est tout. Pour ceux que ma puissance de persuasion ne suffit pas, et bien &lt;em&gt;rox-filer&lt;/em&gt; offre tout ce que vous pourriez attendre d'un gestionnaire de fichier moderne:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Navigation spatiale avec technologie &lt;em&gt;oupas&lt;/em&gt; (tm)&lt;/li&gt;
&lt;li&gt;Prévisualisation des images&lt;/li&gt;
&lt;li&gt;Personnalisation (aisée !) des applications utilisées pour lancer les fichiers (en fonction du mimetype)&lt;/li&gt;
&lt;li&gt;Navigation one-click (&lt;em&gt;oupas&lt;/em&gt; (tm))&lt;/li&gt;
&lt;li&gt;Navigation aisée au clavier&lt;/li&gt;
&lt;li&gt;Monitorage des fichiers en cours d'utilisation (ils apparaissent en &lt;strong&gt;gras&lt;/strong&gt;, ce qui est pratique).&lt;/li&gt;
&lt;li&gt;Et j'en passe et des meilleurs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bref, il fait tout ce que ferait un &lt;em&gt;filebrowser&lt;/em&gt; intégré, mais en mieux, puisqu'il est dédié dès le début à cette tache. Afin de le faire interragir au mieux avec gVim, j'utilise la &lt;em&gt;Run action&lt;/em&gt; suivante sur le mimetype &lt;code&gt;text/*&lt;/code&gt;:&lt;/p&gt;


&lt;pre&gt;gvim --servername ash0 --remote-silent-tab &amp;quot;$@&amp;quot;&lt;/pre&gt;


&lt;p&gt;Qui permet d'ouvrir le fichier dans un nouveau tab de &lt;em&gt;vim&lt;/em&gt;, en créant une instance d'un server &lt;em&gt;vim&lt;/em&gt; à la volée si il n'existe pas déjà (ici le server s'appelle &lt;code&gt;ash0&lt;/code&gt;, mais vous pouvez bien évidemment en changer le nom).&lt;/p&gt;


&lt;h3&gt;Une distribution du bien: Ubuntu&lt;/h3&gt;


&lt;p&gt;Et parcequ'il faut bien faire tourner tout ça, j'utilise un système d'exploitation &lt;em&gt;du bien&lt;/em&gt; (tm): GNU/Linux. Mais comme j'ai la flemme, j'utilise une configuration &lt;em&gt;convi-enabled&lt;/em&gt;: &lt;a href=&quot;http://www.ubuntu.com/&quot;&gt;Ubuntu&lt;/a&gt;. Pas besoin de s'étaler je pense, Ubuntu c'est &lt;strong&gt;bien&lt;/strong&gt;, tout le monde en conviendra.&lt;/p&gt;


&lt;h3&gt;Un window-manager léger et puissant: fluxbox&lt;/h3&gt;


&lt;p&gt;Le choix du gestionnaire de fenêtre peut par contre préter a controverse. En effet, c'est ici avant tout une question de gout et de puissance de machine. J'ai personellement un penchant pour les logiciels puissants et légers. Là je vous vois venir avec vos gros sabots: &lt;em&gt;tout le monde veut ce genre de logiciel&lt;/em&gt;. Et bien j'ai envie de répondre que non. La majorité des &lt;em&gt;neo-geeks&lt;/em&gt; de la génération Ubuntu s'en donnent à coeur joie sous Gnome et/ou KDE, qui est loin de ce qu'il convient d'appeler un logiciel &lt;em&gt;puissant et léger&lt;/em&gt;, sous prétexte que les autres &lt;acronym&gt;WM&lt;/acronym&gt; (à part &lt;acronym&gt;KDE&lt;/acronym&gt;), &lt;em&gt;saitrocomplicai&lt;/em&gt;. Bon là ok, j'amalgame surement un peu (beaucoup même, tous les gens sous Gnome ne sont pas des &lt;em&gt;neo-geek&lt;/em&gt;, et l'inverse également), mais il manquait un peu de trollitude dans cet article. Bref, quand on veut, on peut, et comme les gens ne switchent pas de Gnome à un &lt;acronym&gt;WM&lt;/acronym&gt; plus puissant et plus léger, j'en conclus (peut-être à tord hein) qu'ils ne veulent pas.&lt;/p&gt;


&lt;p&gt;Tout ça pour dire que j'utilise &lt;a href=&quot;http://www.fluxbox.org/&quot;&gt;fluxbox&lt;/a&gt;, et ce depuis ma plus tendre enfance. Fluxbox est léger (osez prétendre le contraire...) et puissant: il permet:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;de reconfigurer l'intégralité du comportement de vos fenêtres&lt;/li&gt;
&lt;li&gt;une gestion fine et puissante des raccourcis claviers (j'ai pu reconfigurer les touches &lt;em&gt;convi&lt;/em&gt; de mon clavier &lt;em&gt;convi&lt;/em&gt; en quelques minutes dans mon &lt;code&gt;.fluxbox/keys&lt;/code&gt; grâce à &lt;code&gt;xev&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;de controler facilement quelles applications se lancent au démarrage&lt;/li&gt;
&lt;li&gt;de controler encore plus facilement sur quels bureaux se lancent les sus-citées applications&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Par exemple, mon &lt;code&gt;.fluxbox/startup&lt;/code&gt; démarre sur le premier bureau quelques terminaux, un gaim et un exaile; sur le deuxième bureau un firefox sur le troisième bureau: sylphee, et sur le quatrième bureau, un rox-filer. A coté de ça, je dispose de raccourcis claviers conviviaux pour lancer mes logiciels favoris: le terminal (Mod4&lt;sup&gt;[&lt;a href=&quot;http://mirmodynamics.com/post/2006/11/28/Linux-gVim-Rox-filer-Mon-IDE#pnote-723-2&quot; id=&quot;rev-pnote-723-2&quot;&gt;2&lt;/a&gt;]&lt;/sup&gt;+e), rox-filer (Mod4+r), etc. J'ai également à ma disposition des raccourcis claviers pour gérer mes fenêtres: maximiser (horizontalement (Ctrl+Alt+H), verticalement -Ctrl+Alt+V), ou les deux (Ctrl+Alt+M)), &lt;em&gt;enrouler&lt;/em&gt; (Mod4+S), &lt;em&gt;sticker&lt;/em&gt; (Ctrl+Alt+S), enlever les décorations (Ctrl+Alt+T), et j'en passe.&lt;/p&gt;


&lt;p&gt;Enfin, et le plus important pour moi, fluxbox est &lt;em&gt;non-intrusif&lt;/em&gt;. Par défaut, un bureau standard de mon fluxbox ne contient rien. Pas de barre des taches, pas d'icones, pas de menu, &lt;strong&gt;rien&lt;/strong&gt;. Question de gout je vous l'accorde, mais là encore, notez que &amp;quot;c'est faisable&amp;quot;: fluxbox ne vous impose rien, et surtout pas les choix discutables car subjectifs des développeurs.&lt;/p&gt;


&lt;h3&gt;Subversion en ligne de commande&lt;/h3&gt;


&lt;p&gt;Enfin, j'utilise le client subversion en ligne de commande. D'une part parceque je ne connais pas de client digne de ce nom en &lt;acronym&gt;GTK&lt;/acronym&gt; (ma religion m'interdit d'utiliser &lt;acronym&gt;Qt&lt;/acronym&gt;), d'autre part pour profiter pleinement de la puissance qu'offre un shell quand on sait un minimum s'en servir. Pouvoir passer mes commandes &lt;code&gt;svn&lt;/code&gt; dans des &lt;code&gt;awk&lt;/code&gt;, &lt;code&gt;sed&lt;/code&gt;, et autres &lt;code&gt;grep&lt;/code&gt; (surtout &lt;code&gt;grep&lt;/code&gt; en fait), ça n'a pas de prix, et je pense vraiment qu'aucune interface graphique n'arrivera jamais à la cheville de la puissance d'un shell.&lt;/p&gt;


&lt;p&gt;Deuxième avantage à utiliser &lt;code&gt;svn&lt;/code&gt; en ligne de commande: le jour où je serais obligé de le faire, je saurais le faire.&lt;/p&gt;


&lt;h3&gt;Conclusion&lt;/h3&gt;


&lt;p&gt;Voilà, vous savez (presque) tout de mes habitudes de travail (il reste pas mal de domaines à couvrir quand même, je n'ai pas parlé par exemple de mes extensions firefox favorites, ni de mon utilisation intensive de trac, et encore moins des tests unitaires, peut-être une prochaine fois), et j'espère vous avoir donné l'envie de regarder d'un peu plus près ces outils à la réputation peut-être un peu geek, mais d'une puissance incomparable une fois maitrisés :-)&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;&lt;h4&gt;Notes&lt;/h4&gt;
&lt;p&gt;[&lt;a href=&quot;http://mirmodynamics.com/post/2006/11/28/Linux-gVim-Rox-filer-Mon-IDE#rev-pnote-723-1&quot; id=&quot;pnote-723-1&quot;&gt;1&lt;/a&gt;] :help &lt;em&gt;commande&lt;/em&gt; est en général d'une grande utilité&lt;/p&gt;
&lt;p&gt;[&lt;a href=&quot;http://mirmodynamics.com/post/2006/11/28/Linux-gVim-Rox-filer-Mon-IDE#rev-pnote-723-2&quot; id=&quot;pnote-723-2&quot;&gt;2&lt;/a&gt;] Le petit nom de la touche Windows&lt;/p&gt;&lt;/div&gt;</description>
    
    
    
          <comments>http://mirmodynamics.com/post/2006/11/28/Linux-gVim-Rox-filer-Mon-IDE#comment-form</comments>
      <wfw:comment>http://mirmodynamics.com/post/2006/11/28/Linux-gVim-Rox-filer-Mon-IDE#comment-form</wfw:comment>
      <wfw:commentRss>http://mirmodynamics.com/feed/atom/comments/723</wfw:commentRss>
      </item>
    
  <item>
    <title>Gestion des charset sous vim</title>
    <link>http://mirmodynamics.com/post/2006/07/12/Gestion-des-charset-sous-vim</link>
    <guid isPermaLink="false">urn:md5:4a16301f71dddbe109cb0a89f530a4ed</guid>
    <pubDate>Wed, 12 Jul 2006 12:50:00 +0200</pubDate>
    <dc:creator>Geoffrey</dc:creator>
        <category>Geekeries</category>
        <category>charset</category><category>vim</category>    
    <description>    &lt;p&gt;Ne vous attendez pas a trouver un guide exhaustif de la gestion des encodages de caractères sous &lt;acronym&gt;VIM&lt;/acronym&gt; dans ce billet, d'autres sites et surtout la doc fait ça beaucoup mieux que moi. Je m'en vais juste vous présenter le minimum vital pour vous dépatouiller dans ce foutoire que sont les charset. Le saint graal est consistué de deux variables de configuration: &lt;code&gt;encoding&lt;/code&gt; et &lt;code&gt;fileencoding&lt;/code&gt;.  Les plus perspicaces auront déjà compris les quelques explications qui suivent.&lt;/p&gt;


&lt;p&gt;&lt;code&gt;encoding&lt;/code&gt; est la variable qui détermine l'encodage des caractères &lt;strong&gt;en cours d'édition&lt;/strong&gt;, tandis que &lt;code&gt;fileencoding&lt;/code&gt; contient l'encodage qui sera utilisé à la sauvegarde du fichier.&lt;/p&gt;


&lt;p&gt;Concrétement, si vous tapez:&lt;/p&gt;


&lt;pre&gt;:set encoding=utf-8
:set fileencoding=iso-8859-15&lt;/pre&gt;


&lt;p&gt;Vous pouvez copier/coller du texte en UTF-8, et quand vous sauvegarderez votre fichier (&lt;code&gt;:w&lt;/code&gt; par exemple), vos données seront automatiquement convertie et sauvegardée en ISO-8859-15.&lt;/p&gt;</description>
    
    
    
          <comments>http://mirmodynamics.com/post/2006/07/12/Gestion-des-charset-sous-vim#comment-form</comments>
      <wfw:comment>http://mirmodynamics.com/post/2006/07/12/Gestion-des-charset-sous-vim#comment-form</wfw:comment>
      <wfw:commentRss>http://mirmodynamics.com/feed/atom/comments/561</wfw:commentRss>
      </item>
    
  <item>
    <title>Trop utiliser VIM peut rendre dépendant.</title>
    <link>http://mirmodynamics.com/post/2006/06/26/556-trop-utiliser-vim-peut-rendre-dependant</link>
    <guid isPermaLink="false">urn:md5:81b88d9c5ab43353e98f7e32277b0294</guid>
    <pubDate>Mon, 26 Jun 2006 10:58:34 +0000</pubDate>
    <dc:creator>Geoffrey</dc:creator>
        <category>Geekeries</category>
        <category>rigolo</category><category>vim</category>    
    <description>    &lt;pre&gt;geoffrey@PROD000005:~$ ls
bin   Desktop      helloworld.jpg     openvpn      tmp   xml
code  Documents    Network            public_html  tmp2
dc2   Extractions  OnRefaitMatch.xml  tests        :w&lt;/pre&gt;


&lt;p&gt;Ce n'est pas un fake. Et pour ceux qui ne comprennent pas, tant pis pour vous.&lt;/p&gt;</description>
    
    
    
          <comments>http://mirmodynamics.com/post/2006/06/26/556-trop-utiliser-vim-peut-rendre-dependant#comment-form</comments>
      <wfw:comment>http://mirmodynamics.com/post/2006/06/26/556-trop-utiliser-vim-peut-rendre-dependant#comment-form</wfw:comment>
      <wfw:commentRss>http://mirmodynamics.com/feed/atom/comments/554</wfw:commentRss>
      </item>
    
  <item>
    <title>L'édition efficace avec vim</title>
    <link>http://mirmodynamics.com/post/2004/05/08/150-ledition-efficace-avec-vim</link>
    <guid isPermaLink="false">urn:md5:04486fa67847b5722fa1f201113b4608</guid>
    <pubDate>Sat, 08 May 2004 23:20:02 +0000</pubDate>
    <dc:creator>Geoffrey</dc:creator>
        <category>Ego</category>
        <category>howto</category><category>traduction</category><category>vim</category>    
    <description>&lt;p&gt;Encore une traduction d'un &lt;a href=&quot;http://jmcpherson.org/editing.html&quot; hreflang=&quot;en&quot;&gt;article&lt;/a&gt; de &lt;a href=&quot;http://jmcpherson.org&quot; hreflang=&quot;en&quot;&gt;Jonathan McPherson&lt;/a&gt;&amp;nbsp;! Cette fois l'article porte sur vim, l'éditeur de texte des décideurs pressés. Les remerciements vont cette fois à &lt;a href=&quot;http://socialz.org/&quot; hreflang=&quot;fr&quot;&gt;Grégoire Gilbert&lt;/a&gt; qui m'a traduit plus de la moitié de l'article quand même :)&lt;/p&gt;    &lt;blockquote&gt;&quot;To me, vi is Zen.&lt;br /&gt;
To use vi is to practice zen.&lt;br /&gt;
Every command is a koan.&lt;br /&gt;
Profound to the user,&lt;br /&gt;
unintelligible to the uninitiated.&lt;br /&gt;
You discover truth every time you use it.&quot;&lt;br /&gt;&lt;br /&gt;
--reddy@lion.austin.com&lt;/blockquote&gt;


&lt;p&gt;Ce tutoriel recquiert des connaissances de base de vim -- mode insertion, mode commande, charger et sauver des fichiers, etc. Il a pour but d'aider les novices à développer leurs compétences pour utiliser vi efficacement.&lt;/p&gt;


&lt;p&gt;Dans ce tutoriel, &amp;lt;C-X&amp;gt; signifie Ctrl-X -- c'est à dire, gardez la touche Ctrl enfoncée et appuyez sur X. Vous pouvez obtenir de l'aide sur la plupart des commandes utilisées en tapant &lt;em&gt;:help command&lt;/em&gt; dans vim, en remplaçant command par ce sur quoi vous voulez de l'aide.&lt;/p&gt;


&lt;h3&gt;Se déplacer efficacement&lt;/h3&gt;


&lt;h4&gt;Rester en dehors du mode insertion&lt;/h4&gt;


&lt;p&gt;En général, vous voulez passer le moins de temps possible dans le mode insertion de vim, car ce mode fait agir vim comme un stupide éditeur de texte. C'est pourquoi la plupart des novices passent tant de temps en mode insertion -- il rend vim facile à utiliser. Mais la vraie puissance de vim réside dans le mode commande&amp;nbsp;! Vous verrez que mieux vous connaitrez vim, moins vous passerez de temps en mode insertion.&lt;/p&gt;


&lt;h4&gt;Utilisez h, j, k et l&lt;/h4&gt;


&lt;p&gt;Le premier pas vers l'édition efficace avec vim est de vous sevrer des touches &lt;em&gt;flèches&lt;/em&gt;. Un des avantages du design de vim est que vous n'avez pas constamment besoin de bouger vos mains entre les touches &lt;em&gt;flèches&lt;/em&gt; et les touches &lt;em&gt;lettres&lt;/em&gt;; quand vous êtes en mode commande, les lettres h, j, k et l correspondent aux directions gauche, bas, haut et gauche respectivement. Cela nécessite un peu d'entraïnement pour s'y habituer, mais vous verrez la différence quand vous y serez habitué.&lt;/p&gt;


&lt;p&gt;Quand vous éditez un e-mail ou un autre texte formatté par paragraphes, vous remarquerez peut-être que les touches de direction sautent plus de lignes que vous ne le voudriez. C'est parceque vos paragraphes apparaissent comme une seule longue ligne dans vim. Tapez g avant h, j, k ou l pour bouger d'une ligne &lt;em&gt;écran&lt;/em&gt; plutôt que d'une ligne &lt;em&gt;virtuelle&lt;/em&gt;.&lt;/p&gt;


&lt;h4&gt;Utilisez les mouvements pour déplacer le curseur dans la ligne courante&lt;/h4&gt;


&lt;p&gt;La plupart des éditeurs n'ont que des commandes simples pour déplacer le curseur (gauche, haut, droite, bas, au début/à la fin de la ligne, etc). vim possède des commandes de déplacement très avancée; ces commandes sont appelées mouvements (&lt;acronym title=&quot;Note du Traducteur&quot;&gt;NdT&lt;/acronym&gt;: &lt;em&gt;motions&lt;/em&gt;). Quand le curseur bouge d'un point à un autre, le texte entre les points (points inclus) est considéré comme étant &lt;em&gt;parcouru&lt;/em&gt; (C'est important pour plus tard).&lt;/p&gt;


&lt;p&gt;Voici quelques uns des mouvements les plus utiles:&lt;/p&gt;

&lt;dl&gt;
&lt;dt&gt;fx&lt;/dt&gt;
&lt;dd&gt;Déplace le curseur en avant jusqu'à la prochaine occurence du caractère x (bien entendu, x peut-être n'importe quel caractère). C'est une commande extèmement utile. Vous pouvez taper ; pour répéter la dernière commande f.&lt;/dd&gt;
&lt;dt&gt;tx&lt;/dt&gt;
&lt;dd&gt;Pareil que f, mais bouge le curseur juste avant le caractère, pas juste dessus (Très utile, vraiment).&lt;/dd&gt;
&lt;dt&gt;Fx&lt;/dt&gt;
&lt;dd&gt;Déplace le curseur en arrière jusqu'à la prochaine occurence de x sur la ligne courante.&lt;/dd&gt;
&lt;dt&gt;w&lt;/dt&gt;
&lt;dd&gt;Déplace le curseur en avant d'un mot.&lt;/dd&gt;
&lt;dt&gt;b&lt;/dt&gt;
&lt;dd&gt;Déplace le curseur en arrière d'un mot.&lt;/dd&gt;
&lt;dt&gt;0&lt;/dt&gt;
&lt;dd&gt;Déplace le curseur au début de la ligne courante.&lt;/dd&gt;
&lt;dt&gt;^&lt;/dt&gt;
&lt;dd&gt;Déplace le curseur sur le premier caractère de la ligne courante.&lt;/dd&gt;
&lt;dt&gt;$&lt;/dt&gt;
&lt;dd&gt;Déplace le curseur à la fin de la ligne courante.&lt;/dd&gt;
&lt;dt&gt;)&lt;/dt&gt;
&lt;dd&gt;Déplace le curseur en avant jusqu'à la prochaine phrase (Utile quand vous éditez un e-mail ou des documents textes).&lt;/dd&gt;
&lt;dt&gt;(&lt;/dt&gt;
&lt;dd&gt;Déplace le curseur en arrière jusqu'à la prochaine phrase.&lt;/dd&gt;
&lt;/dl&gt;

&lt;h4&gt;Se déplacer efficacement dans le fichier édité&lt;/h4&gt;


&lt;p&gt;vim possède de nombreuses commandes qui peuvent vous transporter où vous le souhaitez dans votre fichier -- il est rare que l'on ait à le parcourir manuellement. Les combinaisons de touches ci-dessous ne correspondent pas techniquement à des déplacements, si on considère qu'elles servent à se déplacer dans le fichier et non pas dans une ligne.&lt;/p&gt;


&lt;dl&gt;
&lt;dt&gt;&amp;lt;C-F&amp;gt;&lt;/dt&gt;
&lt;dd&gt;Fait avancer le curseur à l'écran de texte suivant.&lt;/dd&gt;
&lt;dt&gt;&amp;lt;C-B&amp;gt;&lt;/dt&gt;
&lt;dd&gt;Fait reculer le curseur à l'écran de texte précédent.&lt;/dd&gt;
&lt;dt&gt;numG&lt;/dt&gt;
&lt;dd&gt;Place le curseur à la ligne num.  (Par exemple, &lt;em&gt;10G&lt;/em&gt; déplace à la ligne 10.)&lt;/dd&gt;
&lt;dt&gt;gg&lt;/dt&gt;
&lt;dd&gt;Déplace le curseur au début du fichier.&lt;/dd&gt;
&lt;dt&gt;G&lt;/dt&gt;
&lt;dd&gt;Déplace le curseur à la fin du fichier.&lt;/dd&gt;
&lt;dt&gt;H&lt;/dt&gt;
&lt;dd&gt;Déplace le curseur en haut de l'écran.&lt;/dd&gt;
&lt;dt&gt;M&lt;/dt&gt;
&lt;dd&gt;Déplace le curseur au milieu de l'écran.&lt;/dd&gt;
&lt;dt&gt;L&lt;/dt&gt;
&lt;dd&gt;Déplace le curseur en bas de l'écran.&lt;/dd&gt;
&lt;dt&gt;*&lt;/dt&gt;
&lt;dd&gt;Lis la chaîne de caractères sous le curseur et déplace ce dernier à l'endroit suivant où elle apparait de nouveau. (Par exemple, si votre curseur se trouvait sur le mot &lt;em&gt;bob&lt;/em&gt;, le curseur se déplacerait jusqu'à la prochaine occurence de &lt;em&gt;bob&lt;/em&gt; dans votre fichier.)&lt;/dd&gt;
&lt;dt&gt;#&lt;/dt&gt;
&lt;dd&gt;Même chose que ci-dessus, sauf qu'il déplace le curseur sur l'occurence précédente.&lt;/dd&gt;
&lt;dt&gt;/text&lt;/dt&gt;
&lt;dd&gt;A partir de la position du curseur, trouve l'occurence suivante de la chaîne de caractères &lt;em&gt;text&lt;/em&gt; et s'y rend. Vous devrez presser la touche &lt;em&gt;Entrée&lt;/em&gt; pour exécuter la recherche. Pour ré-exécuter votre dernière recherche, tapez &lt;em&gt;n&lt;/em&gt; (pour &lt;em&gt;next occurance&lt;/em&gt; (&lt;acronym&gt;NdT&lt;/acronym&gt;: occurence suivante).)&lt;/dd&gt;
&lt;dt&gt;?text&lt;/dt&gt;
&lt;dd&gt;Même chose que /, mais cherche dans la direction opposée.&lt;/dd&gt;
&lt;dt&gt;ma&lt;/dt&gt;
&lt;dd&gt;Crée un signet nommé &quot;a&quot; référant à la position actuelle du curseur. Un signet peut être nommé par nimporte quelle lettre en minuscule. Vous ne voyez pas le signet, mais il est là&amp;nbsp;!&lt;/dd&gt;
&lt;dt&gt;`a&lt;/dt&gt;
&lt;dd&gt;Aller au signet &lt;em&gt;a&lt;/em&gt;. &lt;strong&gt;Important&lt;/strong&gt;: c'est une backquote et non pas une quote simple. La touche backquote s'obtient à l'aide de la combinaison de touches alt+7 (pavé principal) sur un clavier azerty.&lt;/dd&gt;
&lt;dt&gt;`.&lt;/dt&gt;
&lt;dd&gt;Aller à la dernière ligne que vous avez éditée. Cette fonction est très utile&amp;nbsp;! Si vous avez besoin de parcourir le fichier pour regarder quelque chose, vous pouvez revenir à l'endroit où vous vous trouviez sans avoir à utiliser de signet, en utilisant `.&lt;/dd&gt;
&lt;/dl&gt;

&lt;h3&gt;Saisir efficacement&lt;/h3&gt;


&lt;h4&gt;Utiliser la complétion de mots&lt;/h4&gt;


&lt;p&gt;vim a un système de complétion de mots très pratique. Cela signifie que vous pouvez ne taper qu'une partie d'un long mot, presser une touche, et vim fini de l'écrire pour vous. Par exemple, si vous avez une variable nommée &lt;em&gt;JeSuisUneVariableAvecUnNomImbuvable&lt;/em&gt; quelque part dans votre code, vous ne voudrez probablement pas taper son nom en entier à chaque fois que vous souhaitez l'utiliser.&lt;/p&gt;


&lt;p&gt;Pour utiliser la complétion de mots, tapez simplement les quelques premières lettres de la chaîne (pour notre exemple: JeSuisUn) et pressez &amp;lt;C-N&amp;gt; (cela signifie que vous devez maintenir enfoncé &lt;acronym title=&quot;Control&quot;&gt;Ctrl&lt;/acronym&gt; et taper N) ou &amp;lt;C-P&amp;gt;. Si vim ne vous donne pas le mot que vous souhaitez du premier coup, continuez d'essayer -- vim vous proposera toutes les complétions possibles qu'il trouvera.&lt;/p&gt;


&lt;h4&gt;Entrez intelligemment dans le mode d'insertion&lt;/h4&gt;


&lt;p&gt;La plupart des nouveaux utilisateurs de vim, entrent dans le mode d'insertion en tapant &lt;em&gt;i&lt;/em&gt;. Ca marche, mais c'est souvent inefficace car vi a un jeu de commandes permettant de basculer l'éditeur en mode d'insertion. Voici quelqu'unes des plus populaires:&lt;/p&gt;


&lt;dl&gt;
&lt;dt&gt;i&lt;/dt&gt;
&lt;dd&gt;Insère du texte à gauche du caractère courant.&lt;/dd&gt;
&lt;dt&gt;I&lt;/dt&gt;
&lt;dd&gt;Insère du texte au début de la ligne courante.&lt;/dd&gt;
&lt;dt&gt;a&lt;/dt&gt;
&lt;dd&gt;Insère du texte à droite du caractère courant.&lt;/dd&gt;
&lt;dt&gt;A&lt;/dt&gt;
&lt;dd&gt;Insère du texte à la fin de la ligne courante.&lt;/dd&gt;
&lt;dt&gt;o&lt;/dt&gt;
&lt;dd&gt;Crée une nouvelle ligne sous la ligne courante et y insère du texte.&lt;/dd&gt;
&lt;dt&gt;O&lt;/dt&gt;
&lt;dd&gt;Crée une nouvelle ligne au dessus de la ligne courante et y insère du texte.&lt;/dd&gt;
&lt;dt&gt;c{déplacement}&lt;/dt&gt;
&lt;dd&gt;Efface (change) le texte parcouru par le {déplacement} et insère du texte pour le remplacer. Par exemple, &lt;em&gt;c$&lt;/em&gt; effacera le texte du curseur à la fin de la ligne et entrera en mode d'insertion. &lt;em&gt;ct!&lt;/em&gt; effacera le texte à partir du curseur jusqu'au point d'exclamation suivant (sans l'inclure) et entrera en mode d'insertion. Le texte effacé est copié dans le presse-papier et peut être collé.&lt;/dd&gt;
&lt;dt&gt;d{motion}&lt;/dt&gt;
&lt;dd&gt;Efface le texte parcouru par le {déplacement} -- comme c{déplacement}, mais n'entre pas en mode d'insertion.&lt;/dd&gt;
&lt;/dl&gt;


&lt;h3&gt;Déplacer efficacement des blocs de texte&lt;/h3&gt;


&lt;h4&gt;Utiliser la sélection visuelle et les modes de sélection appropriés&lt;/h4&gt;


&lt;p&gt;A la différence de l'original vi, vim vous laisse mettre en exergue du texte et y exécuter des opérations. Il y a trois modes de sélection visuelle principaux (ce sont les modes de mise en exergue). Ces modes sont les suivants:&lt;/p&gt;

&lt;dl&gt;
&lt;dt&gt;v&lt;/dt&gt;
&lt;dd&gt;Sélection &lt;em&gt;par caractère&lt;/em&gt;. C'est le mode de sélection que la plupart des gens utilisent, donc entraînez-vous avec avant d'essayer les autres.&lt;/dd&gt;
&lt;dt&gt;V&lt;/dt&gt;
&lt;dd&gt;Sélection &lt;em&gt;par ligne&lt;/em&gt;. Sélectionnera toujours des lignes entières. Plus pratique que le mode &lt;em&gt;par caractère&lt;/em&gt; quand vous désirez copier ou déplacer un groupe de ligne.&lt;/dd&gt;
&lt;dt&gt;&amp;lt;C-V&amp;gt;&lt;/dt&gt;
&lt;dd&gt;Sélection &lt;em&gt;par bloc&lt;/em&gt;. Extrêmement puissant et disponible dans très peu d'éditeurs. Vous pouvez sélectionner un bloc rectangulaire et tout le texte se trouvant à l'intérieur sera mis en exergue.&lt;/dd&gt;
&lt;/dl&gt;


&lt;p&gt;Toutes les touches de mouvement habituelles peuvent être utilisées -- donc, par exemple, &lt;em&gt;vwww&lt;/em&gt; entrera dans le mode de sélection visuelle et mettra en exergue les trois mots suivants. &lt;em&gt;Vjj&lt;/em&gt; entrera dans le mode de sélection visuelle &lt;em&gt;par ligne&lt;/em&gt; et mettra en exergue la ligne courante et les deux sous cette dernière.&lt;/p&gt;


&lt;h4&gt;Couper et copier à partir de sélections visuelles&lt;/h4&gt;


&lt;p&gt;Une fois que vous avez une sélection mise en exergue, vous voulez probablement en faire quelque chose. Quelques-une des commandes les plus utiles que vous pouvez utiliser quand une partie d'un texte est mise en évidence:&lt;/p&gt;


&lt;dl&gt;
&lt;dt&gt;d&lt;/dt&gt;
&lt;dd&gt;Coupe (efface) le texte mis en exergue et le met dans le presse-papier.&lt;/dd&gt;
&lt;dt&gt;y&lt;/dt&gt;
&lt;dd&gt;Copie (ou &lt;em&gt;yank&lt;/em&gt; (&lt;acronym&gt;NdT&lt;/acronym&gt;: couper sec) qui est un terme vim-èsque pour &lt;em&gt;copier&lt;/em&gt;) le texte mis en exergue dans le presse-papier.&lt;/dd&gt;
&lt;dt&gt;c&lt;/dt&gt;
&lt;dd&gt;Coupe le texte mis en exergue et le met dans le presse-papier. Comme &lt;em&gt;d&lt;/em&gt;, à l'exception qu'il laisse l'éditeur en mode d'insertion.&lt;/dd&gt;
&lt;/dl&gt;


&lt;h4&gt;Couper et copier à partir de sélections non-visuelles&lt;/h4&gt;


&lt;p&gt;Si vous savez exactement ce que vous voulez copier ou couper, vous pouvez le faire sans entrer dans le mode visuel. Vous gagnerez du temps.&lt;/p&gt;


&lt;dl&gt;
&lt;dt&gt;d{déplacement}&lt;/dt&gt;
&lt;dd&gt;Coupe le texte parcouru par le {déplacement} vers le presse-papier. Par exemple, &lt;em&gt;dw&lt;/em&gt; coupera un mot et &lt;em&gt;dfS&lt;/em&gt; coupera du curseur jusqu'à (en l'incluant) la prochaine lettre &lt;em&gt;S&lt;/em&gt; en majuscule de la ligne courante.&lt;/dd&gt;
&lt;dt&gt;y{déplacement}&lt;/dt&gt;
&lt;dd&gt;Copie le texte parcouru par le {déplacement}.&lt;/dd&gt;
&lt;dt&gt;c{déplacement}&lt;/dt&gt;
&lt;dd&gt;Coupe le texte parcouru par le {déplacement} et laisse l'éditeur en mode d'insertion.&lt;/dd&gt;
&lt;dt&gt;dd&lt;/dt&gt;
&lt;dd&gt;Coupe la ligne courante.&lt;/dd&gt;
&lt;dt&gt;yy&lt;/dt&gt;
&lt;dd&gt;Copie la ligne courante.&lt;/dd&gt;
&lt;dt&gt;cc&lt;/dt&gt;
&lt;dd&gt;Coupe la ligne courante et laisse l'éditeur en mode d'insertion.&lt;/dd&gt;
&lt;dt&gt;D&lt;/dt&gt;
&lt;dd&gt;Coupe du curseur à la fin de la ligne courante.&lt;/dd&gt;
&lt;dt&gt;Y&lt;/dt&gt;
&lt;dd&gt;&lt;em&gt;Yank&lt;/em&gt; la ligne entière, comme &lt;em&gt;yy&lt;/em&gt;. (Oui, c'est contradictoire! Vous pouvez utiliser &lt;em&gt;y$&lt;/em&gt; pour faire ce que vous attendiez d' &lt;em&gt;Y&lt;/em&gt;.)&lt;/dd&gt;
&lt;dt&gt;C&lt;/dt&gt;
&lt;dd&gt;Coupe du curseur à la fin de la ligne courante et laisse l'éditeur en mode d'insertion.&lt;/dd&gt;
&lt;dt&gt;x&lt;/dt&gt;
&lt;dd&gt;Coupe le caractère courant. (C'est, en quelque sorte, la touche d'effacement arrière du &lt;em&gt;mode-commande&lt;/em&gt;.)&lt;/dd&gt;
&lt;dt&gt;s&lt;/dt&gt;
&lt;dd&gt;Coupe le caractère courant et laisse l'éditeur en mode d'insertion.&lt;/dd&gt;
&lt;/dl&gt;


&lt;h4&gt;Coller&lt;/h4&gt;


&lt;p&gt;Coller est une chose simple. Mettez le curseur à l'endroit où vous voulez coller du texte et tapez &lt;em&gt;p&lt;/em&gt;.&lt;/p&gt;


&lt;h4&gt;Utiliser plusieurs presses-papier.&lt;/h4&gt;


&lt;p&gt;La plupart des éditeurs ont un seul presse-papier. vim en a bien plus; les presse-papiers dans vim sont appellés registres. Vous pouvez lister tous les registres définis actuellement et leurs contenus en tapant &lt;em&gt;:reg&lt;/em&gt;. Typiquement, vous utiliserez des registres en lettres minuscules; les autres étant utilisés par vim en internes et ne sont que rarement utiles.&lt;/p&gt;


&lt;p&gt;Pour utiliser un registre spécifique pour une opération de type &lt;em&gt;copier/coller&lt;/em&gt;, tapez simplement &quot;a avant la commande, où a est le registre que vous voulez utiliser.&lt;/p&gt;


&lt;p&gt;Par exemple, pour copier la ligne courante dans le registre k, vous pouvez taper &quot;kyy. (Vous pouvez aussi taper V&quot;ky. Pourquoi pas ?). Cette ligne restera dans le registre k jusqu'a ce que vous copiez spécifiquement quelque chose d'autre dans ce registre. Vous pouvez maintenant utiliser &quot;kp pour coller le texte se trouvant dans le registre k.&lt;/p&gt;


&lt;h3&gt;Eviter les répétitions.&lt;/h3&gt;


&lt;h4&gt;La stupéfiante commande .&lt;/h4&gt;


&lt;p&gt;Sous vi, taper . (un point) répettera la derniere commande que vous avez executé. Par exemple, si votre dernière commande était &lt;em&gt;dw&lt;/em&gt; (effacement de mot (&lt;acronym title=&quot;Note du Traducteur&quot;&gt;NdT&lt;/acronym&gt;: delete word), vi effacera un autre mot.&lt;/p&gt;


&lt;h4&gt;Utiliser les compteurs&lt;/h4&gt;


&lt;p&gt;Les compteurs sont une des plus puissantes et économiques (en temps) fonctionnalités de vim. Nimporte quelle commande peut être précédée d'un nombre. Le nombre dira à vim combien de fois exécuter la commande. Voici quelques exemples:&lt;/p&gt;


&lt;p&gt;3j déplacera le curseur vers le bas, de trois lignes.
10dd effacera dix lignes.&lt;/p&gt;


&lt;p&gt;y3&amp;amp;quote; copiera (&lt;em&gt;yank&lt;/em&gt;) du curseur jusqu'à la troisième &lt;em&gt;quotation mark&lt;/em&gt; (NDT: je laisse l'expression originale pour que vous puissiez comprendre la commande, mais il s'agit de guillemets) après le curseur, sur la ligne courante. Les compteurs sont utiles pour augmenter l'étendu d'un déplacement.&lt;/p&gt;


&lt;h4&gt;Enregistrement de macros&lt;/h4&gt;


&lt;p&gt;Occasionnellement, vous vous retrouverez à faire la même chose encore et encore sur des blocs de texte de votre document. vim vous laisse enregistrer une macro ad-hoc pour exécuter l'opération.&lt;/p&gt;


&lt;dl&gt;
&lt;dt&gt;qregister&lt;/dt&gt;
&lt;dd&gt;Commence l'enregistrement de macro dans le registre nommé register. Par exemple, &lt;em&gt;qa&lt;/em&gt; commence l'enregistrement et met la macro dans le registre a.&lt;/dd&gt;
&lt;dt&gt;q&lt;/dt&gt;
&lt;dd&gt;Fin de l'enregistrement.&lt;/dd&gt;
&lt;dt&gt;@register&lt;/dt&gt;
&lt;dd&gt;Rejoue la macro stockée dans le registre register. Par exemple, @a rejoue la macro du registre a.&lt;/dd&gt;
&lt;/dl&gt;

&lt;p&gt;Gardez en tête que les macros enregistrent simplement vos pressions de touches pour les rejouer ensuite. Il n'y a rien de magique. Enregistrer des macros est presque une forme d'art car il y a tellement de commandes qui accomplissent une tâche donnée sous vim, et vous devez choisir avec attention les commandes que vous utilisez pendant que votre macro enregistre, afin qu'elles marchent aux endroits où vous avez prévu d'utiliser la-dite macro.&lt;/p&gt;


&lt;h4&gt;Ecrire du code sous vim&lt;/h4&gt;


&lt;p&gt;vim  est un excellent éditeur de code source car il a de nombreuses fonctionnalités qui ont été spécifiquement conçues pour aider les développeurs. Voici quelques-unes des plus utiles:&lt;/p&gt;

&lt;dl&gt;
&lt;dt&gt;]p&lt;/dt&gt;
&lt;dd&gt;Comme pour &lt;em&gt;p&lt;/em&gt;, mais ajuste automatiquement l'indentation du code collé pour correspondre au code dans lequel vous avez inséré. Essayez!&lt;/dd&gt;
&lt;dt&gt;%&lt;/dt&gt;
&lt;dd&gt;Mettre le curseur sur une acolade, un crochet ou une parenthèse et presser % enverra le curseur à l'acolade, au crochet ou à la parenthèse correspondant(e). C'est très pratique pour résoudre les problèmes de parsing liés à de multiples blocs de code imbriqués.&lt;/dd&gt;
&lt;dt&gt;&amp;gt;&amp;gt;&lt;/dt&gt;
&lt;dd&gt;Indente le code mis en exergue. (Voir la section plus haut, concernant la séléction efficace de texte. Si il n'y a pas de texte sélectionné, la ligne courante est indentée.)&lt;/dd&gt;
&lt;dt&gt;&amp;lt;&amp;lt;&lt;/dt&gt;
&lt;dd&gt;Comme &amp;gt;&amp;gt;, mais dés-indente.&lt;/dd&gt;
&lt;dt&gt;gd&lt;/dt&gt;
&lt;dd&gt;Aller à la ligne de définition (ou de déclaration) d'une variable&lt;/dd&gt;
&lt;dt&gt;K&lt;/dt&gt;
&lt;dd&gt;Aller à la page de manuel pour le mot actuellement sous le curseur. (Par exemple, si votre curseur est sur le mot &lt;em&gt;sleep&lt;/em&gt;, vous verrez la page de documentation de &lt;em&gt;sleep&lt;/em&gt; s'afficher.)&lt;/dd&gt;
&lt;/dl&gt;</description>
    
    
    
          <comments>http://mirmodynamics.com/post/2004/05/08/150-ledition-efficace-avec-vim#comment-form</comments>
      <wfw:comment>http://mirmodynamics.com/post/2004/05/08/150-ledition-efficace-avec-vim#comment-form</wfw:comment>
      <wfw:commentRss>http://mirmodynamics.com/feed/atom/comments/150</wfw:commentRss>
      </item>
    
</channel>
</rss>