隨身攜帶你的神器——Emacs

  1. Emacs的運(yùn)行方式分析
    ===================

Emacs可以在大多數(shù)目前常見的系統(tǒng)中運(yùn)行,GNU/Linux、FreeBSD、macOS、Windows等都可以。一般來說在
Emacs主頁(yè) 下載對(duì)應(yīng)的版本,在本地展開或安裝后就可以跑起來了。不過聰明的讀者一定發(fā)現(xiàn)了,Emacs需要中用戶的主目錄(系統(tǒng)變量HOME指向的目錄),例如,Windows操作系統(tǒng)中登錄用戶的賬戶目錄(例如C:\Users\ABC),讀取配置文件。如果在這個(gè)目錄中沒有找到配置文件,Emacs也會(huì)自己創(chuàng)建配置文件,用以保存用戶在使用過程中的一些自定義內(nèi)容。

這樣,問題來了,如果我想隨身攜帶Emacs作為寫作工具可行嗎?我不停的在不同的計(jì)算機(jī)上寫東西,我怎么保證我的寫作體驗(yàn)不變呢?難道我需要在每一臺(tái)臨時(shí)使用的計(jì)算機(jī)上安裝Emacs的運(yùn)行環(huán)境(特別是那些擴(kuò)展Package)?那如果遇到了沒有Home目錄的寫入權(quán)限怎么辦?如果依賴了某些特殊的Package版本怎么版?

聽起來,問題似乎非常多。好在,我們現(xiàn)在有一個(gè)大家耳熟能詳?shù)拿~——“綠色軟件”。

我們?nèi)绻梢宰孍macs脫離系統(tǒng)定義的HOME目錄位置,從一個(gè)預(yù)先定義好的位置讀取配置文件,那不就成了可以獨(dú)立運(yùn)行的綠色軟件了嗎?

  1. 讓Emacs綠色運(yùn)行
    ===============

要讓Emacs隨身運(yùn)行,我們需要先來看看Emacs配置文件的存放方法

2.1 Emacs的配置文件

在Windows環(huán)境下,Emacs的配置文件有如下幾種文件保存方法[1]

  1. .emacs 文件。
  2. _emacs 文件。以保證在Dos和FAT文件系統(tǒng)下的向前兼容。
  3. .emacs.d/init.el 使用init.el作為啟動(dòng)文件,并 .emacs.d
    目錄管理Emacs的各種配置文件。

2.2 全面查看Emacs的配置存放方法

從Emacs的手冊(cè)中,我們可以看到Emacs配置文件在Windows操作系統(tǒng)中按以下優(yōu)先級(jí)確定指定配置文件的存放位置[2]

  1. 如果設(shè)置了 HOME 環(huán)境變量,那么直接存放在該環(huán)境變量指定的目錄位置中
  2. 如果設(shè)置了 HKCU\SOFTWARE\GNU\Emacs\HOME
    注冊(cè)表主鍵,那么使用該主鍵指明的目錄位置
  3. 如果設(shè)置了 HKLM\SOFTWARE\GNU\Emacs\HOME
    注冊(cè)表逐漸,那么使用該主鍵指明的目錄位置。由于該目錄位置會(huì)被不同Windows用戶共享使用,因此不推薦使用該鍵值。
  4. 如果 C:\.emacs 存在,則使用 C:/. 存放配置文件。
    這個(gè)設(shè)計(jì)是為了保證前向兼容,在以前的Emacs版本中,如果 HOME
    目錄沒有定義,則使用默認(rèn)的 C:/ 作為HOME目錄。
  5. 使用Windows 用戶的 AppData
    目錄。通常這個(gè)目錄位于用戶profile目錄中。具體位置根據(jù)Windows版本及計(jì)算機(jī)所在的域名的不同而有所變化。

所以,讓Emacs脫離操作系統(tǒng)的限制,以綠色方式運(yùn)行的方法再指定 HOME
環(huán)境變量的內(nèi)容。而且,需要避免對(duì)其他使用HOME環(huán)境變量的程序,如
Vim,的影響(如果你想左右互博的話,:P)。

2.3 找到Emacs代碼設(shè)置HOME環(huán)境變量的地方

Emacs提供了在加載用戶配置文件前進(jìn)行運(yùn)行環(huán)境定義的方法,按照代碼在運(yùn)行時(shí)刻的執(zhí)行優(yōu)先級(jí)
[3] 列舉如下:

  1. site-start.el
  2. init file
  3. default.el

從這個(gè)加載順序,可以看到,修改site-start.el是修改 init
文件讀取位置的好地方。

2.4 確定修改方法

在Emacs中,要設(shè)置環(huán)境變量,可以使用 setenv 函數(shù)來實(shí)現(xiàn)。查看幫助,我們看到函數(shù)定義是:

(setenv VARIABLE &optional VALUE SUBSTITUTE-ENV-VARS)

。所以,我們可以使用這樣的形式來設(shè)置環(huán)境變量:

(setenv "HOME" "path/to/some/directory")

為了讓Emacs脫離特定操作系統(tǒng)的設(shè)置,我們可以寫一些小代碼,動(dòng)態(tài)獲得當(dāng)前Emacs所在的目錄,并將其所在磁盤的根目錄下的home 目錄(名)作為存放配置文件的HOME目錄。

所以我們可以得到完整的代碼。

2.5 Emacs代碼

(defvar PortableHome (substring data-directory 0 3))
(defvar usb-home-dir (concat PortableHome "home/"))
(setenv "HOME" usb-home-dir)
  1. 代碼使用及總結(jié)
    ==============

3.1 代碼使用

將上述代碼存放到site-start.el文件中。并將這個(gè)文件存放到Emacs的site-lisp目錄中。并將你的配置文件放到Emacs所在磁盤根目錄下的home目錄中(按照.emacs、emacs、.emacs.d/init.el三種方式之一),好了,重啟Emacs,你應(yīng)該看到,你的Emacs已經(jīng)按照你的配置運(yùn)行起來啦!

把Emacs相關(guān)文件以及你新創(chuàng)建的Home目錄中的所有內(nèi)容都復(fù)制到一個(gè)U盤中吧,你會(huì)發(fā)現(xiàn)無論在那一臺(tái)計(jì)算機(jī)上,你的Emacs都可以一如既往為你提供統(tǒng)一的文本編輯功能啦!

3.2 總結(jié)

本文描述了讓Emacs脫離特定操作系統(tǒng)的限制(更換操作系統(tǒng)類型時(shí),需要使用對(duì)應(yīng)系統(tǒng)的Emacs可執(zhí)行文件,但配置文件是可以做到統(tǒng)一的)。在U盤中運(yùn)行的一種方法。我使用這種方法,使我的Emacs在從Win7升級(jí)到Win10的過程中,不必重新進(jìn)行任何配置,保持了統(tǒng)一的使用體驗(yàn)。也讓我在解決使用Windows的過程中一定會(huì)遇到的重新安裝系統(tǒng),簡(jiǎn)化了工作環(huán)境初始化的工作量。

我可以安心的去喝一杯可樂,等待備份復(fù)制進(jìn)程跑完,我的Emacs就會(huì)滿血復(fù)活。

你們的Emacs呢?:P

  1. 參考文檔
    =========

  1. https://www.gnu.org/software/emacs/manual/efaq-w32.html#Location-of-init-file ?

  2. https://www.gnu.org/software/emacs/manual/efaq-w32.html#Location-of-init-file ?

  3. 從Emacs的site-run-file變量文檔中看到,不同配置文件的執(zhí)行優(yōu)先級(jí)順序。 ?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容