2010-04-01 21 views
6

chciałbym zobaczyć aktualne różnice w plikach źródłowych ja pracuję z poleceniem:Czy jest możliwe aby wysłać zawartość vim za pomocą HTML

vim <(svn diff -dub) 

Co naprawdę chciałbym być jest w stanie wysłać e-mail z tym kolorowym różnicą. Wiem, że vim może eksportować HTML za pomocą: TOhtml, ale jak mogę potokować to wyjście do e-maila HTML? Idealnie. chciałbym móc wysłać różnicę html za pomocą pojedynczego polecenia skryptu powłoki.

Odpowiedz

10

Poniżej jedna wkładka tworzy plik HTML o nazwie email.html:

diff file1 file2 | vim - +TOhtml '+w email.html' '+qall!' 

można teraz używać kodu Pekka do wysyłania wiadomości e-mail.

Jednak pod numerem wierzę w zastosowanie odpowiedniego narzędzia do właściwej pracy - i VIM może nie być właściwym narzędziem. Inne wyróżniki istnieją, a ich użycie jest bardziej odpowiednie tutaj.

Na przykład Pygments można wykorzystać do produkcji tego samego rezultatu, bardziej efektywnie i bezproblemowy:

diff -u report.log .report.log | pygmentize -l diff -f html > email.html 

Zauważ, że ten produkuje tylko rzeczywista ciała tekst, a nie arkusza stylów, ani otaczające szkielety HTML. To trzeba dodać osobno, ale to też nie jest trudne. Oto pełna skrypt bash przedstawienia ważnego minimalny plik HTML:

echo '<!DOCTYPE html><html><head><title>No title</title><style>' > email.html 
pygmentize -S default -f html >> email.html 
echo '</style></head><body>' >> email.html 
diff -u report.log .report.log | pygmentize -l diff -f html >> email.html 
echo '</body></html>' >> email.html 

EDIT w przypadku, gdy kod Pekka nie wyszło - jak dla mnie - bo nie ma wymaganych wersje mail i mutt zainstalowana, można korzystać sendmail następująco wysłać wiadomość e-mail w formacie HTML:

(echo 'To: [email protected]' 
    echo 'Content-Type: text/html' 
    echo 'Subject: test' 
    echo '' 
    cat email.html) | sendmail -t 

ważne jest, aby pozostawić pustą linię między nagłówka i treści wiadomości. Zauważ też, że utworzenie pliku tymczasowego jest oczywiście niepotrzebne. Po prostu wklej pozostałe polecenia we właściwe miejsce powyżej i usuń przekierowania do pliku.

+0

masz interesującą definicję "bardziej wydajnie i bezproblemowo". +1, w jaki sposób zachęcić vima do pisania i zamykania z poziomu wiersza poleceń. – rampion

+0

można zmienić "+ w email.html" na '+%! Mutt' lub cokolwiek innego, aby vim wywoływał polecenie mail bezpośrednio – rampion

+0

@rampion: Uruchomienie Vima w ten sposób jest dość nieefektywne. Pygments z łatwością go przewyższają.Przez bezproblemowy po prostu mam na myśli to, że przepływ pracy w Pygments jest konceptualnie łatwiejszy ("syntax-highlight diff", w przeciwieństwie do "otwarcia diff w edytorze, uruchomienia polecenia, zamykania edytora"), mimo że jest to więcej tekstu pisać. Obie metody mają swoje zalety, jak sądzę. –

1

nie jestem Linux Guru, ale to wygląda tak, jak powinien służyć potrzebom do rury swoje wyjście do:

Send an HTML file as email from the command line. (używa mail)

Jest też jedna linia mutt przykład here:

mutt -e "my_hdr Content-Type: text/html" 
    -s "my subject" [email protected] < message.html 

to wygeneruje czystą wiadomość e-mail w formacie HTML bez czystej alternatywy tekstowej - do tego trzeba by utworzyć wieloczęściową pocztę ... Ale może zrobi to, czego potrzebujesz.

+0

Dbasz o wyjaśnienie sprawy? Czy jest tu coś technicznie nie tak? –

Powiązane problemy