簡體   English   中英

有沒有辦法在emacs啟動時指定自定義初始化文件?

[英]is there a way to specify custom init file on emacs startup?

我已經嘗試過runemacs --user d:\\path\\to\\init\\.emacs但它給出了

Error (initialization): Invalid user name d:\\path\\to\\init\\.emacs

我的意思是自定義位置中的自定義文件,例如我的pendrive等,而不是我在用戶文件夾中的默認位置。 我嘗試為不同的配置創建具有相應init的cmd文件。

我猜你的最終目標是從USB驅動器運行Emacs,你可以隨身攜帶。 有兩種方法可以讓Emacs以不同的init文件啟動:

(1)-q --load方式

這只是為了運行

emacs -q --load path-to-your-init.el

它在沒有任何初始化的情況下啟動Emacs,然后加載path-to-your-init.el

有這種方式:在這種情況下,Emacs並不真正認為el文件是一個init文件,事實上,Emacs根本沒有經過初始化,這意味着跳過了以下的初始化后步驟:

  • 啟用包,即評估(package-initialize)

  • 運行hook after-init-hook ,即評估(run-hooks after-init-hook)

您可能必須在備用init文件中添加初始化后的內容。

此外,如果使用-q選項啟動Emacs,則自定義界面將不允許您保存設置。

(2)HOME方式

使用內容創建my-emacs.bat:

set HOME=%~dp0
C:\path-to-your\Emacs\bin\runemacs.exe --xrm "emacs.Background: light green"

當您單擊該bat文件時,Emacs會創建名為.emacs.d文件夾, .emacs.d不是在您的常用用戶目錄中,而是在bat文件所在的位置。 您可以將自己的init.el放在.emacs.d文件夾中。 使用此Emacs,評估(find-file“〜/ .emacs.d / init.el”)將打開您自己的可移植init.el而不是通常用戶目錄中的init文件。 你可能想要刪除--xrm "emacs.Background: light green"部分,我包括那個,因為我總是忘記哪個是Emacs。

問題:這個Emacs在自己的.emacs.d目錄中有自己的包目錄。 這可能是也可能不是你想要的。 如果要共享包目錄,可以使用Link Shell Extension更改package-user-dir或創建指向要共享包目錄的符號鏈接。

在USB驅動器上運行Emacs時需要考慮的事項:

Emacs將其部分功能外包給外部工具。 Grepping和比較外包給grep和diff,所以你可能已經在你的系統上安裝了至少GnuWin32 Grep和GnuWin32 DiffUtils。 拼寫檢查的一部分外包給aspell,這也是一個單獨的安裝。 加密外包給GPG,所以Gpg4Win另外另外安裝。 為了讓您的便攜式Emacs具備所有這些功能,所有這些外部工具也應該在您的USB驅動器上。 幸運的是,GnuWin32和aspell都是便攜式的。 我不知道GPG是不是。 如果你設法制作只依賴於eshell自己的grep的lgrep和rgrep的版本,那么對外部grep的依賴可能會被消除,但似乎沒有人做過它,所以制作這樣的lgrep / rgrep是大膽地去到沒有人去過的地方。

您可以通過在命令行上鍵入emacs --help來獲取有關所有emacs選項的幫助。 該幫助顯示--user期望用戶的名稱,而不是elisp文件的路徑。

要在啟動時加載lisp文件,可以使用--load選項:

$ emacs --help
...
--load, -l FILE         load Emacs Lisp FILE using the load function
...

如果要阻止加載默認的init文件,可以使用此選項:

$ emacs --help
...
--no-init-file, -q          load neither ~/.emacs nor default.el
...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM