mutt+vim workshop

Latest change: Tue Oct 24 14:03:40 CEST 2006

http://www.guckes.net/herford/

Fahrplan

=== Auftakt

Wie immer: Zuerst einmal screen starten.
Dann Mutt und Vim starten.
ist netz ok?

check: wer weiss über das programm wie viel?
wer mailt lokal, wer von einem remote server?

Mailingliste "workshop":
Bemerkungen, Fragen, Ideen - auf die Liste schicken!
wir schauen uns jene in der pause mal an -
und dann bauen wir das irgendwie mit ein.

=== Mini COnfig

Vorbereitung:
Server       einrichten
Mailingliste einrichten
gruppenalias in /etc/Muttrc hinzufuegen

eigenen setup reduzieren auf minimal header.
viel farbe aus dem body rausnehmen.
evtl auch den display_filter abschalten.

initiales muttrc:
$ wget http://www.guckes.net/Setup/muttrc.workshop
$ mv muttrc.workshop ~/.muttrc

=== Inbox Index
Jumps: schnelles bewegen zwischen mails
repositionieren der aktuellen nachricht

=== Kommandos

die wichtigsten Kommandos sind:

j
k
J
K

Positionieren:
H   home    
M   middle
L   last

zt
zb
zz

Suchen:
/
?

Mailen:
m   Mail    neue Mail schreiben

Weiterleiten:
b   bounce  
f   forward ...

Antworten:
r   reply   auf aktuelle Nachricht antworten
g   group-reply ...
L   list-reply  ...

Kopieren
C   copy
s   save

Status aendern:
d   delete
u   undelete
N   neu
F   flag !

Beenden:
q   quit    Aenderungen zurueck in Folder schreiben und beenden
x   exit    keine Aenderungen   in Folder schreiben und beenden

Mehrere Nachrichten behandeln:
t   tag
;   tag-prefix
l   limit
->  Übersicht der Muster (patterns)

Advanced:
Postpone+recall
change-folder
mailboxes menu
Sortierung
Attachments (view, delete)
Threads
Kommandozeile
graft+prune
scoring

=== Viewing Messages
header:  auswahl der zeilen, reihenfolge, farbe
display_filter: ändern+löschen vor dem anzeigen.
zB footers+signatures ausblenden, typos korrigieren

=== Senden
Beispielmail:
Absender, Headerzeilen, Hallo+signoff, Signatur.

Beantworten von Emails - Schema:
Ziel: Schnelles Editieren von Nachrichten - aber
ohne den Kontext zu verlieren oder TOFU zu senden.

