2010-04-01 2 views
6

Я хотел бы просмотреть текущие различия в исходных файлах я работаю с командой, как:Можно ли отправить содержимое Vim с помощью HTML

vim <(svn diff -dub) 

То, что я бы очень хотел быть в состоянии сделать это, чтобы отправить по электронной почте эту раскрашенную разницу. Я знаю, что vim может экспортировать HTML с помощью: TOhtml, но как я могу конвейертировать этот вывод в html-адрес электронной почты? Идеально. я хотел бы иметь возможность отправить html diff с помощью одной команды сценария оболочки.

ответ

10

Следующая один вкладыш создает файл HTML с именем email.html:

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

Теперь вы можете использовать код Пекка для отправки по электронной почте.

Однако, я верю в использование правильного инструмента для правильной работы - и VIM может быть не лучшим инструментом здесь. Существуют другие маркеры, и их использование здесь более уместно.

Например, Pygments могут быть использованы гораздо более эффективно производить тот же результат, и без проблем:

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

Обратите внимание, что это производит только фактический текст тела, а не таблицы стилей, ни окружающий HTML-эшафот. Это нужно добавить отдельно, но это не сложно. Вот полный Баш скрипт для получения действительного минимального 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 В случае, если код Пекка не работал - а для меня - потому что у вас нет необходимых версий mail и mutt установлен, то вы можете использовать sendmail следующим образом отправить HTML электронной почты:

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

Очень важно, чтобы оставить пустую строку между заголовком и телом сообщения электронной почты. Также обратите внимание, что, конечно, не нужно создавать временный файл email.html. Просто вставьте остальные команды в нужное место выше и удалите перенаправления в файл.

+0

у вас есть интересное определение «более эффективно и без проблем». +1 для получения vim для записи и выхода из командной строки. – rampion

+0

вы можете изменить «+ w email.html» на '+%! Mutt' или что угодно, чтобы vim вызывал команду mail напрямую – rampion

+0

@rampion: запуск Vim таким образом на самом деле довольно неэффективен. Пигменты легко превзошли его.Без проблем я просто имею в виду, что рабочий поток Pyigs концептуально проще («синтаксис - выделить diff», в отличие от «открыть diff в редакторе, запустить команду, закрыть редактор»), даже если это больше текста для написать. Думаю, оба метода имеют свои достоинства. –

1

Я не Linux гуру, но это выглядит, как он должен служить вашим потребностям в трубе ваш выход в:

Send an HTML file as email from the command line. (использует mail)

Там также одна линия mutt пример here:

это будет генерировать чистый HTML-E-Mail без использования чистого текста - для этого вам придется создавать многопользовательскую почту ... Но, возможно, это будет сделано для того, что вам нужно.

+0

Уход за поясничным знаком? Здесь что-то технически неправильно? –

Смежные вопросы