使用Emacs發(fā)送電子郵件和檢查日歷
在 2020 年用開源實(shí)現(xiàn)更高生產(chǎn)力的二十種方式的第十八篇文章中,使用 Emacs 文本編輯器管理電子郵件和查看日程安排。
去年,我給你們帶來了 2019 年的 19 天新生產(chǎn)力工具系列。今年,我將采取一種不同的方式:建立一個新的環(huán)境,讓你使用已用或未用的工具來在新的一年里變得更有效率。
使用 Emacs 做(幾乎)所有的事情,第 1 部分
兩天前,我曾經(jīng)說過我經(jīng)常使用 Vim 和 Emacs,在本系列的 16 和 17 天,我講解了如何在 Vim 中做幾乎所有的事情?,F(xiàn)在,Emacs 的時間到了!
Emacs 中的郵件和日歷
在深入之前,我需要說明兩件事。首先,我這里使用默認(rèn)的 Emacs 配置,而不是我之前寫過的 Spacemacs。為什么呢?因?yàn)檫@樣一來我使用的就是默認(rèn)快捷鍵,從而使你可以參考文檔,而不必將“原生的 Emacs” 轉(zhuǎn)換為 Spacemacs。第二,在本系列文章中我沒有對 Org 模式進(jìn)行任何設(shè)置。Org 模式本身幾乎可以自成一個完整的系列,它非常強(qiáng)大,但是設(shè)置可能非常復(fù)雜。
配置 Emacs
配置 Emacs 比配置 Vim 稍微復(fù)雜一些,但以我之見,從長遠(yuǎn)來看,這樣做是值得的。首先我們創(chuàng)建一個配置文件,并在 Emacs 中打開它:
mkdir ~/.emacs.demacs ~/.emacs.d/init.el
接下來,向內(nèi)置的包管理器添加一些額外的包源。在 init.el 中添加以下內(nèi)容:
(package-initialize)(add-to-list 'package-archives '("melpa" . "<http://melpa.org/packages/>"))(add-to-list 'package-archives '("org" . "<http://orgmode.org/elpa/>") t)(add-to-list 'package-archives '("gnu" . "<https://elpa.gnu.org/packages/>"))(package-refresh-contents)
使用 Ctrl+x Ctrl+s 保存文件,然后按下 Ctrl+x Ctrl+c 退出,再重啟 Emacs。Emacs 會在啟動時下載所有的插件包列表,之后你就可以使用內(nèi)置的包管理器安裝插件了。輸入 Meta+x 會彈出命令提示符(大多數(shù)鍵盤上 Meta 鍵就是的 Alt 鍵,而在 MacOS 上則是 Option)。在命令提示符下輸入 package-list-packages 就會顯示可以安裝的包列表。遍歷該列表并使用 i 鍵選擇以下包:
bbdbbbdb-vcardcalfwcalfw-icalnotmuch
選好軟件包后按 x 安裝它們。根據(jù)你的網(wǎng)絡(luò)連接情況,這可能需要一段時間。你也許會看到一些編譯錯誤,但是可以忽略它們。安裝完成后,使用組合鍵 Ctrl+x Ctrl+f 打開 ~/.emacs.d/init.el,并在 (package-refresh-packages) 之后、 (custom-set-variables 之前添加以下行到文件中。 (custom-set-variables 行由 Emacs 內(nèi)部維護(hù),你永遠(yuǎn)不應(yīng)該修改它之后的任何內(nèi)容。以 ;; 開頭的行則是注釋。
;; Set up bbdb(require 'bbdb)(bbdb-initialize 'message)(bbdb-insinuate-message)(add-hook 'message-setup-hook 'bbdb-insinuate-mail);; set up calendar(require 'calfw)(require 'calfw-ical);; Set this to the URL of your calendar. Google users will use;; the Secret Address in iCalendar Format from the calendar settings(cfw:open-ical-calendar "<https://path/to/my/ics/file.ics>");; Set up notmuch(require 'notmuch);; set up mail sending using sendmail(setq send-mail-function (quote sendmail-send-it))(setq user-mail-address "[myemail@mydomain.com][9]"user-full-name "My Name")
現(xiàn)在,你已經(jīng)準(zhǔn)備好使用自己的配置啟動 Emacs 了!保存 init.el 文件(Ctrl+x Ctrl+s),退出 Emacs(Ctrl+x Ctrl+c),然后重啟之。這次重啟要多花些時間。
使用 Notmuch 在 Emacs 中讀寫電子郵件
一旦你看到了 Emacs 啟動屏幕,你就可以使用 Notmuch 來閱讀電子郵件了。鍵入 Meta+x notmuch,你將看到 notmuch 的 Emacs 界面。
使用 notmuch 閱讀郵件
所有加粗的項(xiàng)目都是指向電子郵件視圖的鏈接。你可以通過點(diǎn)擊鼠標(biāo)或者使用 tab 鍵在它們之間跳轉(zhuǎn)并按回車來訪問它們。你可以使用搜索欄來搜索 Notmuch 的數(shù)據(jù)庫,語法與 Notmuch 命令行上的語法 相同。如果你愿意,還可以使用 [save] 按鈕保存搜索以便未來使用,這些搜索會被添加到屏幕頂部的列表中。如果你進(jìn)入一個鏈接就會看到一個相關(guān)電子郵件的列表。你可以使用箭頭鍵在列表中導(dǎo)航,并在要讀取的消息上按回車。按 r 可以回復(fù)一條消息,f 轉(zhuǎn)發(fā)該消息,q 退出當(dāng)前屏幕。
你可以通過鍵入 Meta+x compose-mail 來編寫新消息。撰寫、回復(fù)和轉(zhuǎn)發(fā)都將打開編寫郵件的界面。寫完郵件后,按 Ctrl+c Ctrl+c 發(fā)送。如果你決定不發(fā)送它,按 Ctrl+c Ctrl+k 關(guān)閉消息撰寫緩沖區(qū)(窗口)。
使用 BBDB 在 Emacs 中自動補(bǔ)完電子郵件地址
在消息中使用 BBDB 地址
那么通訊錄怎么辦?這就是 BBDB 發(fā)揮作用的地方。但首先我們需要從 abook 導(dǎo)入所有地址,方法是打開命令行并運(yùn)行以下導(dǎo)出命令:
abook --convert --outformat vcard --outfile ~/all-my-addresses.vcf --infile ~/.abook/addresses
Emacs 啟動后,運(yùn)行 Meta+x bbdb-vcard-import-file。它將提示你輸入要導(dǎo)入的文件名,即 ~/all-my-address.vcf。導(dǎo)入完成后,在編寫消息時,可以開始輸入名稱并使用 Tab 搜索和自動完成 “to” 字段的內(nèi)容。BBDB 還會打開一個聯(lián)系人緩沖區(qū),以便你確保它是正確的。
既然在 vdirsyncer 中已經(jīng)為每個地址都生成了對應(yīng)的 .vcf 文件了,為什么我們還要這樣做呢?如果你像我一樣,有許多地址,一次處理一個地址是很麻煩的。這樣做,你就可以把所有的東西都放在 abook 里,做成一個大文件。
使用 calfw 在 Emacs 中瀏覽日歷
calfw 日歷
最后,你可以使用 Emacs 查看日歷。在上面的配置中,你安裝了 calfw 包,并添加了一些行來告訴它在哪里可以找到要加載的日歷。Calfw 是 “Emacs 日歷框架”的簡稱,它支持多種日歷格式。我使用的是谷歌日歷,這也是我放在配置中的鏈接。日歷將在啟動時自動加載,你可以通過 Ctrl+x+b 命令切換到 cfw-calendar 緩沖區(qū)來查看日歷。
Calfw 提供日、周、雙周和月視圖。你可以在日歷頂部選擇視圖,并使用箭頭鍵導(dǎo)航日歷。不幸的是,calfw 只能查看日歷,所以你仍然需要使用 khal 之類的工具或通過 web 界面來添加、刪除和修改事件。
這就是 Emacs 中的郵件、日歷和郵件地址。明天我會展示更多。



















 
 
 




 
 
 
 