== Mails editieren
- Anpassungen am Header der Nachricht:
  - Adresse/Alias hinzufügen
  - Subjectwechsel (,cs ,CS)
  - Folderkopie (#D -> "Fcc: +KOELN")
- "Hallo, VORNAME!"  (,hi ,ha)
- Hinweise zur Attribution
- Umbrechen von zitiertem Text (^J F5 F6)
.
- Löschen von Leerzeichen an Zeilenenden (F9)
- Löschen von zitierten Leerzeilen
- TABs in spaces umwandeln
- Verdichten von whitespace runs (F10)
- Absatz einrücken bzw löschen
- Satz löschen
- Rahmen um Zitat setzen
- Spoiler einfügen (^L) gefolgt
  von rotiertem Text (ROT13)
- Leere Spalte einfügen für Zitate
  *ohne* Leerzeichen nach dem '>'
.
- mails trennen nach thema;  dazu
  teile in register speichern und
  bei weiterer antwort hervorholen
.
- (De-)Zitieren von Text   (,qp ,dp)
- Einfügen von Webseitenadressen (s.o.)
- Einfügen eines Zitats   (,aq) (agrep)
- Anfügung einer Signatur  (,s)  (agrep)
- Löschen von Vollzitaten (dG)

plenking.  NOT!

templates: make use of registers and files (.sig.*)

vim7 spellchecking

verwendung von CC und BCC
extra header zeilen, my_hdr
Fcc: sideeffect
fast additions of extra headers

== vim:
cc dd       aktuelle Zeile ändern bzw löschen:
C D         Rest der Zeile ändern bzw löschen:
S           substituiere  (ändere) aktuelle Zeile

Kombination von Kommandos:
angekündigte Änderungsart plus Bewegung (jump):
dj          aktuelle und nächste Zeile löschen
cG dG       bis zum Ende des Buffers ändern bzw löschen:

Löschen bis zum Signaturtrenner:
d/^-- $

Wiederholung durch Nummernpräfix:
5dd         fünf Zeilen löschen (aktuelle + vier folgenden)
5S          fünf Zeilen ändern  (aktuelle + vier folgenden)

Visual Mode:
Idee: Erst Text auswählen (visual selection),
dann Aktion (visual operator) wählen.
v{mov}c
V{mov}d
V{mov}rX

r<CR>       Ersetzen eines Leerzeichens durch ein Zeilenende:

Text erneut nach textwidth formatieren.
F5+F6

Erinnerung: Auch beim Schreiben einer
Mail stehen weitere Puffer zur Verfügung.

:split
:new

Auslagern in bzw Einlesen von einer temporären Datei:
:w tempfile
:r tempfile

Shell benutzen?  Shell aufrufen!
:shell

Und was sagt die Kuh dazu?
:r!cowsay moo

=== crypto

schlüsselpaar generieren
öffentlichen schlüssel auf keyserver hochladen
kleine keysigningparty?
signieren und verschlüsseln

=== Mutt Config

from+realname  use_from

set from=guckes@guckes.net
set realname"Sven Guckes"
alias w Mutt Workshop Herford 

alternates:  eigene adressen bekannt machen -> to_chars
attribution: name+adresse, evtl datum+uhrzeit; ohne sprachliche worte!

edit_headers!
include
metoo
nomove

reverse_alias
reverse_name

minimal setupfile!

eigenes dot-verzeichnis
setupdateien.  split per "source" command.
aliase in eigener aliasdatei anlegen; ":source aliases"
index_format, folder_format

== Color
farben im folder index
farben für nachrichten header+body
antworten auf eigene mails
bounced/resent mails
whitelisted people

=== Limit
teilmenge des index über "muster" auswählen.
übersicht zu den mustern.
spam "erkennen"
nur neue mails anzeigen.
doppelte ausblenden.
mails bestimmer leute ausblenden.

=== tag-prefix
kommandos auf mehrere mails anwenden (vor allem copy, save, delete).
tag by pattern
mails bestimmer leute verschieben.

=== Folders
save by time or username?
+vorname.nachname
+THEMA
save-hooks:
save-hook "~f jorge" +jorge.santos
fcc-hooks

mailboxes
suchstrategien über mehrere folder:
cat `grep -L foo ~/Mail/*` > /tmp/FOO; mutt -f FOO

  cat foo >> bar
  ln -is bar foo

=== Sending from Command Line

echo foo | mutt address
echo foo | mutt -s $SUBJECT address
echo foo | mutt -s "the subject" address
echo foo | mutt -s "the subject" address1 address2

mutt address < /tmp/datei
mutt -i /tmp/datei address

"-a" - attach file:
mutt -a file address

default setup on empty folder:
mutt -n -F /dev/null -f /dev/null

=== Mailinglisten
verhalten auf listen
subscribe + list-reply
nur neue mails ansehen -> limit ~N
folder-hook -> read_inc anspassen
save-hook - absenderadresse anpassen (roles)

threading
change of subject
thread hijacking: NoNo!
subject tags
"Re:" repair

mutt-ng: break thread (#)
prune+graft

=== Misc
bounce vs forward
index_format anpassen.

mailboxes übersicht.  mutt -y

commandline:
:set prefixTAB
:set foo=TAB
:source

Key Bindings
unbound commands
macros

mailing listen und "roles"
mailen von der kommandozeile
mailen über cron (dont spam!)

internes POP vs fetchmail

IMAP vs POP
offline IMAP - stabil, aber "lahm+trafficsau"

Mailbox vs Maildir

=== filtering
spamassassin
procmail - minimal procmailrc
procmail logfile

M='less +G ~/.LOG/maillog'
MM=maillog
alias maillog="tail -1000 ~/.LOG/maillog | \
\grep -v SPAM | \grep Folder: | \
sed -e 's/^ *Folder: //' \
    -e 's,/var/mail/guckes,INBOX,' \
    -e 's/	[	 ]*\([0-9][0-9]*\)$/\t\t\1/' | \
less -N"

change-folder 3xTAB 
sync-folder statt quit+restart

muttng:
scoring
sidebar
http://www.strcat.de/mutt/Features.muttng 

== compressed mailboxes:
save space - nice idea.
however, many problems.
workaround:  tag old mails,
save to extra mailbox, compress.
uncompress if required.

=== LINKS

http://therandymon.com/content/view/42/79/


Weitere Vorschläge

Eure Ideen hier...
Bitte schickt mir Eure Fragen an mutt_workshop@guckes.net
Ihr könnt sie mir auch per SMS schicken an 0179-3966141.

Peter  Voigt:  Vim im Batch-Mode - als ersatz für sed
Gregor Radtke: "par" examples.