|
Posté par Emmanuel Seyman. Approuvé le Mercredi 04 Septembre à 12:25 [M]
Dépt: livre de chevet
|
Ca faisait longtemps que je cherchais un bon livre sur Vim pour apprendre au maximum de sa capacité. Les editions New Riders viennent de sortir un livre de Steve Oualline "Vi IMproved--VIM", consacré a ce magnifique éditeur. Mes impressions...
|
|
|
|
|
|
| Posté par Luc. Approuvé le Mardi 06 Août à 10:28 [M]
|
La correction orthographique des e-mails peut être accomplie de bien des façons et même à plusieurs moments -- je ne doute pas que l'on puisse lancer aspell dans un xterm depuis mutt, corriger et revenir à mutt.
Typiquement, il faut disposer d'un soft de correction orthographique. Parmi les plus connus et répandus dans le monde GNU et *nix, on trouve entre autres ispell et aspell. Ispell est venu en premier et d'après ce que j'en ai compris, il permet d'avoir des dictionnaires efficacement compressés. Aspell, son successeur dans l'âme semble quant à lui plus efficace lorsqu'il s'agit de proposer des alternatives à un mot mal épelé ; ses heuristiques prennent en compte la sonorité des mots. En vérifiant les URLs, je viens de voir qu'il y a eu un petit changement, maintenant on parle de GNU Aspell.
Si on veut s'en servir depuis VIM, l'approche la plus simple consiste certainement à lancer aspell (ou ispell) dans un processus externe avec p.ex.: :update \| :!aspell -c --dont-backup % \| :e
Cf. la page Text Processing With Integrated Spell Checking de David Highley pour encore plus d'explications et de conseils autour de cette approche.
Personnellement, j'ai choisi d'intégrer aspell dans VIM. C'est globalement plus lent, mais plus joli (sous Windows, ma version d'Aspell est en Noir et Blanc) et en plus on garde la puissance de VIM derrière.
Cela a donné lieu à un plugin (lhVimSpell) assez gros dont le principal interêt est d'afficher la liste des alternatives, à un mot non reconnu, dans une fenêtre separée depuis laquelle il est possible de sélectionner l'alternative désirée.
Concernant la correction grammaticale ... il n'y a malheureusement rien à ma connaissance qui puisse s'intégrer correctement et facilement avec mutt, vim ou tout autre logiciel ouvert non limité à windows.
|
|
|
|
|
|
| Posté par Luc. Approuvé le Lundi 05 Août à 18:35 [M]
|
Lorsque l'on répond à des messages, que cela soit des e-mails ou des posts sur usenet, il est plus que fréquent que l'on veuille effacer des lignes voire des paragraphes entiers.
Je me place ici dans le cas où l'on ne peut pas utiliser la souris. Chose qui est assez fréquente lorsque vim est lancé sur une autre machine (via un telnet, ssh, etc).
Voici donc des exemples de sequences de touches que j'utilise assez fréquement :
- dd : la plus connue pour effacer la ligne courante ;
- dL : pour tout effacer jusqu'à la dernière ligne visible sur le terminal ; on peut également s'amuser avec d4L pour tout effacer entre la ligne courante et les 4 dernières ;
- dG : pour tout effacer jusqu'à la fin du fichier
- d-- : pour tout effacer jusqu'à la fin du fichier, ou jusqu'à notre signature si elle est présente ; la définition se trouve dans mon ftplugin Mail_Sig_Set.vim -> onoremap -- /\n^-- \=$\\|\%$/+0<cr>
- dq : pour effacer le niveau de quote courant ; défini dans le mail ftplugin de Brian Medley
- vipd : pour sélectionner le paragraphe courant (délimité par des lignes blanches) et l'effacer.
En fait, il existe bien d'autres séquences de ce style. Toutes les actions du type 'd'elete, 'c'hange, 'y'ank, etc attendent un déplacement ; ce sont les "operator command" qui nous placent dans l'"operator-pending-mode". Pour en savoir plus, faire ":h motion.txt" sous VIM.
|
|
|
|
|
|
| Posté par Luc. Approuvé le Lundi 05 Août à 18:12 [M]
|
Comme je l'avais déjà signalé dans les divers commentaires par-ci par-là, une des améliorations majeures (à mon goût) de la version 6 de VIM sont les ftplugins.
Plugins et ftplugins sont des fichiers de scripts qui sont chargés et exécutés automatiquement quand VIM se lance [1]. Le principal avantage étant de pouvoir garder un .vimrc aussi léger que possible et permettre d'échanger facilement des modules parfois complexes (cf. la home page de vim sur sourceforge).
Les ftplugins sont un type particulier de plugins ; leur nom est l'abréviation de filetype-plugin. Contrairement aux plugins qui sont tous systématiquement chargés quand VIM se lance, seuls certains ftplugins sont chargés au lancement de VIM : ceux qui sont associés au type du fichier edité. Evidemment, ici sur muttfr, ce sont les "mail ftplugins" qui nous interressent.
Avant, que faisait-on ?
On mettait dans le .vimrc une ribambelle de macros et de définitions qui étaient valides quelque soit le type de fichier edité. Souvenez-vous du .vimrc correspondant de Sven Guckes.
Pour les commandes que l'on voulait voir s'exécuter automatiquement, on rajoutait également un truc du genre :
au BufNewFile,BufRead mutt-*- \d\+,.letter,... :normal ,re
et on recommencait pour toutes les actions que l'on voulait voir se lancer sans que l'on ait à intervenir.
Bref, c'était pénible à maintenir (car on a installé un nouveau logiciel comme slrn, ...), cela alourdissait un fichier déjà gigantestque, etc.
Vient le temps des ftplugins, si on regarde bien, la liste des noms de fichiers à supporter est définie dans le fichier $VIM/filetypes.vim. VIM peut ainsi savoir quel est le type du fichier édité et ainsi charger la coloration syntaxique qui va bien. Et justement, les e-mails de mutt, elm, pine, les articles de slrn, trn, etc sont déjà reconnus.
Et cela va plus loin car on peu aussi charger un ensemble de définitions : les fameux mail ftplugins ; et ceci *automatiquement* !
Pour cela, il faut déposer dans $HOME/.vim/ftplugin/mail/ les fameux fichiers. Si les fichiers ont un nom du type mail_xxx.vim, on peut directement les mettre dans $HOME/.vim/ftplugin/. Note, sous windows le répertoire est $HOME/vimfiles/ftplugin/ (cf ":h 'runtimepath').
Les plugins quant à eux se déposent dans $HOME/.vim/plugin/.
Bon, évidemment, comme vous le savez déjà mes mail ftplugins sont proposés et décrits sur ma page WWW. Vous en trouverez d'autres sur sourceforge ; notament celui de Brian Medley qui a une approche différente de la mienne pour virer les signatures et propose aussi un moyen pour interroger abook depuis VIM (pour interroger les alias de mutt depuis VIM, je vais plus loin), et un autre pour supprimer des paragraphes de quotes de même niveau.
[1] en fait, c'est un petit peu plus complexe que cela.
|
|
|
|
|
|
| Posté par Xavier Maillard. Approuvé le Mardi 12 Février à 16:36 [M]
|
J'utilise mutt avec ce superbe éditeur qu'est VIM. Après un long apprentissage et des heures de lectures de lignes de script VIM, j'ai modifié une fonction qui permet d'ajouter des alias mutt dans VIM.
Cette fonction est basée sur celle de Luc HERMITE et à l'avantage de n'insérer des alias que sur les lignes adéquates (To, Cc, Bcc) alors qu'à l'origine les alias sont placés sur la ligne où est positionné le curseur.
Voici donc cette fonction :
"Champs désigne la ligne d'insertion
"alias ...
func! AppendAlias(champs,alias)
"on se positionne au début du fichier
normal 1G
"on recherche la ligne commençant par champs
"et on sauvegarde la ligne qui va bien
exe '/^' . a:champs
let l = line('.')
"on recherche l'alias dans le fichier mutt
"(cf macro de Luc)
let addr = GrepAlias(a:alias)
"ici je teste si c'est la première insertion d'un alias
if getline(l) !~ '^.*>$'
call setline(l,getline(l).addr)
else
"sinon je prends la ligne à laquelle je rajoute une ',' séparatrice et l'alias
call setline(l,getline(l).','.addr)
endif
endf
Voilà c'est tout.
Après ça il suffit de créer les mappings qui vont bien comme suit :
command! -nargs=1 Ca :call AppendAlias('To:\s*',)
noremap ,Ca :Ca
command! -nargs=1 CA :call AppendAlias('Cc:\s*',)
noremap ,CA :CA
Libre à vous dee rajouter les Reply-To et autre Bcc
Ensuite dans le mode mail il suffit de taper en mode normal ,Ca pour ajouter un alias dans le champs 'To' et le tour est joué !!
Happy viming !
:-)
|
|
|
|
|
|
| Posté par Luc. Approuvé le Mercredi 14 Novembre à 04:01 [M]
|
Salut à tous,
C'est un peu vil de faire une news de plus pour cela, mais je pense que cela peut s'avérer intéressant.
J'ai opéré une mise à jour majeure, et surtout stabilisée, sur mon script permettant d'incorporer des alias au format MUTT dans les champs d'adresse des messages électroniques.
Dorénavant, il est possible d'entrer une expression régulière (ou l'alias exact) directement dans un champs d'adresse, d'appuyer sur <tab> et de voir l'adresse e-mail venir s'insérer toute seule comme une grande. Jusque là, rien de bien folichon.
Le gros truc est que si plusieurs alias correspondent à l'expression régulière donnée, alors la fenêtre d'édition va se séparer en deux et tous les choix compatibles vont être proposés. De là, il sera possible d'en choisir un avec <entrée> ou d'en choisir plusieurs en les taguant (touche <t> -- minuscule) d'abord -- pas besoin d'appuyer sur <;> comme dans MUTT avant de valider.
Application directe : si on veut voir apparaitre toutes les adresses du carnet d'adresse, tapez <.> (point) dans le champ Cc: (p.ex.), puis <tab> et tagguez à souhait.
Concernant les fichiers, plusieurs sont requis. Vous en trouverez la liste ci-dessous.
Luc
PS: free est parfois un peu lent, donc insistez si vous avez des problèmes de connexion.
|
|
|
|
|
|
| Posté par muttfr. Approuvé le Mardi 06 Novembre à 22:56 [M]
|
Je viens tout juste de terminer de le nettoyer et le peaufiner, je le colle donc en attach de ce message. Vous y trouverez de jolies couleurs (hum...) et quelques petites macro pour Mail & News, insérer automatiquement ses e-mails etc.
Happy vimming !:)
|
|
|
|
|
|
| Posté par muttfr. Approuvé le Mardi 06 Novembre à 22:32 [M]
|
Ce qui suit est un petit extrait (écourté) de l'article que je vous ai concocté pour Linuxmag ce mois-ci, parce que je manque d'inspiration et que certains visiteurs s'en plaignent :)
***
Par défaut, mutt intervient de manière pseudo interactive lors de l'envoi d'un message, pour renseigner les champs To, subject ... Pour éditer et personnaliser ses headers :
# ~/.muttrc
set edit_headers
le reste se passe dans la configuration de l'éditeur par défaut, en l'occurence VIM:
- sourcer dans son vimrc le fichier contenant les
propriétés vim pour mutt :
au BufEnter ~/.tmp/mutt*
so ~/.vim/mutt.colors ;
- créer et renseigner le fichier /.vim/mutt.colors (exemple
ci-dessous). Pour plus d'informations sur la syntaxe de ce fichier
et les différentes couleurs disponibles, taper
:help
highlight, :help cterm ou :help colors dans VIM.
" exemple de fichier ~/.vim/mutt.colors
hi mailHeaderKey ctermfg=cyan
hi mailSubject ctermfg=magenta
hi mailHeader ctermfg=darkcyan
hi mailEmail ctermfg=yellow
hi mailSignature ctermfg=darkmagenta
hi mailQuoted1 ctermfg=darkgreen
hi mailQuoted2 ctermfg=darkcyan
hi mailQuoted3 ctermfg=darkmagenta
hi mailQuoted4 ctermfg=blue
hi mailQuoted5 ctermfg=darkblue
hi mailQuoted6 ctermfg=black
La liste complète de ces différents champs (emails, en-têtes,
subject ...)est en fait définie dans un des fichiers de syntaxe
vim, mail.vim (sous debian, /usr/share/vim/vim58/syntax/mail.vim). Il
est composés en "régions" (ensembles de champs auxquels seront
affectées les mêmes propriétés) et en "matchs", permettant
de déterminer des propriétés spécifiques à chacun des
champs. Il est donc très facile de le personnaliser :
- Exemple de region (extraite du mail.vim) :
syn region mailHeaderKey contained start="^\(From\|To\|Cc\|Bcc\|Reply-To\).*" skip=",$" end="$" contains=mailEmail
- Exemple de match (personnalisé) :
syn match mailTo contained "^To.*"
Une fois définis, ces différents "matchs" ou "regions" peuvent alors être nommément désignés dans le fichier mutt.colors, et associés à un ensemble de propriétés. C'est bien peu de chose mais c'est à ce genre de petits détails qu'on juge le degré de raffinement du geek moyen
|
|
|
|
|
|
| Posté par IC. Approuvé le Lundi 21 Mai à 20:46 [M]
|
Cher ami... utilisateur de Microsoft Winblows, tu te sens seul et abandonné sur ton Xterm ? ton éditeur ne bouffe pas assez de CPU ? tu _veux_ retrouver ton ami trombone sous Linux (oui je sais qu'on dit GNU/Linux) ? Et bien sache que non seulement ca existe, mais qu'en plus il est nettement mieux que l'original (sisi c'est possible).
L'original savait (parfois) se rendre utile en plus d'etre extremement chiant. Et bien Vigor (c'est son nom) n'est _que_ chiant !
C'est donc ton nouvel ami :)
(Brought to you by Netscape for Irix ;)
|
|
|
|
|
|
| Posté par Luc Hermitte. Approuvé le Mardi 13 Mars à 16:19 [M]
|
Salut,
Je fais un petit peu de pub (je sais c'est vil!) pour 4 fichiers de macros utiles aux utilisateurs de VIM + MUTT -- A moins que cela soit le contraire. Bref.
- mail.set réunit pratiquement toutes les macros et commentaires de Sven Guckes dans un ficher autre que le .vimrc ; au passage, il s'occupe de charger les 3 autres fichiers de macros qui suivent.
- Mail_Re.set qui corrige les macro ,re et ,Re de Sven Guckes afin de pouvoir les appliquer automatiquement. Au passage on transforme les "Réf. :" en "Re:"
- Mail_Cc.set : parce que j'en avais marre de recevoir une copie de mes mails lorsque je faisais des group-reply [a encore un tout petit bug] ; à se configurer pour l'adresse e-mail
- Mail_mutt_alias.set : transpose la macro ,Ca d'ELM à MUTT. Ainsi, on peut insérer de nouveaux destinataires via alias sans devoir quitter VIM ; à configurer pour savoir où chercher le fichier d'alias.
Dernier truc, pour que tout s'enchaîne automatiquement, il faudrait récuperer mysettingfile.vim et le sourcer depuis votre propre .vimrc à peu près après les dernières commandes d'activation de la coloration de syntaxe.
Voili, voilou. J'espère que vous en ferez bon usage.
Luc
|
|
|
|
|
|
|
|
Plop, La visualisation des attachements est cassée (à cause de PosgreSQL 7.3), mais ne vous inquietez pas, ça fait 1 mois que ça me hante toutes les nuits et que je tente de patcher (Oumph: au secours !!! ;).
Pour nous contacter: webmaster@muttfr.org. |
|
|
| Lu | Ma | Me | Je | Ve | Sa | Di |
| |
|
1 |
2 |
3 |
4 |
5 |
| 6 |
7 |
8 |
9 |
10 |
11 |
12 |
| 13 |
14 |
15 |
16 |
17 |
18 |
19 |
| 20 |
21 |
22 |
23 |
24 |
25 |
26 |
| 27 |
28 |
29 |
30 |
31 |
|
|
|
|
|
set sort_browser= ? Je serais curieux de savoir comment les utilisateurs experimentees organise leur 'folders' sur l'ecran.
[Commentaires]
|
|
|
mutt - toggle de variable.
Vous voulez editer les headers mais pas tout le temps... pas de probleme, avec cette macro vous en appuiant sur 'h' lorsque vous etes sur un index vous modifiez la variable edit_header.
macro index h ':toggle edit_headers:set ?edit_headers'
-- Sebastien Michel |
|
|