LBSNDD : le blog sans nom de dimitri

Aller au contenu | Aller au menu | Aller à la recherche

samedi 31 décembre 2005

Rédiger avec Vim dans Thunderbird

Depuis que j'utilise Vim, je bave devant Mutt qui permet d'utiliser ce dernier pour rédiger des mails. N'ayant jamais vraiment pris le temps pour parvenir à configurer proprement Mutt, j'ai continué de baver jusqu'à il y a peu. Surtout que depuis je me suis habitué à Thunderbird. J'ai parfois cherché, en vain, un plugin ou une extension qui permettrait d'utiliser Vim comme éditeur de texte dans Thunderbird.

Et puis, il y a une semaine environ, j'ai découvert External editor, une extension pour Thunderbird. Bien sûr, ce n'est pas propre à Vim, mais à tout éditeur de texte qui, comme le dit l'auteur, « doit être bloquant, c'est-à-dire qu'il ne doit pas rendre la main avant que vous l'ayiez fermé. » Il doit aussi permettre d'ouvrir un fichier en ligne de commande, c'est-à-dire, que vous pouvez taper dans un terminal vim monfichier pour éditer monfichier.

Donc, amateurs d'Emacs, NEdit, <votre éditeur favori>, soyez rassurés.

Installez, configurez

  • Téléchargez l'extension au format XPI (la version 0.7.1 est compatible avec le futur Thunderbird 1.5 mais fonctionne avec la version stable actuelle 1.0.7).
  • Ouvrez Thunderbird.
  • Ouvrez le gestionnaire d'extensions : Outils -> Extensions.
  • Installez.
  • Redémarrez Thunderbird (fermez toutes les fenêtres de Thunderbird !!) et retournez dans le gestionnaire d'extension pour la paramétrer.
  • Dans le champ Éditeur de texte saisissez la commande appelant ce dernier. Par exemple :
    • xterm -e vim pour Vim en mode texte dans un Xterm.
    • gvim --nofork pour Vim en mode graphique.
    • emacs pour Emacs.
  • Pour les en-têtes, vous pouvez soit les éditer depuis l'éditeur externe (dans ce cas, spécifiez lesquels), soit les remplir de manière classique dans Thunderbird.

Utilisez

Un nouveau bouton est disponible pour la barre d'icônes de la fenêtre de composition (et uniquement dans cette fenêtre !). Cliquez du bouton droit sur la barre d'icônes, prenez l'icône « External Editor » et faites-la glisser à la position que vous souhaitez :

En plus, l'extension a reconnu que j'ai choisi Vim comme éditeur favori et me met une icône adaptée sur le bouton. Ça c'est de la finition ! Cependant, je ne jurerais pas que tous les éditeurs présents sur le Web ont leur icône... (note, il se peut que vous ayez à relancer l'outil de composition de courrier et pas tout Thunderbird)

Note : vous pouvez aussi utiliser le raccourci Ctrl + E pour ouvrir Vim.

Vous pouvez passer de Thunderbird à Vim et vice versa autant qu'il vous plaira (pour quitter Vim, :wq). Le texte est transféré à chaque fois. Ainsi, vous pouvez commencer à saisir dans Thunderbird et continuer dans Vim.

Cela signifie que le format des réponses imbriquées est entièrement respecté (c'est toujours Thunderbird qui gère la façon dont vous répondez, c'est-à-dire, avant ou après la citation, même si la Netiquette préconise que la réponse suive la partie citée).

Je pense que cette extension fera des heureux.

vendredi 16 décembre 2005

Astuces : complétion

Il est illusoire de vouloir essayer de retenir ne serait-ce que le dixième des astuces compilées par David Rayner fruit de 15 ans d'expérience avec Vi et 4 ans avec Vim. Cependant, en piocher une de temps en temps et essayer de la retenir me semble une bonne idée. Je vous propose donc ce petit jeu.

Aujourd'hui, parlons de complétion.

Je ne sais pas si ce mot est vraiment français (il semblerait que non d'après Wikipédia), mais il a le mérite d'être très utilisé et compris par ceux qui la pratique. Pour les autres, sachez que la complétion consiste à demander à un logiciel (le shell Bash par exemple) de compléter automatiquement un mot dont on ne saisi que le début. Ainsi, si vous tapez moz dans votre shell (depuis un terminal ou une console) suivi de la touche Tabulation, il y a de fortes chances que le mot devienne mozilla. En fait, le shell complète lorsqu'il n'y a aucune ambiguité possible. Sinon, appuyez encore une fois sur Tabulation pour voir apparaître toutes les possibilités.

Tout comme le shell Vim est capable de compléter automatiquement.

Compléter à partir des mots présents dans le fichier courant

Commencez à taper le début d'un mot puis pressez Ctrl + P. Vim va chercher en arrière dans le contenu du fichier courant, un mot commençant de la même façon. Si plusieurs mots correspondent, appuyez plusieurs fois sur Ctrl + P pour les passer en revue.

Vous pouvez également effectuer une recherche en avant avec Ctrl + N (P pour previous et N pour next).

Si vous avez ouvert plusieurs fichiers en même temps, dans la même session de Vim, la recherche s'effectue sur l'ensemble de ces fichiers.

Compléter à partir d'un dictionnaire

Nous pourrions utiliser la fonctionnalité précédente en ouvrant systématiquement un fichier contenant tous les mots du dictionnaire. Ainsi, Vim chercherait également dans ce fichier. Cependant Vim est prévu pour chercher automatiquement dans un dictionnaire que nous lui indiquons, dans le .vimrc par exemple. Sous Debian il existe un paquet nommé wfrench qui contient une liste de mots français.

Indiquons à Vim dans quel fichier aller chercher (dans .vimrc) :

set dict=/usr/share/dict/french

Notez que nous pouvons donner plusieurs fichiers avec l'opérateur += (comme on peut en retirer avec -=) :

set dict+=autre_fichier

Par défaut, Vim recherche la correspondance exacte. Or, dans ce fichier dictionnaire, les mots commencent tous par une minuscule. Nous pourrions les dupliquer en mettant une version avec majuscule. Mais on peut aussi indiquer à Vim de ne pas tenir compte de la casse (différence majuscules/minuscules).

set ignorecase

Mieux encore, nous pouvons lui indiquer de compléter avec la bonne syntaxe, c'est-à-dire, avec une majuscule si l'on a commencé à taper avec une majuscule.

set infercase

Ensuite, lors de la saisie, en mode Insertion, saisissez Ctrl + X suivi de Ctrl + K. Vous pouvez passer en revue toutes les possibilités avec Ctrl + P et Ctrl + N.

Vous préfèreriez que la complétion standard décrite au début recherche également dans le dictionnaire, sans avoir à taper Ctrl + X, Ctrl + K ? Il suffit de rajouter l'option « dictionnaire » dans la chaîne de recherche (voir le lien en fin d'article). La lettre k représente les fichiers donnés par l'option dictionary.

set complete+=k

Compléter une ligne

Encore plus fort, Vim est capable de compléter une ligne entière ! Commencez à saisir le début de votre ligne et pressez la combinaison Ctrl + X, Ctrl + L. Il cherche la première ligne qui précède et qui commence de la même façon. Il complète alors votre ligne actuelle à l'identique. Utilisez Ctrl + N et Ctrl + P@@ pour paser en revue toutes les lignes éligibles.

Lien utile

Plus d'informations dans la documentation française coordonnée par David Odin.