Discussion:
vim - mailadresse/recipient loeschen
(zu alt für eine Antwort)
Marc Haber
2017-10-21 09:32:53 UTC
Permalink
Hallo,

in vim gibt es ja die wunderbaren modifikatoren "inner" und "outer",
mit denen man super innerhalb von quotes und Klammern ersetzen und
löschen kann.

Gibt es sowas auch für Mailadressen/Recipients in einer Mail, so wie
"delete inner recipient"?

Gewünscht wäre:

To: Empf 1 <***@domain.example>, Empf 2
<***@domain2.example>

Cursor steht auf dem ersten @ oder irgendwo im ersten Empfänger,
"delete inner recipient", und übrig bleibt:

To: Empf 2 <***@domain2.example>

Das ist, sobald Zeilenumbrüche etc ins Spiel kommen, ziemlich
nichttrivial. Hat das schonmal jemand gemacht?

Grüße
Marc
--
-------------------------------------- !! No courtesy copies, please !! -----
Marc Haber | " Questions are the | Mailadresse im Header
Mannheim, Germany | Beginning of Wisdom " | http://www.zugschlus.de/
Nordisch by Nature | Lt. Worf, TNG "Rightful Heir" | Fon: *49 621 72739834
Andreas Kohlbach
2017-10-21 20:26:15 UTC
Permalink
Post by Marc Haber
in vim gibt es ja die wunderbaren modifikatoren "inner" und "outer",
mit denen man super innerhalb von quotes und Klammern ersetzen und
löschen kann.
Gibt es sowas auch für Mailadressen/Recipients in einer Mail, so wie
"delete inner recipient"?
Keine Ahnung. Sieht aber interessant aus, dass ich mich damit mal
beschäftigen sollte. Aber falls sonst niemand helfen kann...
Post by Marc Haber
Das ist, sobald Zeilenumbrüche etc ins Spiel kommen, ziemlich
nichttrivial. Hat das schonmal jemand gemacht?
Wenn immer ich etwas in vim ändern will, auch mit Zeilenumbrüchen, nehme
ich die eingebaute sed Funktion.

:%s/erster/zweiter/
--
Andreas
You know you are a redneck if
someone asks to see your id and you show them your belt buckle.
Christian Schneider
2017-10-21 22:33:49 UTC
Permalink
Post by Marc Haber
in vim gibt es ja die wunderbaren modifikatoren "inner" und "outer",
mit denen man super innerhalb von quotes und Klammern ersetzen und
löschen kann.
Gibt es sowas auch für Mailadressen/Recipients in einer Mail, so wie
"delete inner recipient"?
Das ist, sobald Zeilenumbrüche etc ins Spiel kommen, ziemlich
nichttrivial. Hat das schonmal jemand gemacht?
Wahrscheinlich nicht so wie Du Dir das vorstellst, aber folgendes
funktioniert bei dem Beispiel:

,----
| :map ,e dt:df,J
`----
--
{ \|/ ______ \|/ Access denieded | Christian 'strcat' Schneider }
{ "@' / , . \ `@" Nah Nah Nah :p | http://www.strcat.de/ }
{ /__| \____/ |__\ | http://www.strcat.de/blog/ }
{ \___U__/ | http://strcat.de/chris.gpg }
Peter J. Holzer
2017-10-22 15:02:01 UTC
Permalink
Post by Christian Schneider
Post by Marc Haber
in vim gibt es ja die wunderbaren modifikatoren "inner" und "outer",
mit denen man super innerhalb von quotes und Klammern ersetzen und
löschen kann.
Oh, WWG.
Post by Christian Schneider
Post by Marc Haber
Gibt es sowas auch für Mailadressen/Recipients in einer Mail, so wie
"delete inner recipient"?
Das ist, sobald Zeilenumbrüche etc ins Spiel kommen, ziemlich
nichttrivial. Hat das schonmal jemand gemacht?
Wahrscheinlich nicht so wie Du Dir das vorstellst, aber folgendes
,----
| :map ,e dt:df,J
`----
Das müsste ein T sein, kein t. Funktioniert aber nur dann, wenn Du die
erste Adresse löschen willst (nicht die zweite oder dritte), wenn die
keinen Zeilenumbruch enthält, kein Komma im Displayname, keine Gruppe, ...

Die Syntax von RFC-5322 Adress-Zeilen ist extrem komplex. Selbst wenn Du
so diverse nette Features wie Kommentare innerhalb einer Mail-Adresse,
die niemand verwendet, weglässt, ist das nichts, was sich mit ein paar
einfachen Movement-Kommandos implementieren lässt, und wenn es als
Regexp überhaupt funktioniert, dann wird das ein Monster, das Du einmal
schreiben und nie wieder angreifen willst. TLDR: Sowas schreibt man
lieber in einer richtigen Programmiersprache.

hp
--
_ | Peter J. Holzer | Fluch der elektronischen Textverarbeitung:
|_|_) | | Man feilt solange an seinen Text um, bis
| | | ***@hjp.at | die Satzbestandteile des Satzes nicht mehr
__/ | http://www.hjp.at/ | zusammenpaßt. -- Ralph Babel
Christian Schneider
2017-10-22 15:18:31 UTC
Permalink
[...]
Post by Peter J. Holzer
Post by Christian Schneider
Post by Marc Haber
Gibt es sowas auch für Mailadressen/Recipients in einer Mail, so wie
"delete inner recipient"?
Das ist, sobald Zeilenumbrüche etc ins Spiel kommen, ziemlich
nichttrivial. Hat das schonmal jemand gemacht?
Wahrscheinlich nicht so wie Du Dir das vorstellst, aber folgendes
,----
| :map ,e dt:df,J
`----
Das müsste ein T sein, kein t. Funktioniert aber nur dann, wenn Du die
erste Adresse löschen willst (nicht die zweite oder dritte), wenn die
keinen Zeilenumbruch enthält, kein Komma im Displayname, keine Gruppe, ...
Korrekt. Muss ein T sein; dann funktioniert es bei dem von Marc
genannten Beispiel. Alle möglichen - und unmöglichen - Variationen von
Email-Adressen abzudecken, ist in meinen Augen kaum realisierbar.
Zumindest nicht mit einem Script oder Einzeiler.
--
{ \|/ ______ \|/ Access denieded | Christian 'strcat' Schneider }
{ "@' / , . \ `@" Nah Nah Nah :p | http://www.strcat.de/ }
{ /__| \____/ |__\ | http://www.strcat.de/blog/ }
{ \___U__/ | http://strcat.de/chris.gpg }
Loading...