隨身攜帶你的神器——Emacs

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

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

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

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

我們?nèi)绻梢宰孍macs脫離系統(tǒng)定義的HOME目錄位置材义,從一個預(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作為啟動文件攘乒,并 .emacs.d
    目錄管理Emacs的各種配置文件贤牛。

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

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

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

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

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

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

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

從這個加載順序,可以看到璧榄,修改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è)置龙亲,我們可以寫一些小代碼陕凹,動態(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文件中。并將這個文件存放到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ù)制到一個U盤中吧,你會發(fā)現(xiàn)無論在那一臺計算機(jī)上呀洲,你的Emacs都可以一如既往為你提供統(tǒng)一的文本編輯功能啦紊选!

3.2 總結(jié)

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

我可以安心的去喝一杯可樂,等待備份復(fù)制進(jìn)程跑完舶替,我的Emacs就會滿血復(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)先級順序舔庶。 ?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市陈醒,隨后出現(xiàn)的幾起案子惕橙,更是在濱河造成了極大的恐慌,老刑警劉巖钉跷,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件弥鹦,死亡現(xiàn)場離奇詭異,居然都是意外死亡爷辙,警方通過查閱死者的電腦和手機(jī)彬坏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來膝晾,“玉大人栓始,你說我怎么就攤上這事⊙保” “怎么了幻赚?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長臊旭。 經(jīng)常有香客問我落恼,道長,這世上最難降的妖魔是什么离熏? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任佳谦,我火速辦了婚禮,結(jié)果婚禮上撤奸,老公的妹妹穿的比我還像新娘吠昭。我一直安慰自己喊括,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布矢棚。 她就那樣靜靜地躺著郑什,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蒲肋。 梳的紋絲不亂的頭發(fā)上蘑拯,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天兜蠕,我揣著相機(jī)與錄音盛霎,去河邊找鬼。 笑死十籍,一個胖子當(dāng)著我的面吹牛孔轴,可吹牛的內(nèi)容都是我干的剃法。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼路鹰,長吁一口氣:“原來是場噩夢啊……” “哼贷洲!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起晋柱,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤优构,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后雁竞,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體钦椭,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年碑诉,在試婚紗的時候發(fā)現(xiàn)自己被綠了彪腔。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡联贩,死狀恐怖漫仆,靈堂內(nèi)的尸體忽然破棺而出捎拯,到底是詐尸還是另有隱情泪幌,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布署照,位于F島的核電站祸泪,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏建芙。R本人自食惡果不足惜没隘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望禁荸。 院中可真熱鬧右蒲,春花似錦阀湿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至间坐,卻和暖如春灾挨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背竹宋。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工劳澄, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蜈七。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓秒拔,卻偏偏與公主長得像,于是被迫代替她去往敵國和親飒硅。 傳聞我的和親對象是個殘疾皇子溯警,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容