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