2013-06-17 18 views
16

Tôi đã thử runemacs --user d:\path\to\init\.emacs nhưng nó mang lạicó cách nào để chỉ định tệp init tùy chỉnh trên khởi động emacs không?

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

Ý tôi là tập tin tùy chỉnh ở vị trí tùy chỉnh như ngày, vv pendrive của tôi và không có trong vị trí mặc định của tôi trong thư mục người dùng. Tôi cố gắng tạo ra một tập tin cmd với các tương ứng với các cấu hình khác nhau.

+1

'Tên người dùng không hợp lệ' sẽ đưa ra gợi ý! – devnull

Trả lời

23

Tôi đoán rằng mục tiêu cuối cùng của bạn là chạy Emacs từ ổ USB mà bạn có thể mang theo. Có hai cách để có Emacs bắt đầu với một tập tin init khác nhau:

(1) cách -q --load

này chỉ đơn giản là để chạy

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

mà bắt đầu Emacs không bất kỳ khởi tạo nào, sau đó tải path-to-your-init.el

Gotchas theo cách này: trong trường hợp này, Emacs không thực sự coi tệp el là tệp init, trên thực tế, Emacs đã không đi thông qua khởi tạo, có nghĩa là các bước sau khởi sau bị bỏ qua:

  • gói cho phép, có nghĩa là, đánh giá (package-initialize)

  • chạy móc after-init-hook, có nghĩa là, đánh giá (run-hooks after-init-hook)

Bạn có thể phải thêm công cụ sau khi khởi tạo trong tệp init thay thế của bạn.

Ngoài ra, Giao diện tùy chỉnh sẽ không cho phép bạn lưu cài đặt nếu Emac bắt đầu bằng tùy chọn -q.

(2) cách CHỦ

Tạo my-emacs.bat với nội dung:

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

Khi bạn bấm vào đó file bat, Emacs tạo thư mục có tên .emacs.d không sử dụng thông thường của bạn thư mục, nhưng ở nơi tệp dơi là. Bạn có thể đặt init.el của riêng mình trong thư mục .emacs.d đó. Với Emacs này, việc đánh giá (find-file "~/.emacs.d/init.el") sẽ mở khóa di động của bạn init.el và không phải là tệp init trong thư mục người dùng thông thường của bạn.Bạn có thể muốn xóa phần --xrm "emacs.Background: light green", tôi bao gồm điều đó vì tôi luôn quên Emacs nào.

Gotchas: Emacs này có thư mục gói riêng trong thư mục .emacs.d riêng của mình. Điều đó có thể hoặc không thể là những gì bạn muốn. Nếu bạn muốn chia sẻ thư mục gói, bạn có thể thay đổi package-user-dir hoặc tạo một liên kết tượng trưng đến thư mục gói được chia sẻ bằng cách sử dụng phần mở rộng liên kết vỏ.

Somethings để xem xét cho chạy Emacs trên một ổ đĩa USB:

Emacs outsources một số tính năng của nó với các công cụ bên ngoài. Tham lam và so sánh được thuê ngoài để grep và khác biệt, vì vậy bạn có thể đã cài đặt ít nhất GnuWin32 Grep và GnuWin32 DiffUtils trên hệ thống của bạn. Và một phần của kiểm tra chính tả được thuê ngoài để aspell, đó cũng là một cài đặt riêng biệt. Mã hóa được thuê ngoài để GPG, do đó, Gpg4Win cài đặt riêng biệt khác. Đối với các Emacs di động của bạn để có tất cả các tính năng đó, tất cả những công cụ bên ngoài đó cũng phải có trên ổ USB của bạn. May mắn thay, GnuWin32 và aspell là di động thân thiện. Tôi không biết nếu GPG là. Sự phụ thuộc vào grep bên ngoài có thể được loại bỏ nếu bạn quản lý để tạo ra các phiên bản của lgrep và rgrep chỉ phụ thuộc vào grep của riêng eshell, nhưng có vẻ như không ai làm điều đó, do đó, làm cho lgrep/rgrep đó là mạnh dạn đi nơi không có người đã đi trước .

7

Bạn có thể nhận trợ giúp về tất cả các tùy chọn emacs bằng cách nhập emacs --help trên dòng lệnh. Trợ giúp đó cho thấy rằng --user mong đợi tên của người dùng chứ không phải đường dẫn đến tệp elisp.

Để tải một file lisp lúc khởi động bạn có thể sử dụng --load tùy chọn:

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

Nếu bạn muốn ngăn chặn tập tin init mặc định của bạn từ tải, bạn có thể sử dụng tùy chọn này:

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